1 | var assert = require("assert");
|
2 | var jade = require("jade");
|
3 | var fs = require("fs");
|
4 | var path = require("path");
|
5 |
|
6 | describe("Alerts",function() {
|
7 |
|
8 | var alertTypes = ["info","warning","danger","success"];
|
9 |
|
10 | function generateTestData(prefix,alertTypes) {
|
11 | return alertTypes.map(function(m) {
|
12 | return {
|
13 | suite: `${prefix}-${m} mixin`,
|
14 | spec: `should render a ${m} ${prefix}`,
|
15 | fixture: `${prefix}-${m}.jade`,
|
16 | locals: { message: `This is a ${m} ${prefix}` },
|
17 | actual: `<div role="alert" class="${prefix} ${prefix}-${m}">This is a ${m} ${prefix}</div>`
|
18 | };
|
19 | });
|
20 | }
|
21 |
|
22 | function runSpecs(item) {
|
23 | describe(item.suite,function() {
|
24 | it(item.spec,function() {
|
25 | var fn = jade.compileFile(path.join(__dirname,"fixtures/alerts", item.fixture));
|
26 | assert.equal(item.actual,fn(item.locals));
|
27 | });
|
28 | });
|
29 | }
|
30 |
|
31 |
|
32 |
|
33 | var genericAlert = `include ../../../components/alerts
|
34 | +alert(type,message)`;
|
35 | fs.writeFileSync(path.join(__dirname,"fixtures/alerts","alert.jade"),genericAlert);
|
36 |
|
37 | alertTypes.map(function(t) {
|
38 | return {
|
39 | suite: `Generic alert ${t}`,
|
40 | spec: `should render a ${t} alert`,
|
41 | fixture: "alert.jade",
|
42 | locals: { type: `${t}`,message:`This is a ${t} alert`},
|
43 | actual: `<div role="alert" class="alert alert-${t}">This is a ${t} alert</div>`
|
44 | };
|
45 | }).forEach(runSpecs);
|
46 |
|
47 |
|
48 |
|
49 | var genericAlertIcon = `include ../../../components/alerts
|
50 | +alert-i(type,message,icon)`;
|
51 | fs.writeFileSync(path.join(__dirname,"fixtures/alerts","alert-i.jade"),genericAlertIcon);
|
52 |
|
53 | alertTypes.map(function(t) {
|
54 | return {
|
55 | suite: `Generic Icon alert-i ${t}`,
|
56 | spec: `should render a ${t} icon alert`,
|
57 | fixture: "alert-i.jade",
|
58 | locals: { type: `${t}`,message:`This is a ${t} icon alert`, icon:"info"},
|
59 | actual: `<div role="alert" class="alert alert-${t}"><span aria-hidden="true" class="glyphicon glyphicon-info"></span> This is a ${t} icon alert</div>`
|
60 | };
|
61 | }).forEach(runSpecs);
|
62 |
|
63 |
|
64 | var genericAlertx = `include ../../../components/alerts
|
65 | +alert-x(type,message)`;
|
66 | fs.writeFileSync(path.join(__dirname,"fixtures/alerts","alert-x.jade"),genericAlertx);
|
67 |
|
68 | alertTypes.map(function(t) {
|
69 | return {
|
70 | suite: `Generic alert-x ${t}`,
|
71 | spec: `should render a ${t} dismissible alert`,
|
72 | fixture: "alert-x.jade",
|
73 | locals: { type: `${t}`,message:`This is a ${t} dismissible alert`},
|
74 | actual: `<div role="alert" class="alert alert-dismissible alert-${t}"><button type="button" data-dismiss="alert" aria-label="Close" class="close"><span aria-hidden="true"> ×</span></button>This is a ${t} dismissible alert</div>`
|
75 | };
|
76 | }).forEach(runSpecs);
|
77 |
|
78 |
|
79 | alertTypes.forEach(function(m) {
|
80 | var fixtureTemplate = `include ../../../components/alerts
|
81 | +alert-${m}(message)`;
|
82 | var fileName = `alert-${m}.jade`;
|
83 | fs.writeFileSync(path.join(__dirname,"fixtures/alerts",fileName),fixtureTemplate);
|
84 | });
|
85 |
|
86 |
|
87 | generateTestData("alert",alertTypes).forEach(runSpecs);
|
88 |
|
89 |
|
90 | alertTypes.forEach(function(m) {
|
91 | var fixtureTemplate = `include ../../../components/alerts
|
92 | +alert-i-${m}(message)`;
|
93 | var fileName = `alert-i-${m}.jade`;
|
94 | fs.writeFileSync(path.join(__dirname,"fixtures/alerts",fileName),fixtureTemplate);
|
95 | });
|
96 | alertTypes.map(function(t) {
|
97 | var icon = "info-sign";
|
98 | switch(t) {
|
99 | case "warning":
|
100 | icon = "exclamation-sign";
|
101 | break;
|
102 | case "danger":
|
103 | icon = "remove-sign";
|
104 | break;
|
105 | case "success":
|
106 | icon = "ok-sign";
|
107 | break;
|
108 | default:
|
109 | }
|
110 |
|
111 | return {
|
112 | suite: `alert-i-${t}`,
|
113 | spec: `should render a ${t} icon alert`,
|
114 | fixture: `alert-i-${t}.jade`,
|
115 | locals: { message:`This is a ${t} icon alert`, icon:"info"},
|
116 | actual: `<div role="alert" class="alert alert-${t}"><span aria-hidden="true" class="glyphicon glyphicon-${icon}"></span> This is a ${t} icon alert</div>`
|
117 | };
|
118 | }).forEach(runSpecs);
|
119 |
|
120 |
|
121 |
|
122 | alertTypes.forEach(function(m) {
|
123 | var fixtureTemplate = `include ../../../components/alerts
|
124 | +alert-x-${m}(message)`;
|
125 | var fileName = `alert-x-${m}.jade`;
|
126 | fs.writeFileSync(path.join(__dirname,"fixtures/alerts",fileName),fixtureTemplate);
|
127 | });
|
128 |
|
129 | alertTypes.map(function(t) {
|
130 | return {
|
131 | suite: `alert-x-${t}`,
|
132 | spec: `should render a ${t} dismissible alert`,
|
133 | fixture: `alert-x-${t}.jade`,
|
134 | locals: { type: `${t}`,message:`This is a ${t} dismissible alert`},
|
135 | actual: `<div role="alert" class="alert alert-dismissible alert-${t}"><button type="button" data-dismiss="alert" aria-label="Close" class="close"><span aria-hidden="true"> ×</span></button>This is a ${t} dismissible alert</div>`
|
136 | };
|
137 | }).forEach(runSpecs);
|
138 |
|
139 |
|
140 |
|
141 | alertTypes.forEach(function(m) {
|
142 | var fixtureTemplate = `include ../../../components/alerts
|
143 | +alert-ix-${m}(message,icon)`;
|
144 | var fileName = `alert-ix-${m}.jade`;
|
145 | fs.writeFileSync(path.join(__dirname,"fixtures/alerts",fileName),fixtureTemplate);
|
146 | });
|
147 | alertTypes.map(function(t) {
|
148 | return {
|
149 | suite: `alert-ix-${t}`,
|
150 | spec: `should render a ${t} dismissible icon alert`,
|
151 | fixture: `alert-ix-${t}.jade`,
|
152 | locals: { message:`This is a ${t} dismissible icon alert`,icon:"info-sign"},
|
153 | actual: `<div role="alert" class="alert alert-dismissible alert-${t}"><span aria-hidden="true" class="glyphicon glyphicon-info-sign"></span><button type="button" data-dismiss="alert" aria-label="Close" class="close"><span aria-hidden="true"> ×</span></button>This is a ${t} dismissible icon alert</div>`
|
154 | };
|
155 | }).forEach(runSpecs);
|
156 | });
|