Skip to content

Commit 6c4936b

Browse files
avalletesoedirgo
andauthored
chore: rename and add testSequencer (#623)
* chore: rename and add testSequencer * chore: cleanup after new rows --------- Co-authored-by: Bobbie Soedirgo <[email protected]>
1 parent 9f4019c commit 6c4936b

11 files changed

+35
-14
lines changed

jest.config.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,8 @@ module.exports = {
22
preset: 'ts-jest',
33
testEnvironment: 'node',
44
collectCoverageFrom: ['src/**/*', '!src/types.ts'],
5+
// Run tests sequentially to prevent database side effects
6+
maxWorkers: 1,
7+
// Ensure deterministic test order
8+
testSequencer: '<rootDir>/test/testSequencer.js',
59
}

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
"test:types:watch": "run-s build && tsd --files 'test/**/*.test-d.ts' --watch",
4545
"db:clean": "cd test/db && docker compose down --volumes",
4646
"db:run": "cd test/db && docker compose up --detach && wait-for-localhost 3000",
47-
"db:generate-test-types": "cd test/db && docker compose up --detach && wait-for-localhost 8080 && curl --location 'http://0.0.0.0:8080/generators/typescript?included_schemas=public,personal&detect_one_to_one_relationships=true' > ../types.generated.ts && sed -i 's/export type Json = .*/export type Json = unknown;/' ../types.generated.ts"
47+
"db:generate-test-types": "cd test/db && docker compose up --detach && wait-for-localhost 8080 && curl --location 'http://0.0.0.0:8080/generators/typescript?included_schemas=public,personal&detect_one_to_one_relationships=true' > ../types.generated.ts && sed -i '' 's/export type Json = .*/export type Json = unknown;/' ../types.generated.ts"
4848
},
4949
"dependencies": {
5050
"@supabase/node-fetch": "^2.6.14"
File renamed without changes.
File renamed without changes.

test/index.test.ts

Lines changed: 0 additions & 8 deletions
This file was deleted.

test/max-affected.ts renamed to test/max-affected.test.ts

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,22 @@ describe('maxAffected', () => {
1919
expectType<InvalidMethodError<'maxAffected method only available on postgrest 13+'>>(resUpdate)
2020
})
2121
test('types: 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
22+
const resSelect = postgrest13.from('messages').select('*').maxAffected(10)
23+
const resInsert = postgrest13
2424
.from('messages')
2525
.insert({ message: 'foo', username: 'supabot', channel_id: 1 })
2626
.maxAffected(10)
27-
const resUpsert = await postgrest13
27+
const resUpsert = postgrest13
2828
.from('messages')
2929
.upsert({ id: 3, message: 'foo', username: 'supabot', channel_id: 2 })
3030
.maxAffected(10)
31-
const resUpdate = await postgrest13
31+
const resUpdate = postgrest13
3232
.from('messages')
3333
.update({ channel_id: 2 })
3434
.eq('message', 'foo')
3535
.maxAffected(1)
3636
.select()
37-
const resDelete = await postgrest13
37+
const resDelete = postgrest13
3838
.from('messages')
3939
.delete()
4040
.eq('message', 'foo')
@@ -77,6 +77,9 @@ describe('maxAffected', () => {
7777
const { error } = result
7878
expect(error).toBeDefined()
7979
expect(error?.code).toBe('PGRST124')
80+
81+
// cleanup
82+
await postgrest13.from('messages').delete().eq('message', 'test1')
8083
})
8184

8285
test('update should succeed when within maxAffected limit', async () => {
@@ -105,6 +108,9 @@ describe('maxAffected', () => {
105108
expect(error).toBeNull()
106109
expect(data).toHaveLength(1)
107110
expect(data?.[0].message).toBe('updated')
111+
112+
// cleanup
113+
await postgrest13.from('messages').delete().eq('message', 'updated')
108114
})
109115

110116
test('delete should fail when maxAffected is exceeded', async () => {
@@ -124,6 +130,9 @@ describe('maxAffected', () => {
124130
.select()
125131
expect(error).toBeDefined()
126132
expect(error?.code).toBe('PGRST124')
133+
134+
// cleanup
135+
await postgrest13.from('messages').delete().eq('message', 'test3')
127136
})
128137

129138
test('delete should succeed when within maxAffected limit', async () => {
@@ -165,6 +174,9 @@ describe('maxAffected', () => {
165174
catchphrase: null,
166175
},
167176
])
177+
178+
// cleanup
179+
await postgrest13.from('users').delete().eq('username', 'testuser')
168180
})
169181

170182
test('should fail when rpc returns more results than maxAffected', async () => {
@@ -184,5 +196,8 @@ describe('maxAffected', () => {
184196
expect(error).toBeDefined()
185197
expect(error?.code).toBe('PGRST124')
186198
expect(data).toBeNull()
199+
200+
// cleanup
201+
await postgrest13.from('users').delete().in('username', ['testuser1', 'testuser2', 'testuser3'])
187202
})
188203
})
File renamed without changes.
File renamed without changes.
File renamed without changes.

test/testSequencer.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
const Sequencer = require('@jest/test-sequencer').default;
2+
3+
class TestSequencer extends Sequencer {
4+
sort(tests) {
5+
// Sort tests alphabetically by file path for consistent order
6+
return tests.sort((testA, testB) => testA.path.localeCompare(testB.path));
7+
}
8+
}
9+
10+
module.exports = TestSequencer;

0 commit comments

Comments
 (0)