git.iko.soy/rowtype-yoga/purescript-yoga-postgres-om
on main help sign in
Add test for update with returning
commit4df80e7bd506f514ca619ca501bea531b7859fd6 authorMark <mark.eibes@gmail.com> dateTue 3 Mar 2026, 14:20 (7 months ago) parent117ab1a
1 file changed+9−16
test/Test/SchemaQ.purs+9−16
test/Test/SchemaQ.purs+9−16
@@ -50,10 +50,8 @@ spec = describe "Query builder" do
5050 rows `shouldEqual` [ { name: "Bob" }, { name: "Carol" } ]
5151
5252 it "inserts a row and returns specific columns" $ withUsersTable do
53− row <- into usersTable # insert { name: "Alice", email: "a@t.com", role: "admin" } # returning @"id, name" # runOne {}
54− r <- shouldBeJust row
55− r.name `shouldEqual` "Alice"
56− (r.id > 0) `shouldEqual` true
53+ rows <- into usersTable # insert { name: "Alice", email: "a@t.com", role: "admin" } # returning @"name" # run {}
54+ rows `shouldEqual` [ { name: "Alice" } ]
5755
5856 it "inserts a row with default created_at and updated_at" $ withUsersTable do
5957 row <- into usersTable # insert { name: "Alice", email: "a@t.com", role: "admin" } # returning @"created_at, updated_at" # runOne {}
@@ -61,13 +59,10 @@ spec = describe "Query builder" do
6159 r.created_at `shouldEqual` r.updated_at
6260
6361 it "deletes with a condition and returns the deleted rows" $ withUsersTable do
64− let insertUser u = into usersTable # insert u # exec {}
65− insertUser { name: "Alice", email: "a@t.com", role: "admin" }
66− insertUser { name: "Bob", email: "b@t.com", role: "user" }
62+ _ <- into usersTable # insert { name: "Alice", email: "a@t.com", role: "admin" } # exec {}
63+ _ <- into usersTable # insert { name: "Bob", email: "b@t.com", role: "user" } # exec {}
6764 rows <- from usersTable # delete # where_ @"role = $role" # returning @"name" # run { role: "admin" }
68− Array.length rows `shouldEqual` 1
69− r <- Array.head rows # shouldBeJust
70− r.name `shouldEqual` "Alice"
65+ rows `shouldEqual` [ { name: "Alice" } ]
7166
7267 it "updates a row with SET and WHERE" $ withUsersTable do
7368 _ <- into usersTable # insert { name: "Alice", email: "a@t.com", role: "admin" } # exec {}
@@ -79,15 +74,13 @@ spec = describe "Query builder" do
7974 it "updates multiple columns" $ withUsersTable do
8075 _ <- into usersTable # insert { name: "Alice", email: "a@t.com", role: "admin" } # exec {}
8176 _ <- update usersTable # set { name: "Alicia", role: "mod" } # where_ @"email = $email" # exec { email: "a@t.com" }
82− row <- from usersTable # select @"name, role" # runOne {}
83− r <- shouldBeJust row
84− r `shouldEqual` { name: "Alicia", role: "mod" }
77+ rows <- from usersTable # select @"name, role" # run {}
78+ rows `shouldEqual` [ { name: "Alicia", role: "mod" } ]
8579
8680 it "updates and returns the modified row" $ withUsersTable do
8781 _ <- into usersTable # insert { name: "Alice", email: "a@t.com", role: "admin" } # exec {}
88− row <- update usersTable # set { role: "mod" } # where_ @"email = $email" # returning @"name, role" # runOne { email: "a@t.com" }
89− r <- shouldBeJust row
90− r `shouldEqual` { name: "Alice", role: "mod" }
82+ rows <- update usersTable # set { role: "mod" } # where_ @"email = $email" # returning @"name, role" # run { email: "a@t.com" }
83+ rows `shouldEqual` [ { name: "Alice", role: "mod" } ]
9184
9285 it "combines two queries with UNION" $ withUsersTable do
9386 _ <- into usersTable # insert { name: "Alice", email: "a@t.com", role: "admin" } # exec {}