diff --git a/core/lib/pattern_assembler.js b/core/lib/pattern_assembler.js
index f88861628..fa95d96ad 100644
--- a/core/lib/pattern_assembler.js
+++ b/core/lib/pattern_assembler.js
@@ -429,7 +429,6 @@ var pattern_assembler = function () {
//create a copy of the partial so as to not pollute it after the getPartial call.
var partialPattern = getPartial(partial, patternlab);
var cleanPartialPattern = JSON5.parse(JSON5.stringify(partialPattern));
- cleanPartialPattern.extendedTemplate = cleanPartialPattern.template;
//if partial has style modifier data, replace the styleModifier value
if (currentPattern.stylePartials && currentPattern.stylePartials.length > 0) {
diff --git a/core/lib/patternlab.js b/core/lib/patternlab.js
index 3d591bce2..cafd77b71 100644
--- a/core/lib/patternlab.js
+++ b/core/lib/patternlab.js
@@ -1,5 +1,5 @@
/*
- * patternlab-node - v2.5.0 - 2016
+ * patternlab-node - v2.5.1 - 2016
*
* Brian Muenzenmeyer, Geoff Pursell, and the web community.
* Licensed under the MIT license.
diff --git a/package.json b/package.json
index f6f795888..6027e9d53 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "patternlab-node",
"description": "Pattern Lab is a collection of tools to help you create atomic design systems. This is the node command line interface (CLI).",
- "version": "2.5.0",
+ "version": "2.5.1",
"main": "./core/lib/patternlab.js",
"dependencies": {
"diveSync": "^0.3.0",
diff --git a/test/files/_patterns/00-test/14-inception.mustache b/test/files/_patterns/00-test/14-inception.mustache
new file mode 100644
index 000000000..ede7fafb1
--- /dev/null
+++ b/test/files/_patterns/00-test/14-inception.mustache
@@ -0,0 +1 @@
+{{> test-foo }}
diff --git a/test/pattern_assembler_tests.js b/test/pattern_assembler_tests.js
index 9c0e8704e..33c3898d1 100644
--- a/test/pattern_assembler_tests.js
+++ b/test/pattern_assembler_tests.js
@@ -364,9 +364,77 @@
//assert
var expectedCleanValue = ' {{message}} ';
var expectedSetValue = ' {{message}} ';
- test.equals(anotherPattern.extendedTemplate.replace(/\s\s+/g, ' ').replace(/\n/g, ' ').trim(), expectedSetValue.trim());
+
+ //this is the "atom" - it should remain unchanged
test.equals(atomPattern.template.replace(/\s\s+/g, ' ').replace(/\n/g, ' ').trim(), expectedCleanValue.trim());
test.equals(atomPattern.extendedTemplate.replace(/\s\s+/g, ' ').replace(/\n/g, ' ').trim(), expectedCleanValue.trim());
+
+ // this is the style modifier pattern, which should resolve correctly
+ test.equals(anotherPattern.template.replace(/\s\s+/g, ' ').replace(/\n/g, ' ').trim(), '{{> test-styled-atom:test_1 }}');
+ test.equals(anotherPattern.extendedTemplate.replace(/\s\s+/g, ' ').replace(/\n/g, ' ').trim(), expectedSetValue.trim());
+
+ test.done();
+ },
+ 'processPatternRecursive - ensure deep-nesting works' : function(test){
+ //arrange
+ var fs = require('fs-extra');
+ var pattern_assembler = new pa();
+ var patterns_dir = './test/files/_patterns';
+
+ var pl = {};
+ pl.config = {
+ paths: {
+ source: {
+ patterns: patterns_dir
+ }
+ },
+ outputFileSuffixes: {
+ rendered : ''
+ }
+ };
+ pl.data = {};
+ pl.data.link = {};
+ pl.config.debug = false;
+ pl.patterns = [];
+ pl.partials = {};
+
+ var atomPattern = new Pattern('00-test/01-bar.mustache');
+ atomPattern.template = fs.readFileSync(patterns_dir + '/00-test/01-bar.mustache', 'utf8');
+ atomPattern.stylePartials = pattern_assembler.find_pattern_partials_with_style_modifiers(atomPattern);
+ atomPattern.parameteredPartials = pattern_assembler.find_pattern_partials_with_parameters(atomPattern);
+
+ var templatePattern = new Pattern('00-test/00-foo.mustache');
+ templatePattern.template = fs.readFileSync(patterns_dir + '/00-test/00-foo.mustache', 'utf8');
+ templatePattern.stylePartials = pattern_assembler.find_pattern_partials_with_style_modifiers(templatePattern);
+ templatePattern.parameteredPartials = pattern_assembler.find_pattern_partials_with_parameters(templatePattern);
+
+ var pagesPattern = new Pattern('00-test/14-inception.mustache');
+ pagesPattern.template = fs.readFileSync(patterns_dir + '/00-test/14-inception.mustache', 'utf8');
+ pagesPattern.stylePartials = pattern_assembler.find_pattern_partials_with_style_modifiers(pagesPattern);
+ pagesPattern.parameteredPartials = pattern_assembler.find_pattern_partials_with_parameters(pagesPattern);
+
+ pattern_assembler.addPattern(atomPattern, pl);
+ pattern_assembler.addPattern(templatePattern, pl);
+ pattern_assembler.addPattern(pagesPattern, pl);
+
+ //act
+ pattern_assembler.process_pattern_recursive('00-test' + path.sep + '14-inception.mustache', pl, {});
+
+ //assert
+ var expectedCleanValue = 'bar';
+ var expectedSetValue = 'bar';
+
+ //this is the "atom" - it should remain unchanged
+ test.equals(atomPattern.template.replace(/\s\s+/g, ' ').replace(/\n/g, ' ').trim(), expectedCleanValue);
+ test.equals(atomPattern.extendedTemplate.replace(/\s\s+/g, ' ').replace(/\n/g, ' ').trim(), expectedCleanValue);
+
+ //this is the "template pattern" - it should have an updated extendedTemplate but an unchanged template
+ test.equals(templatePattern.template.replace(/\s\s+/g, ' ').replace(/\n/g, ' ').trim(), '{{> test-bar }}');
+ test.equals(templatePattern.extendedTemplate.replace(/\s\s+/g, ' ').replace(/\n/g, ' ').trim(), expectedSetValue.trim());
+
+ //this is the "pages pattern" - it should have an updated extendedTemplate equal to the template pattern but an unchanged template
+ test.equals(pagesPattern.template.replace(/\s\s+/g, ' ').replace(/\n/g, ' ').trim(), '{{> test-foo }}');
+ test.equals(pagesPattern.extendedTemplate.replace(/\s\s+/g, ' ').replace(/\n/g, ' ').trim(), expectedSetValue.trim());
test.done();
},
'setState - applies any patternState matching the pattern' : function(test){