UNPKG

5.94 kBJavaScriptView Raw
1var assert = require("assert");
2var jade = require("jade");
3var fs = require("fs");
4var path = require("path");
5
6describe("Alerts",function() {
7
8var alertTypes = ["info","warning","danger","success"];
9// function for generating test data
10function 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
22function 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// Generic alert mixins
33var genericAlert = `include ../../../components/alerts
34+alert(type,message)`;
35fs.writeFileSync(path.join(__dirname,"fixtures/alerts","alert.jade"),genericAlert);
36
37alertTypes.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// Generic Icon alert-i mixins
49var genericAlertIcon = `include ../../../components/alerts
50+alert-i(type,message,icon)`;
51fs.writeFileSync(path.join(__dirname,"fixtures/alerts","alert-i.jade"),genericAlertIcon);
52
53alertTypes.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> &nbsp;This is a ${t} icon alert</div>`
60 };
61}).forEach(runSpecs);
62
63// Generic alert-x mixins
64var genericAlertx = `include ../../../components/alerts
65+alert-x(type,message)`;
66fs.writeFileSync(path.join(__dirname,"fixtures/alerts","alert-x.jade"),genericAlertx);
67
68alertTypes.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"> &times;</span></button>This is a ${t} dismissible alert</div>`
75 };
76}).forEach(runSpecs);
77
78// write fixture data for alert-type mixins
79alertTypes.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
87generateTestData("alert",alertTypes).forEach(runSpecs);
88
89// write fixture data for alert-i-type mixins
90alertTypes.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});
96alertTypes.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> &nbsp;This is a ${t} icon alert</div>`
117 };
118}).forEach(runSpecs);
119
120
121// write fixture data for alert-x-type mixins
122alertTypes.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
129alertTypes.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"> &times;</span></button>This is a ${t} dismissible alert</div>`
136 };
137}).forEach(runSpecs);
138
139
140// write fixture data for alert-ix-type mixins
141alertTypes.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});
147alertTypes.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"> &times;</span></button>This is a ${t} dismissible icon alert</div>`
154 };
155}).forEach(runSpecs);
156});