Skip to content

Commit 578a9af

Browse files
committed
feat(unit tests): Unit test coverage for loadPattern
1 parent 165afa7 commit 578a9af

File tree

5 files changed

+93
-7
lines changed

5 files changed

+93
-7
lines changed

core/lib/loadPattern.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ const dataLoader = new da();
1919
//this is mocked in unit tests
2020
let fs = require('fs-extra'); //eslint-disable-line prefer-const
2121

22-
// loads a pattern from disk, creates a Pattern object from it and
23-
// all its associated files, and records it in patternlab.patterns[]
22+
// loads a pattern from disk, creates a Pattern object from it and
23+
// all its associated files, and records it in patternlab.patterns[]
2424
module.exports = function (relPath, patternlab) {
2525

2626
var relativeDepth = (relPath.match(/\w(?=\\)|\w(?=\/)/g) || []).length;
@@ -47,12 +47,10 @@ module.exports = function (relPath, patternlab) {
4747
var subTypeMarkdown = markdown_parser.parse(subTypeMarkdownFileContents);
4848
var subTypePattern = new Pattern(relPath, null, patternlab);
4949
subTypePattern.patternSectionSubtype = true;
50-
subTypePattern.patternLink = subTypePattern.name + '/index.html';
51-
subTypePattern.patternDesc = subTypeMarkdown.markdown;
50+
subTypePattern.patternDesc = subTypeMarkdown ? subTypeMarkdown.markdown : '';
5251
subTypePattern.flatPatternPath = subTypePattern.flatPatternPath + '-' + subTypePattern.fileName;
5352
subTypePattern.isPattern = false;
5453
subTypePattern.engine = null;
55-
5654
patternlab.subtypePatterns[subTypePattern.patternPartial] = subTypePattern;
5755

5856
return subTypePattern;
@@ -65,7 +63,6 @@ module.exports = function (relPath, patternlab) {
6563
}
6664
}
6765

68-
6966
//extract some information
7067
var filename = fileObject.base;
7168
var ext = fileObject.ext;

core/lib/object_factory.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ const Pattern = function (relPath, data, patternlab) {
5858

5959
// calculated path from the root of the public directory to the generated
6060
// (rendered!) html file for this pattern, to be shown in the iframe
61-
this.patternLink = patternlab ? this.getPatternLink(patternlab, 'rendered') : null;
61+
this.patternLink = this.patternSectionSubtype ? `$${this.name}/index.html` : (patternlab ? this.getPatternLink(patternlab, 'rendered') : null);
6262

6363
// The canonical "key" by which this pattern is known. This is the callable
6464
// name of the pattern. UPDATE: this.key is now known as this.patternPartial
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
title: Colors
3+
---
4+
Colors

test/loadPattern_tests.js

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
"use strict";
2+
3+
const path = require('path');
4+
const tap = require('tap');
5+
6+
const loadPattern = require('../core/lib/loadPattern');
7+
const util = require('./util/test_utils.js');
8+
const patternEngines = require('../core/lib/pattern_engines');
9+
var config = require('./util/patternlab-config.json');
10+
11+
patternEngines.loadAllEngines(config);
12+
13+
const patterns_dir = './test/files/_patterns';
14+
15+
tap.test('loadPattern - returns null if file is not a pattern', function (test) {
16+
//arrange
17+
const patternlab = util.fakePatternLab(patterns_dir);
18+
var patternPath = path.join('00-test', '03-styled-atom.json');
19+
20+
//act
21+
var result = loadPattern(patternPath, patternlab);
22+
23+
//assert
24+
test.equals(result, null);
25+
test.end();
26+
});
27+
28+
tap.test('loadPattern - loads pattern sibling json if found', function (test) {
29+
//arrange
30+
const patternlab = util.fakePatternLab(patterns_dir);
31+
var patternPath = path.join('00-test', '03-styled-atom.mustache');
32+
33+
//act
34+
var result = loadPattern(patternPath, patternlab);
35+
36+
//assert
37+
test.equals(result.jsonFileData.message, 'baseMessage');
38+
test.end();
39+
});
40+
41+
tap.test('loadPattern - adds the pattern to the patternlab.partials object', function (test) {
42+
//arrange
43+
const patternlab = util.fakePatternLab(patterns_dir);
44+
var fooPatternPath = path.join('00-test', '01-bar.mustache');
45+
46+
//act
47+
var result = loadPattern(fooPatternPath, patternlab);
48+
49+
//assert
50+
test.equals(util.sanitized(patternlab.partials['test-bar']), 'bar');
51+
test.end();
52+
});
53+
54+
tap.test('loadPattern - returns pattern with template populated', function (test) {
55+
//arrange
56+
const patternlab = util.fakePatternLab(patterns_dir);
57+
var fooPatternPath = path.join('00-test', '01-bar.mustache');
58+
59+
//act
60+
var result = loadPattern(fooPatternPath, patternlab);
61+
62+
//assert
63+
test.equals(util.sanitized(result.template), util.sanitized('bar'));
64+
test.end();
65+
});
66+
67+
tap.test('loadPattern - adds a markdown pattern if encountered', function (test) {
68+
//arrange
69+
const patternlab = util.fakePatternLab(patterns_dir);
70+
var colorsMarkDownPath = path.join('patternType1', 'patternSubType1.md');
71+
72+
//act
73+
var result = loadPattern(colorsMarkDownPath, patternlab);
74+
75+
//assert
76+
const subTypePattern = patternlab.subtypePatterns['patternType1-patternSubType1'];
77+
test.equals(subTypePattern.patternSectionSubtype, true);
78+
test.equals(subTypePattern.isPattern, false);
79+
test.equals(subTypePattern.patternDesc, '<p>Colors</p>\n');
80+
test.equals(subTypePattern.engine, null);
81+
test.equals(subTypePattern.flatPatternPath, 'patternType1-patternSubType1');
82+
test.equals(result, subTypePattern);
83+
test.end();
84+
});

test/util/test_utils.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ module.exports = {
1212
graph: PatternGraph.empty(),
1313
partials: {},
1414
patterns: [],
15+
subtypePatterns: {},
1516
footer: '',
1617
header: '',
1718
listitems: {},

0 commit comments

Comments
 (0)