diff --git a/test/Feature/QuerySpec.hs b/test/Feature/QuerySpec.hs index 5d31804cb..1c90101d1 100644 --- a/test/Feature/QuerySpec.hs +++ b/test/Feature/QuerySpec.hs @@ -553,6 +553,18 @@ spec = do [json|"Hello, ¥"|] { matchHeaders = [matchContentTypeJson] } + it "returns array" $ + post "/rpc/ret_array" [json|{}|] `shouldRespondWith` + [json|[1, 2, 3]|] + { matchHeaders = [matchContentTypeJson] } + + it "returns setof integers" $ + post "/rpc/ret_setof_integers" [json|{}|] `shouldRespondWith` + [json|[{ "ret_setof_integers": 1 }, + { "ret_setof_integers": 2 }, + { "ret_setof_integers": 3 }]|] + { matchHeaders = [matchContentTypeJson] } + it "returns enum value" $ post "/rpc/ret_enum" [json|{ "val": "foo" }|] `shouldRespondWith` [json|"foo"|] diff --git a/test/fixtures/schema.sql b/test/fixtures/schema.sql index f29b8db21..ec9539b80 100755 --- a/test/fixtures/schema.sql +++ b/test/fixtures/schema.sql @@ -1124,6 +1124,10 @@ $$ language sql; create domain one_nine as integer check (value >= 1 and value <= 9); +create function test.ret_array() returns integer[] as $$ + select '{1,2,3}'::integer[]; +$$ language sql; + create function test.ret_domain(val integer) returns test.one_nine as $$ select val::test.one_nine; $$ language sql; @@ -1132,6 +1136,10 @@ create function test.ret_range(low integer, up integer) returns int4range as $$ select int4range(low, up); $$ language sql; +create function test.ret_setof_integers() returns setof integer as $$ + values (1), (2), (3); +$$ language sql; + create function test.ret_scalars() returns table( a text, b test.enum_menagerie_type, c test.one_nine, d int4range ) as $$