11import { createSchema , number , string , table , Zero } from '@rocicorp/zero'
22import { assert , describe , expect , it } from 'vitest'
3- import { computed , createApp , inject , ref } from 'vue'
4- import { createZero , zeroSymbol } from './create-zero'
3+ import { computed , ref } from 'vue'
4+ import { createZero } from './create-zero'
55
66const testSchema = createSchema ( {
77 tables : [
@@ -15,41 +15,34 @@ const testSchema = createSchema({
1515} )
1616
1717describe ( 'createZero' , ( ) => {
18- it ( 'installs and provides zero instance to Vue app' , ( ) => {
19- const app = createApp ( { } )
20- app . use ( createZero ( {
18+ it ( 'creates a zero instance' , ( ) => {
19+ const { useZero } = createZero ( {
2120 userID : 'test-user' ,
2221 server : null ,
2322 schema : testSchema ,
2423 kvStore : 'mem' as const ,
25- } ) )
26-
27- app . runWithContext ( ( ) => {
28- const zero = inject ( zeroSymbol )
29- assert ( zero ?. value )
30- expect ( zero ?. value . userID ) . toEqual ( 'test-user' )
3124 } )
25+
26+ const zero = useZero ( )
27+ assert ( zero ?. value )
28+ expect ( zero ?. value . userID ) . toEqual ( 'test-user' )
3229 } )
3330
3431 it ( 'accepts Zero instance instead of options' , ( ) => {
35- const app = createApp ( { } )
3632 const zero = new Zero ( {
3733 userID : 'test-user' ,
3834 server : null ,
3935 schema : testSchema ,
4036 kvStore : 'mem' as const ,
4137 } )
42- app . use ( createZero ( { zero } ) )
38+ const { useZero } = createZero ( { zero } )
4339
44- app . runWithContext ( ( ) => {
45- const injectedZero = inject ( zeroSymbol )
46- assert ( injectedZero ?. value )
47- expect ( injectedZero . value ) . toEqual ( zero )
48- } )
40+ const usedZero = useZero ( )
41+ assert ( usedZero ?. value )
42+ expect ( usedZero . value ) . toEqual ( zero )
4943 } )
5044
5145 it ( 'updates when options change' , async ( ) => {
52- const app = createApp ( { } )
5346 const userID = ref ( 'test-user' )
5447 const zeroOptions = computed ( ( ) => ( {
5548 userID : userID . value ,
@@ -58,27 +51,24 @@ describe('createZero', () => {
5851 kvStore : 'mem' as const ,
5952 } ) )
6053
61- app . use ( createZero ( zeroOptions ) )
54+ const { useZero } = createZero ( zeroOptions )
6255
63- await app . runWithContext ( async ( ) => {
64- const injectedZero = inject ( zeroSymbol )
65- assert ( injectedZero ?. value )
56+ const zero = useZero ( )
57+ assert ( zero ?. value )
6658
67- expect ( injectedZero . value . userID ) . toEqual ( 'test-user' )
59+ expect ( zero . value . userID ) . toEqual ( 'test-user' )
6860
69- const oldZero = injectedZero . value
61+ const oldZero = zero . value
7062
71- userID . value = 'test-user-2'
72- await 1
63+ userID . value = 'test-user-2'
64+ await 1
7365
74- expect ( injectedZero . value . userID ) . toEqual ( 'test-user-2' )
75- expect ( injectedZero . value . closed ) . toBe ( false )
76- expect ( oldZero . closed ) . toBe ( true )
77- } )
66+ expect ( zero . value . userID ) . toEqual ( 'test-user-2' )
67+ expect ( zero . value . closed ) . toBe ( false )
68+ expect ( oldZero . closed ) . toBe ( true )
7869 } )
7970
8071 it ( 'updates when Zero instance changes' , async ( ) => {
81- const app = createApp ( { } )
8272 const userID = ref ( 'test-user' )
8373
8474 const zero = computed ( ( ) => ( { zero : new Zero ( {
@@ -88,22 +78,19 @@ describe('createZero', () => {
8878 kvStore : 'mem' as const ,
8979 } ) } ) )
9080
91- app . use ( createZero ( zero ) )
92-
93- await app . runWithContext ( async ( ) => {
94- const injectedZero = inject ( zeroSymbol )
95- assert ( injectedZero ?. value )
81+ const { useZero } = createZero ( zero )
82+ const usedZero = useZero ( )
83+ assert ( usedZero ?. value )
9684
97- expect ( injectedZero . value . userID ) . toEqual ( 'test-user' )
85+ expect ( usedZero . value . userID ) . toEqual ( 'test-user' )
9886
99- const oldZero = injectedZero . value
87+ const oldZero = usedZero . value
10088
101- userID . value = 'test-user-2'
102- await 1
89+ userID . value = 'test-user-2'
90+ await 1
10391
104- expect ( injectedZero . value . userID ) . toEqual ( 'test-user-2' )
105- expect ( injectedZero . value . closed ) . toBe ( false )
106- expect ( oldZero . closed ) . toBe ( true )
107- } )
92+ expect ( usedZero . value . userID ) . toEqual ( 'test-user-2' )
93+ expect ( usedZero . value . closed ) . toBe ( false )
94+ expect ( oldZero . closed ) . toBe ( true )
10895 } )
10996} )
0 commit comments