@@ -3,38 +3,38 @@ import { Database } from './types.override'
3
3
import { Database as DatabasePostgrest13 } from './types.override-with-options-postgrest13'
4
4
import { expectType } from 'tsd'
5
5
import { InvalidMethodError } from '../src/PostgrestFilterBuilder'
6
+ import { Json } from './types.generated'
6
7
7
8
const REST_URL_13 = 'http://localhost:3001'
8
9
const postgrest13 = new PostgrestClient < DatabasePostgrest13 > ( REST_URL_13 )
9
10
const postgrest12 = new PostgrestClient < Database > ( REST_URL_13 )
10
11
11
12
describe ( 'maxAffected' , ( ) => {
12
- // Type checking tests
13
- test ( 'maxAffected should show type warning on postgrest 12 clients' , async ( ) => {
13
+ test ( 'types: maxAffected should show type warning on postgrest 12 clients' , async ( ) => {
14
14
const resUpdate = await postgrest12
15
15
. from ( 'messages' )
16
16
. update ( { channel_id : 2 } )
17
17
. eq ( 'message' , 'foo' )
18
18
. maxAffected ( 1 )
19
19
expectType < InvalidMethodError < 'maxAffected method only available on postgrest 13+' > > ( resUpdate )
20
20
} )
21
- test ( 'maxAffected should show type warning on non update / delete' , async ( ) => {
22
- const resSelect = await postgrest13 . from ( 'messages' ) . select ( '*' ) . maxAffected ( 10 )
23
- const resInsert = await postgrest13
21
+ test ( 'types: maxAffected should show type warning on non update / delete' , async ( ) => {
22
+ const resSelect = postgrest13 . from ( 'messages' ) . select ( '*' ) . maxAffected ( 10 )
23
+ const resInsert = postgrest13
24
24
. from ( 'messages' )
25
25
. insert ( { message : 'foo' , username : 'supabot' , channel_id : 1 } )
26
26
. maxAffected ( 10 )
27
- const resUpsert = await postgrest13
27
+ const resUpsert = postgrest13
28
28
. from ( 'messages' )
29
29
. upsert ( { id : 3 , message : 'foo' , username : 'supabot' , channel_id : 2 } )
30
30
. maxAffected ( 10 )
31
- const resUpdate = await postgrest13
31
+ const resUpdate = postgrest13
32
32
. from ( 'messages' )
33
33
. update ( { channel_id : 2 } )
34
34
. eq ( 'message' , 'foo' )
35
35
. maxAffected ( 1 )
36
36
. select ( )
37
- const resDelete = await postgrest13
37
+ const resDelete = postgrest13
38
38
. from ( 'messages' )
39
39
. delete ( )
40
40
. eq ( 'message' , 'foo' )
@@ -59,7 +59,6 @@ describe('maxAffected', () => {
59
59
)
60
60
} )
61
61
62
- // Runtime behavior tests
63
62
test ( 'update should fail when maxAffected is exceeded' , async ( ) => {
64
63
// First create multiple rows
65
64
await postgrest13 . from ( 'messages' ) . insert ( [
@@ -74,9 +73,13 @@ describe('maxAffected', () => {
74
73
. update ( { message : 'updated' } )
75
74
. eq ( 'message' , 'test1' )
76
75
. maxAffected ( 2 )
76
+
77
77
const { error } = result
78
78
expect ( error ) . toBeDefined ( )
79
79
expect ( error ?. code ) . toBe ( 'PGRST124' )
80
+
81
+ // cleanup
82
+ await postgrest13 . from ( 'messages' ) . delete ( ) . eq ( 'message' , 'test1' )
80
83
} )
81
84
82
85
test ( 'update should succeed when within maxAffected limit' , async ( ) => {
@@ -92,10 +95,22 @@ describe('maxAffected', () => {
92
95
. eq ( 'message' , 'test2' )
93
96
. maxAffected ( 2 )
94
97
. select ( )
95
-
98
+ expectType <
99
+ | {
100
+ channel_id : number
101
+ data : Json | null
102
+ id : number
103
+ message : string | null
104
+ username : string
105
+ } [ ]
106
+ | null
107
+ > ( data )
96
108
expect ( error ) . toBeNull ( )
97
109
expect ( data ) . toHaveLength ( 1 )
98
110
expect ( data ?. [ 0 ] . message ) . toBe ( 'updated' )
111
+
112
+ // cleanup
113
+ await postgrest13 . from ( 'messages' ) . delete ( ) . eq ( 'message' , 'updated' )
99
114
} )
100
115
101
116
test ( 'delete should fail when maxAffected is exceeded' , async ( ) => {
@@ -113,9 +128,11 @@ describe('maxAffected', () => {
113
128
. eq ( 'message' , 'test3' )
114
129
. maxAffected ( 2 )
115
130
. select ( )
116
-
117
131
expect ( error ) . toBeDefined ( )
118
132
expect ( error ?. code ) . toBe ( 'PGRST124' )
133
+
134
+ // cleanup
135
+ await postgrest13 . from ( 'messages' ) . delete ( ) . eq ( 'message' , 'test3' )
119
136
} )
120
137
121
138
test ( 'delete should succeed when within maxAffected limit' , async ( ) => {
@@ -157,6 +174,9 @@ describe('maxAffected', () => {
157
174
catchphrase : null ,
158
175
} ,
159
176
] )
177
+
178
+ // cleanup
179
+ await postgrest13 . from ( 'users' ) . delete ( ) . eq ( 'username' , 'testuser' )
160
180
} )
161
181
162
182
test ( 'should fail when rpc returns more results than maxAffected' , async ( ) => {
@@ -176,5 +196,8 @@ describe('maxAffected', () => {
176
196
expect ( error ) . toBeDefined ( )
177
197
expect ( error ?. code ) . toBe ( 'PGRST124' )
178
198
expect ( data ) . toBeNull ( )
199
+
200
+ // cleanup
201
+ await postgrest13 . from ( 'users' ) . delete ( ) . in ( 'username' , [ 'testuser1' , 'testuser2' , 'testuser3' ] )
179
202
} )
180
203
} )
0 commit comments