@@ -2,7 +2,7 @@ import { expect } from 'chai';
22import { stub } from 'sinon' ;
33
44import {
5- combineResolvers , and , or , compose , Composable
5+ combineResolvers , and , or , compose , composable
66} from '../../dist/helper' ;
77import { createResolver } from '../../dist/resolver' ;
88import { resolveAll } from 'jspm-config' ;
@@ -190,7 +190,7 @@ describe('(unit) src/helper.js', () => {
190190
191191 stub ( b , 'resolve' , b . resolve ) ;
192192
193- const base = new Composable ( b . resolve , b . error ) ;
193+ const base = composable ( b . resolve , b . error ) ;
194194 const comp = base . compose ( {
195195 r1 : ( ) => true ,
196196 r2 : ( ) => true ,
@@ -232,7 +232,7 @@ describe('(unit) src/helper.js', () => {
232232 stub ( b , 'error' , b . error ) ;
233233 stub ( r1 , 'error' , r1 . error ) ;
234234
235- const base = new Composable ( b . resolve , b . error ) ;
235+ const base = composable ( b . resolve , b . error ) ;
236236 const comp = base . compose ( { r1 : r1 } ) ;
237237
238238 comp . r1 ( )
@@ -245,7 +245,6 @@ describe('(unit) src/helper.js', () => {
245245 } ) ;
246246
247247 it ( 'when child throws, parent error is called ' , ( ) => {
248-
249248 const b = {
250249 resolve : null ,
251250 error : d => null
@@ -259,7 +258,7 @@ describe('(unit) src/helper.js', () => {
259258 stub ( b , 'error' , b . error ) ;
260259 stub ( r1 , 'error' , r1 . error ) ;
261260
262- const base = new Composable ( b . resolve , b . error ) ;
261+ const base = composable ( b . resolve , b . error ) ;
263262 const comp = base . compose ( { r1 : r1 } ) ;
264263
265264 comp . r1 ( )
@@ -270,5 +269,69 @@ describe('(unit) src/helper.js', () => {
270269 } ) ;
271270 } ) ;
272271
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+
273336 } ) ;
274337} ) ;
0 commit comments