@@ -2,7 +2,7 @@ import { expect } from 'chai';
2
2
import { stub } from 'sinon' ;
3
3
4
4
import {
5
- combineResolvers , and , or , compose , Composable
5
+ combineResolvers , and , or , compose , composable
6
6
} from '../../dist/helper' ;
7
7
import { createResolver } from '../../dist/resolver' ;
8
8
import { resolveAll } from 'jspm-config' ;
@@ -190,7 +190,7 @@ describe('(unit) src/helper.js', () => {
190
190
191
191
stub ( b , 'resolve' , b . resolve ) ;
192
192
193
- const base = new Composable ( b . resolve , b . error ) ;
193
+ const base = composable ( b . resolve , b . error ) ;
194
194
const comp = base . compose ( {
195
195
r1 : ( ) => true ,
196
196
r2 : ( ) => true ,
@@ -232,7 +232,7 @@ describe('(unit) src/helper.js', () => {
232
232
stub ( b , 'error' , b . error ) ;
233
233
stub ( r1 , 'error' , r1 . error ) ;
234
234
235
- const base = new Composable ( b . resolve , b . error ) ;
235
+ const base = composable ( b . resolve , b . error ) ;
236
236
const comp = base . compose ( { r1 : r1 } ) ;
237
237
238
238
comp . r1 ( )
@@ -245,7 +245,6 @@ describe('(unit) src/helper.js', () => {
245
245
} ) ;
246
246
247
247
it ( 'when child throws, parent error is called ' , ( ) => {
248
-
249
248
const b = {
250
249
resolve : null ,
251
250
error : d => null
@@ -259,7 +258,7 @@ describe('(unit) src/helper.js', () => {
259
258
stub ( b , 'error' , b . error ) ;
260
259
stub ( r1 , 'error' , r1 . error ) ;
261
260
262
- const base = new Composable ( b . resolve , b . error ) ;
261
+ const base = composable ( b . resolve , b . error ) ;
263
262
const comp = base . compose ( { r1 : r1 } ) ;
264
263
265
264
comp . r1 ( )
@@ -270,5 +269,69 @@ describe('(unit) src/helper.js', () => {
270
269
} ) ;
271
270
} ) ;
272
271
272
+ it ( 'composed resolvers with { resolve: resFn, error: resFn } syntax, resolve and bubble errors correctly' , ( ) => {
273
+
274
+ const b = {
275
+ resolve : ( ) => { } ,
276
+ error : d => compositionErr
277
+ } ;
278
+
279
+ const r1 = {
280
+ resolve : ( ) => { throw Error ( 'some other error' ) } ,
281
+ error : ( ) => compositionErr } ;
282
+
283
+ const r2 = { resolve : ( ) => 'r2Result' , error : ( ) => compositionErr } ;
284
+
285
+ stub ( b , 'resolve' , b . resolve ) ;
286
+ stub ( r1 , 'error' , r1 . error ) ;
287
+ stub ( r1 , 'resolve' , r1 . resolve ) ;
288
+ stub ( r2 , 'resolve' , r2 . resolve ) ;
289
+ stub ( r2 , 'error' , r2 . error ) ;
290
+
291
+ const base = composable ( b . resolve , b . error ) ;
292
+ const comp = base . compose ( {
293
+ r1 : r1 ,
294
+ r2 : r2 ,
295
+ } ) ;
296
+
297
+ return Promise . all ( [
298
+ comp . r1 ( ) . catch ( e => {
299
+ expect ( e ) . to . equal ( compositionErr ) ;
300
+ } ) ,
301
+ comp . r2 ( ) . then ( r => {
302
+ expect ( r ) . to . equal ( 'r2Result' ) ;
303
+ } ) ,
304
+
305
+ ] ) . then ( ( ) => {
306
+ expect ( r1 . resolve . calledOnce ) . to . be . true ;
307
+ expect ( r1 . error . calledOnce ) . to . be . true ;
308
+ expect ( r2 . resolve . calledOnce ) . to . be . true ;
309
+ expect ( r2 . error . notCalled ) . to . be . true ;
310
+ } ) ;
311
+ } ) ;
312
+
313
+ it ( 'composed result has correct structure' , ( ) => {
314
+
315
+ const b = {
316
+ resolve : ( ) => { } ,
317
+ error : d => compositionErr
318
+ } ;
319
+
320
+ stub ( b , 'resolve' , b . resolve ) ;
321
+
322
+ const base = composable ( b . resolve , b . error ) ;
323
+ const comp = base . compose ( {
324
+ r1 : { resolve : ( ) => { throw Error ( 'some other error' ) } , error : ( ) => compositionErr } ,
325
+ r2 : { resolve : ( ) => 'r2Result' , error : ( ) => compositionErr } ,
326
+ r3 : { } // should this throw an exception since it is not a resolver or createResolver params?
327
+ } ) ;
328
+
329
+ console . log ( typeof Function ) ;
330
+ expect ( comp . r1 ) . to . be . a ( typeof Function ) ;
331
+ expect ( comp . r2 ) . to . be . a ( typeof Function ) ;
332
+ expect ( comp . r3 ) . to . be . a ( typeof Function ) ;
333
+
334
+ } ) ;
335
+
273
336
} ) ;
274
337
} ) ;
0 commit comments