From 16b5aab358e02fe4e07760402d9c964147bd1770 Mon Sep 17 00:00:00 2001 From: Alexey Yaroshevich Date: Sat, 22 Oct 2016 04:29:32 +0300 Subject: [PATCH] tests(deps-resolver): add case for modifier, #203 --- test/unit/deps-resolver.test.js | 66 +++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 test/unit/deps-resolver.test.js diff --git a/test/unit/deps-resolver.test.js b/test/unit/deps-resolver.test.js new file mode 100644 index 0000000..098a1ee --- /dev/null +++ b/test/unit/deps-resolver.test.js @@ -0,0 +1,66 @@ +var DepsResolver = require('../../lib/deps/deps-resolver'), + mock = require('mock-fs'); + +describe('libs: deps-resolver', function () { + after(function () { + mock.restore(); + }); + + it('must resolve mod required ordered block. issue#203', function () { + return createGraph({ + x: { + mustDeps: { mod: 'must-mod' }, + shouldDeps: { mod: 'should-mod' } + } + }) + .dependenciesOf({ block: 'x' }) + .must.eventually.equal([ + { block: 'x', mod: 'must-mod' }, + { block: 'x' }, + { block: 'x', mod: 'should-mod' } + ]); + }); + + it('must resolve elem that required ordered block', function () { + return createGraph({ + x: { + mustDeps: { elem: 'must-elem' }, + shouldDeps: { elem: 'should-elem' } + } + }) + .dependenciesOf({ block: 'x' }) + .must.eventually.equal([ + { block: 'x', elem: 'must-elem' }, + { block: 'x' }, + { block: 'x', elem: 'should-elem' } + ]); + }); +}); + +function createGraph(entitiesData) { + var files = Object.keys(entitiesData).reduce(function (res, k) { + res[k + '.deps.js'] = '(' + JSON.stringify(entitiesData[k]) + ')'; + return res; + }, {}); + mock(files); + + var resolver = new DepsResolver({ + getBlockFiles: function (b, m, v) { + var name = b + (m ? '_' + m : '') + (v ? '_' + v : '') + '.deps.js'; + return files[name] ? [{ name: name, fullname: name, suffix: 'deps.js' }] : []; + }, + getElemFiles: function (b, e, m, v) { + var name = b + '__' + e + (m ? '_' + m : '') + (v ? '_' + v : '') + '.deps.js'; + return files[name] ? [{ name: name, fullname: name, suffix: 'deps.js' }] : []; + } + }); + + return { + dependenciesOf: function (decl) { + decl = resolver.normalizeDeps(decl); + return resolver.addDecls(decl).then(function () { + return resolver.resolve(); + }); + } + }; +}