diff --git a/core/lib/pseudopattern_hunter.js b/core/lib/pseudopattern_hunter.js index 2b799f2f3..d695b4f0e 100644 --- a/core/lib/pseudopattern_hunter.js +++ b/core/lib/pseudopattern_hunter.js @@ -51,6 +51,8 @@ var pseudopattern_hunter = function () { extendedTemplate: currentPattern.extendedTemplate, isPseudoPattern: true, basePattern: currentPattern, + stylePartials: currentPattern.stylePartials, + parameteredPartials: currentPattern.parameteredPartials, // use the same template engine as the non-variant engine: currentPattern.engine diff --git a/test/files/_patterns/00-test/474-pseudomodifier.mustache b/test/files/_patterns/00-test/474-pseudomodifier.mustache new file mode 100644 index 000000000..3ddc86ae6 --- /dev/null +++ b/test/files/_patterns/00-test/474-pseudomodifier.mustache @@ -0,0 +1,2 @@ +{{test}} +{{> test-styled-atom:modifier--foo }} diff --git a/test/files/_patterns/00-test/474-pseudomodifier~test.json b/test/files/_patterns/00-test/474-pseudomodifier~test.json new file mode 100644 index 000000000..6138ad655 --- /dev/null +++ b/test/files/_patterns/00-test/474-pseudomodifier~test.json @@ -0,0 +1,3 @@ +{ + "test" : "pseudo" +} diff --git a/test/pseudopattern_hunter_tests.js b/test/pseudopattern_hunter_tests.js index dd2d4c4c2..dd9b922ce 100644 --- a/test/pseudopattern_hunter_tests.js +++ b/test/pseudopattern_hunter_tests.js @@ -5,29 +5,35 @@ var pha = require('../core/lib/pseudopattern_hunter'); var pa = require('../core/lib/pattern_assembler'); var Pattern = require('../core/lib/object_factory').Pattern; +var fs = require('fs-extra'); +var pattern_assembler = new pa(); +var pseudopattern_hunter = new pha(); +var patterns_dir = './test/files/_patterns/'; + +function stubPatternlab() { + var pl = {}; + pl.config = { + paths: { + source: { + patterns: patterns_dir + } + } + }; + pl.data = {}; + pl.data.link = {}; + pl.config.debug = false; + pl.patterns = []; + pl.partials = {}; + pl.config.patternStates = {}; + pl.config.outputFileSuffixes = { rendered: ''} + + return pl; +} + exports['pseudopattern_hunter'] = { 'pseudpattern found and added as a pattern' : function (test) { //arrange - var fs = require('fs-extra'); - var pattern_assembler = new pa(); - var pseudopattern_hunter = new pha(); - var patterns_dir = './test/files/_patterns/'; - - var pl = {}; - pl.config = { - paths: { - source: { - patterns: patterns_dir - } - } - }; - pl.data = {}; - pl.data.link = {}; - pl.config.debug = false; - pl.patterns = []; - pl.partials = {}; - pl.config.patternStates = {}; - pl.config.outputFileSuffixes = { rendered: ''} + var pl = stubPatternlab(); var atomPattern = new Pattern('00-test/03-styled-atom.mustache'); atomPattern.template = fs.readFileSync(patterns_dir + '00-test/03-styled-atom.mustache', 'utf8'); @@ -47,6 +53,36 @@ exports['pseudopattern_hunter'] = { test.equals(JSON.stringify(pl.patterns[1].jsonFileData), JSON.stringify({"message": "alternateMessage"})); test.equals(pl.patterns[1].patternLink, '00-test-03-styled-atom-alt' + path.sep + '00-test-03-styled-atom-alt.html'); + test.done(); + }, + + 'pseudpattern variant includes stylePartials and parameteredPartials' : function (test) { + //arrange + var pl = stubPatternlab(); + + var atomPattern = new Pattern('00-test/03-styled-atom.mustache'); + atomPattern.template = fs.readFileSync(patterns_dir + '00-test/03-styled-atom.mustache', 'utf8'); + atomPattern.extendedTemplate = atomPattern.template; + atomPattern.stylePartials = atomPattern.findPartialsWithStyleModifiers(atomPattern); + atomPattern.parameteredPartials = atomPattern.findPartialsWithPatternParameters(atomPattern); + + var pseudoPattern = new Pattern('00-test/474-pseudomodifier.mustache'); + pseudoPattern.template = fs.readFileSync(patterns_dir + '00-test/474-pseudomodifier.mustache', 'utf8'); + pseudoPattern.extendedTemplate = atomPattern.template; + pseudoPattern.stylePartials = pseudoPattern.findPartialsWithStyleModifiers(pseudoPattern); + pseudoPattern.parameteredPartials = pseudoPattern.findPartialsWithPatternParameters(pseudoPattern); + + pattern_assembler.addPattern(atomPattern, pl); + pattern_assembler.addPattern(pseudoPattern, pl); + + //act + pseudopattern_hunter.find_pseudopatterns(pseudoPattern, pl); + + //assert + test.equals(pl.patterns[2].patternPartial, 'test-pseudomodifier-test'); + test.equals(pl.patterns[2].stylePartials, pseudoPattern.stylePartials); + test.equals(pl.patterns[2].parameteredPartials, pseudoPattern.parameteredPartials); + test.done(); } };