forked from factor/factor
-
Notifications
You must be signed in to change notification settings - Fork 3
/
postgresql-tests.factor
110 lines (96 loc) · 2.68 KB
/
postgresql-tests.factor
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
USING: accessors alien continuations db db.errors db.queries db.postgresql
db.private db.tester db.tuples db.types io classes kernel math namespaces
prettyprint sequences system tools.test unicode.case ;
IN: db.postgresql.tests
: nonexistant-db ( -- db )
<postgresql-db>
"localhost" >>host
"fake-user" >>username
"no-pass" >>password
"dont-exist" >>database ;
! Don't leak connections
[ ] [
2000 [ [ nonexistant-db [ ] with-db ] ignore-errors ] times
] unit-test
! Ensure the test database exists
postgresql-template1-db [
postgresql-test-db-name ensure-database
] with-db
! Triggers a two line error message (ERROR + DETAIL) because two
! connections can't simultaneously use the template1 database.
[
postgresql-template1-db [
postgresql-template1-db [
"will_never_exist" ensure-database
] with-db
] with-db
] [ sql-unknown-error? ] must-fail-with
[ ] [
postgresql-test-db [
[ "drop table person;" sql-command ] ignore-errors
"create table person (name varchar(30), country varchar(30));"
sql-command
"insert into person values('John', 'America');" sql-command
"insert into person values('Jane', 'New Zealand');" sql-command
] with-db
] unit-test
[
{
{ "John" "America" }
{ "Jane" "New Zealand" }
}
] [
postgresql-test-db [
"select * from person" sql-query
] with-db
] unit-test
[
{
{ "John" "America" }
{ "Jane" "New Zealand" }
}
] [ postgresql-test-db [ "select * from person" sql-query ] with-db ] unit-test
[
] [
postgresql-test-db [
"insert into person(name, country) values('Jimmy', 'Canada')"
sql-command
] with-db
] unit-test
[
{
{ "John" "America" }
{ "Jane" "New Zealand" }
{ "Jimmy" "Canada" }
}
] [ postgresql-test-db [ "select * from person" sql-query ] with-db ] unit-test
[
postgresql-test-db [
[
"insert into person(name, country) values('Jose', 'Mexico')" sql-command
"insert into person(name, country) values('Jose', 'Mexico')" sql-command
"oops" throw
] with-transaction
] with-db
] must-fail
[ 3 ] [
postgresql-test-db [
"select * from person" sql-query length
] with-db
] unit-test
[
] [
postgresql-test-db [
[
"insert into person(name, country) values('Jose', 'Mexico')"
sql-command
"insert into person(name, country) values('Jose', 'Mexico')"
sql-command
] with-transaction
] with-db
] unit-test
[ 5 ] [
postgresql-test-db [
"select * from person" sql-query length
] with-db
] unit-test