1 | const test = require('tape');
|
2 | const template = require('../bin/lib/template');
|
3 |
|
4 | test('Template', function(assert){
|
5 |
|
6 | {
|
7 | let message = 'requires config object';
|
8 | assert.throws(function(){
|
9 | template();
|
10 | }, Error, message);
|
11 | }
|
12 |
|
13 | {
|
14 | let message = 'has default meta values';
|
15 | let actual = template({ content: {body: '<h1> Hello World</h1>' }});
|
16 | assert.ok(actual, message);
|
17 | }
|
18 |
|
19 | {
|
20 | let message = 'returns string';
|
21 | let actual = typeof template({ content: { body: '<h2>Hello World</h2>' }});
|
22 | let expected = 'string';
|
23 |
|
24 | assert.equal(actual, expected, message);
|
25 | }
|
26 |
|
27 | {
|
28 | let message = 'returns HTML';
|
29 | let actual = template({ content: { body: '<h3>Hello World</h3>' }}).match(/<!DOCTYPE\shtml>/ig);
|
30 | let expected = ['<!DOCTYPE html>'];
|
31 |
|
32 | assert.deepEqual(actual, expected, message);
|
33 | }
|
34 |
|
35 | {
|
36 | let message = 'renders head element';
|
37 | let actual = template({ content: { body: '<h3>Hello World</h3>' }}).match(/<(\/?)head>/ig);
|
38 | let expected = ['<head>', '</head>'];
|
39 |
|
40 | assert.deepEqual(actual, expected, message);
|
41 | }
|
42 |
|
43 | {
|
44 | let message = 'renders meta values in head element';
|
45 | let actual = template({
|
46 | meta: {
|
47 | author: 'Robert Frost'
|
48 | },
|
49 | content: {
|
50 | body: '<h3>Hello World</h3>'
|
51 | }
|
52 | }).match(/<meta name="author" content="Robert Frost">/ig);
|
53 | let expected = ['<meta name="author" content="Robert Frost">'];
|
54 |
|
55 | assert.deepEqual(actual, expected, message);
|
56 | }
|
57 |
|
58 | {
|
59 | let message = 'renders content body';
|
60 | let actual = template({ content: { body: '<h3>Hello World</h3>' }}).match(/<(\/?)h3>/ig);
|
61 | let expected = ['<h3>', '</h3>'];
|
62 |
|
63 | assert.deepEqual(actual, expected, message);
|
64 | }
|
65 |
|
66 | {
|
67 | let message = 'renders optional nav list';
|
68 | let actual = template({
|
69 | content: {
|
70 | body: '<h3>Hello World</h3>',
|
71 | nav: ['/', 'blah.html', 'cool.html']
|
72 | }
|
73 | }).match(/<(\/?)nav>/ig);
|
74 |
|
75 | let expected = ['<nav>','</nav>'];
|
76 |
|
77 | assert.deepEqual(actual, expected, message);
|
78 | }
|
79 |
|
80 | {
|
81 | let message = 'renders optional nav list only if present';
|
82 | let actual = template({
|
83 | content: {
|
84 | body: '<h3>Hello World</h3>'
|
85 | }
|
86 | }).match(/<nav>/ig);
|
87 |
|
88 | assert.notOk(actual, message);
|
89 | }
|
90 |
|
91 | assert.end();
|
92 | });
|