1+ namespace NpgsqlRestTests ;
2+
3+ public static partial class Database
4+ {
5+ public static void ReturnTableTypeTests ( )
6+ {
7+ script . Append ( @"
8+
9+ create table test_return_table(
10+ id int generated always as identity primary key,
11+ value text,
12+ value2 text
13+ );
14+
15+ insert into test_return_table
16+ (value, value2) values('test1', 'test2'),
17+ ('test3', 'test4');
18+
19+ create function test_return_table_record()
20+ returns test_return_table
21+ language sql as 'select * from test_return_table where id = 1';
22+
23+ create function test_return_all_table_records()
24+ returns setof test_return_table
25+ language sql as 'select * from test_return_table';
26+
27+ create or replace function test_return_mixed_table_records()
28+ returns table (
29+ value1 text,
30+ value2 test_return_table
31+ )
32+ language sql as
33+ $$
34+ select
35+ 'test1',
36+ row(t.*)::test_return_table
37+ from
38+ test_return_table t;
39+ $$;
40+
41+ create or replace function test_return_mixed_table_records_2()
42+ returns table (
43+ value1 test_return_table,
44+ value2 text
45+ )
46+ language sql as
47+ $$
48+ select
49+ row(t.*)::test_return_table,
50+ 'test1'
51+ from
52+ test_return_table t;
53+ $$;
54+ " ) ;
55+ }
56+ }
57+
58+ [ Collection ( "TestFixture" ) ]
59+ public class ReturnTableTypeTests ( TestFixture test )
60+ {
61+ [ Fact ]
62+ public async Task Test_test_return_table_record ( )
63+ {
64+ using var response = await test . Client . PostAsync ( $ "/api/test-return-table-record", null ) ;
65+ var content = await response . Content . ReadAsStringAsync ( ) ;
66+
67+ response ? . StatusCode . Should ( ) . Be ( HttpStatusCode . OK ) ;
68+ response ? . Content . Headers . ContentType ? . MediaType . Should ( ) . Be ( "application/json" ) ;
69+ content . Should ( ) . Be ( "{\" id\" :1,\" value\" :\" test1\" ,\" value2\" :\" test2\" }" ) ;
70+ }
71+
72+ [ Fact ]
73+ public async Task Test_test_return_all_table_records ( )
74+ {
75+ using var response = await test . Client . PostAsync ( $ "/api/test-return-all-table-records", null ) ;
76+ var content = await response . Content . ReadAsStringAsync ( ) ;
77+
78+ response ? . StatusCode . Should ( ) . Be ( HttpStatusCode . OK ) ;
79+ response ? . Content . Headers . ContentType ? . MediaType . Should ( ) . Be ( "application/json" ) ;
80+ content . Should ( ) . Be ( "[{\" id\" :1,\" value\" :\" test1\" ,\" value2\" :\" test2\" },{\" id\" :2,\" value\" :\" test3\" ,\" value2\" :\" test4\" }]" ) ;
81+ }
82+
83+ [ Fact ]
84+ public async Task Test_test_return_mixed_table_records ( )
85+ {
86+ using var response = await test . Client . PostAsync ( $ "/api/test-return-mixed-table-records", null ) ;
87+ var content = await response . Content . ReadAsStringAsync ( ) ;
88+
89+ response ? . StatusCode . Should ( ) . Be ( HttpStatusCode . OK ) ;
90+ response ? . Content . Headers . ContentType ? . MediaType . Should ( ) . Be ( "application/json" ) ;
91+ content . Should ( ) . Be ( "[{\" value1\" :\" test1\" ,\" id\" :1,\" value\" :\" test1\" ,\" value2\" :\" test2\" },{\" value1\" :\" test1\" ,\" id\" :2,\" value\" :\" test3\" ,\" value2\" :\" test4\" }]" ) ;
92+ }
93+
94+ [ Fact ]
95+ public async Task Test_test_return_mixed_table_records_2 ( )
96+ {
97+ using var response = await test . Client . PostAsync ( $ "/api/test-return-mixed-table-records-2", null ) ;
98+ var content = await response . Content . ReadAsStringAsync ( ) ;
99+
100+ response ? . StatusCode . Should ( ) . Be ( HttpStatusCode . OK ) ;
101+ response ? . Content . Headers . ContentType ? . MediaType . Should ( ) . Be ( "application/json" ) ;
102+ content . Should ( ) . Be ( "[{\" id\" :1,\" value\" :\" test1\" ,\" value2\" :\" test2\" ,\" value2\" :\" test1\" },{\" id\" :2,\" value\" :\" test3\" ,\" value2\" :\" test4\" ,\" value2\" :\" test1\" }]" ) ;
103+ }
104+ }
0 commit comments