fix: Fix ordering with mutation queries
This commit is contained in:
committed by
Steve Chavez
parent
5ff51de36f
commit
fc35d6d0f8
@@ -149,3 +149,15 @@ spec =
|
||||
{ matchStatus = 204
|
||||
, matchHeaders = [matchHeaderAbsent hContentType]
|
||||
}
|
||||
|
||||
context "with ordering" $
|
||||
it "works with request method DELETE and embedded resource" $ do
|
||||
request methodDelete "/artists?id=lt.3&select=id,name,albums(title)&order=id.desc"
|
||||
[("Prefer", "return=representation")]
|
||||
""
|
||||
`shouldRespondWith`
|
||||
[json| [ {"id":2,"name":"black country, new road","albums":[{"title": "ants from up above"}]}, {"id":1,"name":"duster","albums":[{"title": "stratosphere"},{"title": "contemporary movement"}]}]
|
||||
|]
|
||||
{ matchStatus = 200
|
||||
, matchHeaders = [matchContentTypeJson, "Preference-Applied" <:> "return=representation"]
|
||||
}
|
||||
|
||||
@@ -426,6 +426,20 @@ spec = do
|
||||
, matchHeaders = [matchContentTypeJson, "Preference-Applied" <:> "return=representation"]
|
||||
}
|
||||
|
||||
it "with ordering on top-level resource" $
|
||||
request methodPatch "/no_pk?order=a.desc"
|
||||
[("Prefer", "return=representation")]
|
||||
[json|{ "b": "1" }|]
|
||||
`shouldRespondWith`
|
||||
[json|
|
||||
[ { "a": null, "b": "1" },
|
||||
{ "a": "2", "b": "1" },
|
||||
{ "a": "1", "b": "1" } ]
|
||||
|]
|
||||
{ matchStatus = 200
|
||||
, matchHeaders = [matchContentTypeJson, "Preference-Applied" <:> "return=representation"]
|
||||
}
|
||||
|
||||
it "with filters" $
|
||||
request methodPatch "/web_content?id=eq.0&select=id,name,web_content(name)&web_content.name=like.f*"
|
||||
[("Prefer", "return=representation")]
|
||||
@@ -703,3 +717,16 @@ spec = do
|
||||
request methodPatch "/datarep_todos_computed?id=eq.2001&columns=label_color" [("Prefer", "return=representation")]
|
||||
[json| {"due_at": "2019-01-03T11:00:00Z", "smth": "here", "label_color": "invalid", "fake_id": 13} |]
|
||||
`shouldRespondWith` 200
|
||||
|
||||
context "with ordering" $
|
||||
it "works with request method PATCH and embedded resource" $
|
||||
request methodPatch "/web_content?id=eq.0&select=id,name,web_content(name)&web_content.order=name.asc"
|
||||
[("Prefer", "return=representation")]
|
||||
[json|{"name": "tardis-patched"}|]
|
||||
`shouldRespondWith`
|
||||
[json|
|
||||
[ { "id": 0, "name": "tardis-patched", "web_content": [ { "name": "bar" }, { "name": "fezz" }, { "name": "foo" } ]} ]
|
||||
|]
|
||||
{ matchStatus = 200
|
||||
, matchHeaders = [matchContentTypeJson, "Preference-Applied" <:> "return=representation"]
|
||||
}
|
||||
|
||||
@@ -526,3 +526,27 @@ spec =
|
||||
}
|
||||
get "/UnitTest?idUnitTest=eq.1" `shouldRespondWith`
|
||||
[json| [ { "idUnitTest": 1, "nameUnitTest": "unit test 1" } ]|]
|
||||
|
||||
context "with ordering" $ do
|
||||
it "works with request method PUT and embedded resource" $
|
||||
request methodPut "/web_content?id=eq.0&select=id,name,web_content(name)&web_content.order=name.asc"
|
||||
[("Prefer", "return=representation")]
|
||||
[json|{ "id": 0, "name": "tardis-upserted", "p_web_id": 5 }|]
|
||||
`shouldRespondWith`
|
||||
[json|
|
||||
[ { "id": 0, "name": "tardis-upserted", "web_content": [ { "name": "bar" }, { "name": "fezz" }, { "name": "foo" } ]} ]
|
||||
|]
|
||||
{ matchStatus = 200
|
||||
, matchHeaders = [matchContentTypeJson, "Preference-Applied" <:> "return=representation"]
|
||||
}
|
||||
|
||||
it "works with batch upserts and embedded resource" $
|
||||
request methodPost "/artists?select=id,name,albums(title)&order=id.desc"
|
||||
[("Prefer", "return=representation"), ("Prefer", "resolution=merge-duplicates")]
|
||||
[json| [{ "id": 1, "name": "duster-updated" },
|
||||
{ "id": 2, "name": "bcnr-updated" }] |]
|
||||
`shouldRespondWith`
|
||||
[json| [{"id":2,"name":"bcnr-updated","albums":[{"title": "ants from up above"}]}, {"id":1,"name":"duster-updated","albums":[{"title": "stratosphere"}, {"title": "contemporary movement"}]}] |]
|
||||
{ matchStatus = 200
|
||||
, matchHeaders = [matchContentTypeJson]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user