diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2023-09-23 20:35:57 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2023-09-23 20:35:57 -0300 |
commit | f3d98f5ea63db7f7b2155e7efb0812f025c5bcf3 (patch) | |
tree | 0c98d998b42da9f1f6f57a5fc49c93635bd8a1bc /test/unit/data/composite | |
parent | 8bcae16b391762f6b533654ec06c3bf0c8770d35 (diff) |
data, test: collate update description from composition inputs
Diffstat (limited to 'test/unit/data/composite')
-rw-r--r-- | test/unit/data/composite/compositeFrom.js | 52 |
1 files changed, 50 insertions, 2 deletions
diff --git a/test/unit/data/composite/compositeFrom.js b/test/unit/data/composite/compositeFrom.js index faeef59a..6ae1e7bc 100644 --- a/test/unit/data/composite/compositeFrom.js +++ b/test/unit/data/composite/compositeFrom.js @@ -172,7 +172,7 @@ t.test(`compositeFrom: dependencies from inputs`, t => { }); t.test(`compositeFrom: update from various sources`, t => { - t.plan(2); + t.plan(3); const match = { flags: {update: true, expose: true, compose: false}, @@ -232,6 +232,54 @@ t.test(`compositeFrom: update from various sources`, t => { }); t.match(composite, match); - t.equal(debugComposite(() => composite.expose.transform('foo')), 'Xx_foofoo_xX'); + t.equal(composite.expose.transform('foo'), 'Xx_foofoo_xX'); + }); + + t.test(`compositeFrom: update from inputs`, t => { + t.plan(3); + + const composite = compositeFrom({ + inputs: { + myInput: input.updateValue({ + validate: isString, + default: 'foo', + }), + }, + + steps: [ + { + dependencies: [input('myInput')], + compute: (continuation, { + [input('myInput')]: value, + }) => continuation({ + '#value': `Xx_${value.repeat(2)}_xX`, + }), + }, + + { + dependencies: ['#value'], + transform: (_value, continuation, {'#value': value}) => + continuation(value), + }, + ], + }); + + let continuationValue = null; + const continuation = value => { + continuationValue = value; + return continuationSymbol; + }; + + t.match(composite, { + ...match, + + flags: {update: true, expose: true, compose: true}, + }); + + t.equal( + composite.expose.transform('foo', continuation), + continuationSymbol); + + t.equal(continuationValue, 'Xx_foofoo_xX'); }); }); |