-
-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathSetofRecordTests.cs
More file actions
74 lines (68 loc) · 1.8 KB
/
Copy pathSetofRecordTests.cs
File metadata and controls
74 lines (68 loc) · 1.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
namespace NpgsqlRestTests;
public static partial class Database
{
public static void SetofRecordTests()
{
script.Append("""""
create function get_test_records()
returns setof record
language sql
as
$$
select * from (
values
(1, true, 'one'),
(2, false, 'two'),
(3, null, 'three'),
(null, true, 'foo,bar'),
(null, null, 'foo"bar'),
(null, null, null),
(1, null, 't'),
(1, true, null),
(null, null, '"foo"bar"'),
(null, null, 'foo""bar'),
(null, null, 'foo""""bar'),
(null, null, 'foo"",""bar'),
(null, null, 'foo\bar'),
(null, null, 'foo/bar'),
(null, null, E'foo\nbar')
) v;
$$;
""""");
}
}
[Collection("TestFixture")]
public class SetofRecordTests(TestFixture test)
{
[Fact]
public async Task Test_get_test_records()
{
using var response = await test.Client.GetAsync("/api/get-test-records");
var content = await response.Content.ReadAsStringAsync();
response?.StatusCode.Should().Be(HttpStatusCode.OK);
response?.Content?.Headers?.ContentType?.MediaType.Should().Be("application/json");
var expextedContent = """
[
["1","t","one"],
["2","f","two"],
["3",null,"three"],
[null,"t","foo,bar"],
[null,null,"foo\"bar"],
[null,null,null],
["1",null,"t"],
["1","t",null],
[null,null,"\"foo\"bar\""],
[null,null,"foo\"\"bar"],
[null,null,"foo\"\"\"\"bar"],
[null,null,"foo\"\",\"\"bar"],
[null,null,"foo\\bar"],
[null,null,"foo/bar"],
[null,null,"foo\nbar"]
]
"""
.Replace(" ", "")
.Replace("\r", "")
.Replace("\n", "");
content.Should().Be(expextedContent);
}
}