UNPKG

3.65 kBJavaScriptView Raw
1var dedent = require('dedent')
2var path = require('path')
3var tape = require('tape')
4var tmp = require('tmp')
5var fs = require('fs')
6
7var bankai = require('../')
8
9tape('read a manifest', function (assert) {
10 assert.plan(5)
11 var script = dedent`
12 1 + 1
13 `
14
15 var manifest = dedent`
16 {
17 "name": "demo",
18 "short_name": "demo",
19 "description": "A very cute app",
20 "start_url": "/",
21 "display": "standalone",
22 "background_color": "#ffc0cb",
23 "theme_color": "#ffc0cb",
24 "icons": [{
25 "src": "/assets/icon.png",
26 "type": "image/png",
27 "sizes": "512x512"
28 }]
29 }
30 `
31
32 var tmpDir = tmp.dirSync({ dir: path.join(__dirname, '../tmp'), unsafeCleanup: true })
33 assert.on('end', tmpDir.removeCallback)
34 var tmpScriptname = path.join(tmpDir.name, 'index.js')
35 var tmpManifestname = path.join(tmpDir.name, 'manifest.json')
36
37 fs.writeFileSync(tmpScriptname, script)
38 fs.writeFileSync(tmpManifestname, manifest)
39
40 var compiler = bankai(tmpScriptname, { watch: false })
41 compiler.manifest(function (err, res) {
42 assert.error(err, 'no error writing manifest')
43 assert.ok(res, 'output exists')
44 assert.ok(res.buffer, 'output buffer exists')
45 assert.ok(res.hash, 'output hash exists')
46 })
47
48 compiler.scripts('bundle.js', function (err, res) {
49 assert.error(err, 'no error writing script')
50 })
51})
52
53tape('should provide a default manifest', function (assert) {
54 assert.plan(3)
55
56 var script = dedent`
57 1 + 1
58 `
59
60 var tmpDir = tmp.dirSync({ dir: path.join(__dirname, '../tmp'), unsafeCleanup: true })
61 assert.on('end', tmpDir.removeCallback)
62 var tmpScriptname = path.join(tmpDir.name, 'index.js')
63
64 fs.writeFileSync(tmpScriptname, script)
65
66 var compiler = bankai(tmpScriptname, { watch: false })
67 compiler.manifest(function (err, res) {
68 assert.error(err, 'no error writing manifest')
69 assert.ok(res, 'output exists')
70 })
71
72 compiler.scripts('bundle.js', function (err, res) {
73 assert.error(err, 'no error writing script')
74 })
75})
76
77tape('should watch the manifest for changes', function (assert) {
78 assert.on('end', function () {
79 compiler.close()
80 })
81 assert.plan(12)
82
83 var script = dedent`
84 1 + 1
85 `
86
87 var manifest1 = dedent`
88 { "name": "foo" }
89 `
90
91 var manifest2 = dedent`
92 { "name": "bar" }
93 `
94
95 var tmpDir = tmp.dirSync({ dir: path.join(__dirname, '../tmp'), unsafeCleanup: true })
96 assert.on('end', tmpDir.removeCallback)
97 var tmpScriptname = path.join(tmpDir.name, 'index.js')
98 var tmpManifestname = path.join(tmpDir.name, 'manifest.json')
99
100 fs.writeFileSync(tmpScriptname, script)
101 fs.writeFileSync(tmpManifestname, manifest1)
102
103 var compiler = bankai(tmpScriptname)
104 compiler.manifest(function (err, res) {
105 assert.error(err, 'no error writing manifest')
106 assert.ok(res, 'output exists')
107 assert.ok(res.buffer, 'output buffer exists')
108 assert.ok(res.hash, 'output hash exists')
109 assert.ok(/foo/.exec(String(res.buffer)), 'contains foo')
110
111 compiler.on('change', function (nodeName) {
112 if (nodeName !== 'manifest') return
113 compiler.manifest(function (err, res) {
114 assert.error(err, 'no error writing manifest')
115 assert.ok(res, 'output exists')
116 assert.ok(res.buffer, 'output buffer exists')
117 assert.ok(res.hash, 'output hash exists')
118 assert.ok(/bar/.exec(String(res.buffer)), 'contains bar')
119 })
120 })
121
122 fs.writeFile(tmpManifestname, manifest2, function (err) {
123 assert.error(err, 'no error writing manifest 2')
124 })
125 })
126
127 compiler.scripts('bundle.js', function (err, res) {
128 assert.error(err, 'no error writing script')
129 })
130})