UNPKG

1.81 kBJavaScriptView Raw
1var tape = require('tape');
2
3var browserify = require('browserify');
4var proxyquire = require('proxyquire');
5var fs = require('fs');
6var path = require('path');
7
8var casesDir = path.join(__dirname, 'cases');
9var simpleCaseDir = path.join(casesDir, 'simple');
10var cssFilesTotal = 1;
11var cssOutFilename = 'out.css';
12
13tape('stream output', function (t) {
14 var fakeFs = {
15 writeFile: function (filename, content, cb) {
16 var expected = fs.readFileSync(path.join(simpleCaseDir, 'expected.css'), 'utf8');
17
18 t.equal(filename, cssOutFilename, 'correct output filename');
19 t.equal(content, expected, 'output matches expected');
20 cb();
21 }
22 };
23
24 var cssModulesify = proxyquire('../', {
25 fs: fakeFs
26 });
27
28 t.plan(cssFilesTotal * 2 + 2);
29
30 var cssFilesCount = 0;
31 var b = browserify(path.join(simpleCaseDir, 'main.js'));
32
33 b
34 .plugin(cssModulesify, {
35 rootDir: path.join(simpleCaseDir)
36 })
37 .on('error', t.error)
38 .bundle(function noop () {});
39
40 b
41 .once('css stream', function (stream) {
42 stream
43 .on('data', function onData (css) {
44 var cssString = css.toString();
45 // just get the first class name, use that as an id
46 var cssId = cssString.split('\n')[0].split(' ')[0];
47
48 t.ok(
49 ++cssFilesCount <= cssFilesTotal
50 , 'emits data for ' + cssId
51 );
52
53 t.ok(
54 cssString.indexOf('._styles') === 0
55 , 'emits compiled css for ' + cssId
56 );
57 })
58 .on('end', function onEnd () {
59 t.pass('ends the stream');
60
61 b.bundle(function noop () {});
62
63 b.once('css stream', function (stream2) {
64 t.ok(stream2, 'registers a second event for a CSS stream');
65 });
66 })
67 .on('error', t.error);
68 });
69});