55 WASQLiteOpenFactory ,
66 WASQLitePowerSyncDatabaseOpenFactory
77} from '@powersync/web' ;
8- import { afterAll , beforeAll , describe , expect , it , vi } from 'vitest' ;
8+ import { afterEach , beforeEach , describe , expect , it , vi } from 'vitest' ;
99import { testSchema } from './utils/testDb' ;
1010
1111const testId = '2290de4f-0488-4e50-abed-f8e8eb1d0b42' ;
@@ -17,9 +17,9 @@ export const basicTest = async (db: AbstractPowerSyncDatabase) => {
1717 await db . close ( ) ;
1818} ;
1919
20- describe ( 'Open Methods' , ( ) => {
21- let originalSharedWorker : typeof SharedWorker ;
22- let originalWorker : typeof Worker ;
20+ const proxyWorkers = ( ) => {
21+ const originalSharedWorker = SharedWorker ;
22+ const originalWorker = Worker ;
2323
2424 const sharedWorkerProxyHandler = {
2525 construct ( target : typeof SharedWorker , args : any [ ] ) {
@@ -40,23 +40,30 @@ describe('Open Methods', () => {
4040 }
4141 } ;
4242
43- beforeAll ( ( ) => {
44- // Store the original SharedWorker constructor
45- originalSharedWorker = SharedWorker ;
46- originalWorker = Worker ;
43+ window . SharedWorker = new Proxy ( SharedWorker , sharedWorkerProxyHandler ) ;
44+ window . Worker = new Proxy ( Worker , workerProxyHandler ) ;
45+
46+ return {
47+ proxies : {
48+ sharedWorkerProxyHandler,
49+ workerProxyHandler
50+ } ,
51+ dispose : ( ) => {
52+ window . SharedWorker = originalSharedWorker ;
53+ window . Worker = originalWorker ;
54+ }
55+ } ;
56+ } ;
4757
48- // Create a proxy to intercept the worker constructors
49- // The vi.SpyOn does not work well with constructors
50- window . SharedWorker = new Proxy ( SharedWorker , sharedWorkerProxyHandler ) ;
51- window . Worker = new Proxy ( Worker , workerProxyHandler ) ;
52- } ) ;
58+ describe ( 'Open Methods' , ( ) => {
59+ let mocks : ReturnType < typeof proxyWorkers > ;
5360
54- afterAll ( ( ) => {
55- // Restore Worker
56- window . SharedWorker = originalSharedWorker ;
57- window . Worker = originalWorker ;
61+ beforeEach ( ( ) => {
62+ mocks = proxyWorkers ( ) ;
5863 } ) ;
5964
65+ afterEach ( ( ) => mocks ?. dispose ( ) ) ;
66+
6067 it ( 'Should open PowerSync clients from old factory methods' , async ( ) => {
6168 const db = new WASQLitePowerSyncDatabaseOpenFactory ( {
6269 dbFilename : `test-legacy.db` ,
@@ -87,7 +94,7 @@ describe('Open Methods', () => {
8794 } ) ;
8895
8996 it ( 'Should use shared worker for multiple tabs' , async ( ) => {
90- const sharedSpy = vi . spyOn ( sharedWorkerProxyHandler , 'construct' ) ;
97+ const sharedSpy = vi . spyOn ( mocks . proxies . sharedWorkerProxyHandler , 'construct' ) ;
9198
9299 const db = new PowerSyncDatabase ( { database : { dbFilename : 'options-test.db' } , schema : testSchema } ) ;
93100
@@ -97,8 +104,8 @@ describe('Open Methods', () => {
97104 } ) ;
98105
99106 it ( 'Should use dedicated worker when multiple tabs disabled' , async ( ) => {
100- const sharedSpy = vi . spyOn ( sharedWorkerProxyHandler , 'construct' ) ;
101- const dedicatedSpy = vi . spyOn ( workerProxyHandler , 'construct' ) ;
107+ const sharedSpy = vi . spyOn ( mocks . proxies . sharedWorkerProxyHandler , 'construct' ) ;
108+ const dedicatedSpy = vi . spyOn ( mocks . proxies . workerProxyHandler , 'construct' ) ;
102109
103110 const db = new PowerSyncDatabase ( {
104111 database : { dbFilename : 'options-test.db' } ,
@@ -113,8 +120,8 @@ describe('Open Methods', () => {
113120 } ) ;
114121
115122 it ( 'Should not use workers when specified' , async ( ) => {
116- const sharedSpy = vi . spyOn ( sharedWorkerProxyHandler , 'construct' ) ;
117- const dedicatedSpy = vi . spyOn ( workerProxyHandler , 'construct' ) ;
123+ const sharedSpy = vi . spyOn ( mocks . proxies . sharedWorkerProxyHandler , 'construct' ) ;
124+ const dedicatedSpy = vi . spyOn ( mocks . proxies . workerProxyHandler , 'construct' ) ;
118125
119126 const db = new PowerSyncDatabase ( {
120127 database : { dbFilename : 'options-test.db' } ,
0 commit comments