UNPKG

4.42 kBJavaScriptView Raw
1var Lab = require('lab');
2var Moonboots = require('..');
3var moonboots;
4var EXPECTED_CSS_HASH = 'app.38ea6c96.css';
5var EXPECTED_CSS_MIN_HASH = 'app.38ea6c96.min.css';
6
7
8Lab.experiment('css with default options', function () {
9 Lab.before(function (done) {
10 var default_options = {
11 main: __dirname + '/../fixtures/app/app.js',
12 cssFileName: 'app',
13 stylesheets: [
14 __dirname + '/../fixtures/stylesheets/style.css'
15 ]
16 };
17 moonboots = new Moonboots(default_options);
18 moonboots.on('ready', done);
19 });
20 Lab.test('filename', function (done) {
21 Lab.expect(moonboots.cssFileName(), 'css filename').to.equal(EXPECTED_CSS_MIN_HASH);
22 done();
23 });
24 Lab.test('content', function (done) {
25 moonboots.cssSource(function (err, css) {
26 Lab.expect(css, 'css source').to.equal('body{background:#ccc}');
27 });
28 done();
29 });
30});
31
32Lab.experiment('css with no minify', function () {
33 Lab.before(function (done) {
34 var no_minify = {
35 main: __dirname + '/../fixtures/app/app.js',
36 cssFileName: 'app',
37 minify: false,
38 stylesheets: [
39 __dirname + '/../fixtures/stylesheets/style.css'
40 ]
41 };
42 moonboots = new Moonboots(no_minify);
43 moonboots.on('ready', done);
44 });
45 Lab.test('filename', function (done) {
46 Lab.expect(moonboots.cssFileName(), 'css filename').to.equal(EXPECTED_CSS_HASH);
47 done();
48 });
49 Lab.test('content', function (done) {
50 moonboots.cssSource(function (err, css) {
51 Lab.expect(css, 'css source').to.equal('body {background: #ccc;}\n');
52 });
53 done();
54 });
55});
56
57Lab.experiment('css with .css already added', function () {
58 Lab.before(function (done) {
59 var options = {
60 main: __dirname + '/../fixtures/app/app.js',
61 cssFileName: 'app.css',
62 stylesheets: [
63 __dirname + '/../fixtures/stylesheets/style.css'
64 ]
65 };
66 moonboots = new Moonboots(options);
67 moonboots.on('ready', done);
68 });
69 Lab.test('filename', function (done) {
70 Lab.expect(moonboots.cssFileName(), 'css filename').to.equal(EXPECTED_CSS_MIN_HASH);
71 done();
72 });
73});
74
75
76Lab.experiment('async beforeBuildCSS', function () {
77 var beforeRan = false;
78 Lab.before(function (done) {
79 var no_minify = {
80 main: __dirname + '/../fixtures/app/app.js',
81 cssFileName: 'app',
82 minify: false,
83 beforeBuildCSS: function (next) {
84 beforeRan = true;
85 next();
86 },
87 stylesheets: [
88 __dirname + '/../fixtures/stylesheets/style.css'
89 ]
90 };
91 moonboots = new Moonboots(no_minify);
92 moonboots.on('ready', done);
93 });
94 Lab.test('ran', function (done) {
95 Lab.expect(beforeRan).to.equal(true);
96 done();
97 });
98});
99
100Lab.experiment('sync beforeBuildCSS', function () {
101 var beforeRan = false;
102 Lab.before(function (done) {
103 var no_minify = {
104 main: __dirname + '/../fixtures/app/app.js',
105 cssFileName: 'app',
106 minify: false,
107 beforeBuildCSS: function () {
108 beforeRan = true;
109 },
110 stylesheets: [
111 __dirname + '/../fixtures/stylesheets/style.css'
112 ]
113 };
114 moonboots = new Moonboots(no_minify);
115 moonboots.on('ready', done);
116 });
117 Lab.test('ran', function (done) {
118 Lab.expect(beforeRan).to.equal(true);
119 done();
120 });
121});
122
123Lab.experiment('bad css', function () {
124 Lab.before(function (done) {
125 var bad_css = {
126 main: __dirname + '/../fixtures/app/app.js',
127 cssFileName: 'app',
128 stylesheets: [
129 __dirname + '/../fixtures/stylesheets/style.css'
130 ],
131 beforeBuildCSS: function (done) {
132 done('Could not build css');
133 }
134 };
135 moonboots = new Moonboots(bad_css);
136 moonboots.on('ready', done);
137 });
138 Lab.test('empty css, no crashing', function (done) {
139 moonboots.cssSource(function (err, css) {
140 Lab.expect(css, 'css source').to.equal(undefined);
141 done();
142 });
143 });
144});