@@ -22,19 +22,24 @@ describe("v.event", () => {
2222 await next ( ) ;
2323 } ) ;
2424
25- const result = await signUp . publish ( "emailOpt" , {
25+ const [ result , complete ] = await signUp . publish ( "emailOpt" , {
2626 id : "1" ,
2727 email : "ada@example.com" ,
2828 } ) ;
29- expect ( result ) . toEqual ( { id : "1" , email : "patched@example.com" } ) ;
29+ await expect ( complete ( ) ) . resolves . toEqual ( {
30+ id : "1" ,
31+ email : "patched@example.com" ,
32+ } ) ;
33+ expect ( result ) . toEqual ( { id : "1" , email : "ada@example.com" } ) ;
3034 expect ( seen ) . toEqual ( [ "emailOpt" ] ) ;
3135
3236 unsubscribe ( ) ;
33- await signUp . publish ( "email" , {
37+ const [ , completeEmail ] = await signUp . publish ( "email" , {
3438 id : "2" ,
3539 name : "Ada" ,
3640 email : "ada@example.com" ,
3741 } ) ;
42+ await completeEmail ( ) ;
3843 expect ( seen ) . toEqual ( [ "emailOpt" ] ) ;
3944 } ) ;
4045
@@ -48,7 +53,12 @@ describe("v.event", () => {
4853 expect ( ( ) => ( bus as any ) . publish ( "pong" , { n : 1 } ) ) . toThrow (
4954 / u n k n o w n e v e n t k i n d / ,
5055 ) ;
51- expect ( bus . publish ( "ping" , { n : 1 } ) ) . toEqual ( { n : 1 } ) ;
56+ const [ result , complete ] = bus . publish ( "ping" , { n : 1 } ) as [
57+ { n : number } ,
58+ ( ) => Promise < { n : number } > ,
59+ ] ;
60+ expect ( result ) . toEqual ( { n : 1 } ) ;
61+ return expect ( complete ( ) ) . resolves . toEqual ( { n : 1 } ) ;
5262 } ) ;
5363
5464 it ( "skips the chain when next is not called (veto)" , async ( ) => {
@@ -67,7 +77,8 @@ describe("v.event", () => {
6777 order . push ( "inner" ) ;
6878 await next ( ) ;
6979 } ) ;
70- const result = await bus . publish ( "x" , { v : 1 } ) ;
80+ const [ result , complete ] = await bus . publish ( "x" , { v : 1 } ) ;
81+ await expect ( complete ( ) ) . resolves . toEqual ( { v : 1 } ) ;
7182 expect ( result ) . toEqual ( { v : 1 } ) ;
7283 expect ( order ) . toEqual ( [ "outer" , "veto" ] ) ;
7384 } ) ;
@@ -87,8 +98,9 @@ describe("v.event", () => {
8798 order . push ( "inner" ) ;
8899 await next ( { v : 2 } ) ;
89100 } ) ;
90- const result = await bus . publish ( "x" , { v : 1 } ) ;
91- expect ( result ) . toEqual ( { v : 2 } ) ;
101+ const [ result , complete ] = await bus . publish ( "x" , { v : 1 } ) ;
102+ await expect ( complete ( ) ) . resolves . toEqual ( { v : 2 } ) ;
103+ expect ( result ) . toEqual ( { v : 1 } ) ;
92104 expect ( order ) . toEqual ( [ "outer" , "inner" ] ) ;
93105 } ) ;
94106
@@ -99,7 +111,8 @@ describe("v.event", () => {
99111 bus . subscribe ( async ( _e , next ) => {
100112 await next ( { v : "nope" } as never ) ;
101113 } ) ;
102- await expect ( bus . publish ( "x" , { v : 1 } ) ) . rejects . toThrow ( / e x p e c t e d n u m b e r / ) ;
114+ const [ , complete ] = await bus . publish ( "x" , { v : 1 } ) ;
115+ await expect ( complete ( ) ) . rejects . toThrow ( / e x p e c t e d n u m b e r / ) ;
103116 } ) ;
104117
105118 it ( "does not re-transform untouched fields on next() patches" , async ( ) => {
@@ -119,8 +132,9 @@ describe("v.event", () => {
119132 expect ( e . data . a ) . toBe ( "hi!" ) ;
120133 await next ( { b : 2 } ) ;
121134 } ) ;
122- const result = await bus . publish ( "x" , { a : "hi" , b : 1 } ) ;
123- expect ( result ) . toEqual ( { a : "hi!" , b : 2 } ) ;
135+ const [ result , complete ] = await bus . publish ( "x" , { a : "hi" , b : 1 } ) ;
136+ await expect ( complete ( ) ) . resolves . toEqual ( { a : "hi!" , b : 2 } ) ;
137+ expect ( result ) . toEqual ( { a : "hi!" , b : 1 } ) ;
124138 expect ( transforms ) . toBe ( 1 ) ;
125139 } ) ;
126140} ) ;
@@ -157,13 +171,21 @@ describe("event extension + modules", () => {
157171 // Mounting a fn that uses the module registers event listeners.
158172 v . fn ( "evt_mod.app" , { use : [ core , hooks ] } , ( ) => "ok" ) ;
159173
160- const fromEmail = await signUp . publish ( "email" , {
174+ const [ fromEmail , completeEmail ] = await signUp . publish ( "email" , {
175+ id : "1" ,
176+ email : "a@b.co" ,
177+ } ) ;
178+ await expect ( completeEmail ( ) ) . resolves . toEqual ( {
161179 id : "1" ,
162180 email : "a@b.co" ,
163181 } ) ;
164182 expect ( fromEmail ) . toEqual ( { id : "1" , email : "a@b.co" } ) ;
165183
166- const fromOauth = await withOauth . publish ( "oauth" , {
184+ const [ fromOauth , completeOauth ] = await withOauth . publish ( "oauth" , {
185+ provider : "github" ,
186+ id : "42" ,
187+ } ) ;
188+ await expect ( completeOauth ( ) ) . resolves . toEqual ( {
167189 provider : "github" ,
168190 id : "42" ,
169191 } ) ;
@@ -206,7 +228,9 @@ describe("event extension + modules", () => {
206228 await next ( ) ;
207229 } ) ;
208230 const f = v . fn ( { use : [ { bus } ] } , async ( c ) => {
209- return c . bus . publish ( "ping" , { n : 7 } ) ;
231+ const [ result , complete ] = await c . bus . publish ( "ping" , { n : 7 } ) ;
232+ await complete ( ) ;
233+ return result ;
210234 } ) ;
211235 await expect ( f ( ) ) . resolves . toEqual ( { n : 7 } ) ;
212236 expect ( seen ) . toEqual ( [ 7 ] ) ;
@@ -228,10 +252,12 @@ describe("event extension + modules", () => {
228252 } ) ;
229253
230254 const f = v . fn ( { use : [ { bus, account, withTag } ] } , async ( c ) => {
231- const result = c . bus . publish ( "created" , { id : "1" , tag : "vip" } ) ;
232- expectTypeOf ( result ) . toEqualTypeOf <
233- { id : string ; tag : string } | Promise < { id : string ; tag : string } >
234- > ( ) ;
255+ const [ result , complete ] = await c . bus . publish ( "created" , {
256+ id : "1" ,
257+ tag : "vip" ,
258+ } ) ;
259+ expectTypeOf ( result ) . toEqualTypeOf < { id : string ; tag : string } > ( ) ;
260+ await complete ( ) ;
235261 return result ;
236262 } ) ;
237263 await expect ( f ( ) ) . resolves . toEqual ( { id : "1" , tag : "vip" } ) ;
@@ -251,10 +277,9 @@ describe("event extension + modules", () => {
251277 } ) ;
252278 const bus = v . event ( "evt_var_bare_bus" , { created : account } ) ;
253279 const f = v . fn ( { use : [ { bus, account } ] } , async ( c ) => {
254- const result = c . bus . publish ( "created" , { id : "1" } ) ;
255- expectTypeOf ( result ) . toEqualTypeOf <
256- { id : string } | Promise < { id : string } >
257- > ( ) ;
280+ const [ result , complete ] = await c . bus . publish ( "created" , { id : "1" } ) ;
281+ expectTypeOf ( result ) . toEqualTypeOf < { id : string } > ( ) ;
282+ await complete ( ) ;
258283 return result ;
259284 } ) ;
260285 await expect ( f ( ) ) . resolves . toEqual ( { id : "1" } ) ;
@@ -269,9 +294,11 @@ describe("event extension + modules", () => {
269294 created : { account } ,
270295 } ) ;
271296 const f = v . fn ( { use : [ { bus, account, withTag } ] } , async ( c ) => {
272- return c . bus . publish ( "created" , {
297+ const [ result , complete ] = await c . bus . publish ( "created" , {
273298 account : { id : "2" , tag : "gold" } ,
274299 } ) ;
300+ await complete ( ) ;
301+ return result ;
275302 } ) ;
276303 await expect ( f ( ) ) . resolves . toEqual ( {
277304 account : { id : "2" , tag : "gold" } ,
0 commit comments