1 | suite = require 'jasmine-node'
|
2 | Js = require './../lib/js'
|
3 | Css = require './../lib/css'
|
4 | helper = require './helper'
|
5 | fs = require 'fs'
|
6 |
|
7 | describe 'When adding files', ->
|
8 | beforeEach ->
|
9 | helper.beforeEach()
|
10 | @js = new Js(staticRoot:"#{__dirname}/files/public", staticUrlRoot:'/')
|
11 | @css = new Css(staticRoot:"#{__dirname}/files/public", staticUrlRoot:'/')
|
12 |
|
13 | it 'should add the correct paths when adding a js file', ->
|
14 | @js.addFile(__dirname + '/files/js/1.js')
|
15 | expect(@js.files.length).toEqual(1)
|
16 | file = @js.files[0]
|
17 |
|
18 | expect(file.file).toEqual("#{__dirname}/files/public/generated/js/1.js")
|
19 | expect(file.origFile).toEqual(__dirname + '/files/js/1.js')
|
20 | expect(file.url).toEqual('/generated/js/1.js')
|
21 |
|
22 | it 'should add the correct paths when adding a coffee file', ->
|
23 | @js.addFile(__dirname + '/files/coffee/1.coffee')
|
24 | expect(@js.files.length).toEqual(1)
|
25 | file = @js.files[0]
|
26 |
|
27 | expect(file.file).toEqual("#{__dirname}/files/public/generated/coffee/1.js")
|
28 | expect(file.origFile).toEqual(__dirname + '/files/coffee/1.coffee')
|
29 | expect(file.url).toEqual('/generated/coffee/1.js')
|
30 |
|
31 | it 'should add the correct paths when adding a css file', ->
|
32 | @css.addFile(__dirname + '/files/css/screen.css')
|
33 | expect(@css.files.length).toEqual(1)
|
34 | file = @css.files[0]
|
35 |
|
36 | expect(file.file).toEqual("#{__dirname}/files/public/generated/css/screen.css")
|
37 | expect(file.origFile).toEqual(__dirname + '/files/css/screen.css')
|
38 | expect(file.url).toEqual('/generated/css/screen.css')
|
39 |
|
40 | it 'should add the correct paths when adding a styl file', ->
|
41 | @css.addFile(__dirname + '/files/stylus/main.styl')
|
42 | expect(@css.files.length).toEqual(1)
|
43 | file = @css.files[0]
|
44 |
|
45 | expect(file.file).toEqual("#{__dirname}/files/public/generated/stylus/main.css")
|
46 | expect(file.origFile).toEqual(__dirname + '/files/stylus/main.styl')
|
47 | expect(file.url).toEqual('/generated/stylus/main.css')
|
48 |
|
49 | it 'should not point to generated/ when adding a js file already in staticRoot', ->
|
50 | @js.addFile(__dirname + '/files/public/jquery.js')
|
51 | expect(@js.files.length).toEqual(1)
|
52 | file = @js.files[0]
|
53 |
|
54 | expect(file.file).toEqual("#{__dirname}/files/public/jquery.js")
|
55 | expect(file.origFile).toEqual("#{__dirname}/files/public/jquery.js")
|
56 | expect(file.url).toEqual('/jquery.js')
|
57 |
|
58 | it 'should not point to generated/ when adding a css file already in staticRoot', ->
|
59 | @css.addFile(__dirname + '/files/public/styles/bootstrap.css')
|
60 | expect(@css.files.length).toEqual(1)
|
61 | file = @css.files[0]
|
62 |
|
63 | expect(file.file).toEqual("#{__dirname}/files/public/styles/bootstrap.css")
|
64 | expect(file.origFile).toEqual("#{__dirname}/files/public/styles/bootstrap.css")
|
65 | expect(file.url).toEqual('/styles/bootstrap.css')
|
66 |
|
67 | it 'should add the correct paths when adding a coffee file inside staticRoot', ->
|
68 | @js.addFile(__dirname + '/files/public/main.coffee')
|
69 | expect(@js.files.length).toEqual(1)
|
70 | file = @js.files[0]
|
71 |
|
72 | expect(file.file).toEqual("#{__dirname}/files/public/generated/main.js")
|
73 | expect(file.origFile).toEqual(__dirname + '/files/public/main.coffee')
|
74 | expect(file.url).toEqual('/generated/main.js')
|
75 |
|
76 | it 'should add the correct paths when adding a styl file inside staticRoot', ->
|
77 | @css.addFile(__dirname + '/files/public/print.styl')
|
78 | expect(@css.files.length).toEqual(1)
|
79 | file = @css.files[0]
|
80 |
|
81 | expect(file.file).toEqual("#{__dirname}/files/public/generated/print.css")
|
82 | expect(file.origFile).toEqual(__dirname + '/files/public/print.styl')
|
83 | expect(file.url).toEqual('/generated/print.css')
|
84 |
|
85 | it 'should not change the css file when adding a file already in staticRoot', ->
|
86 | file = __dirname + '/files/public/styles/bootstrap.css'
|
87 | beforeStat = fs.statSync(file)
|
88 | @css.addFile(file)
|
89 | afterStat = fs.statSync(file)
|
90 | works = false
|
91 | for key of beforeStat
|
92 | works = true
|
93 | expect(beforeStat[key]).toEqual(afterStat[key])
|
94 | expect(works).toBeTruthy()
|
95 |
|
96 | it 'should not change the js file when adding a file already in staticRoot', ->
|
97 | file = __dirname + '/files/public/jquery.js'
|
98 | beforeStat = fs.statSync(file)
|
99 | @css.addFile(file)
|
100 | afterStat = fs.statSync(file)
|
101 | works = false
|
102 | for key of beforeStat
|
103 | works = true
|
104 | expect(beforeStat[key]).toEqual(afterStat[key])
|
105 | expect(works).toBeTruthy()
|
106 |
|
107 | it 'should only add the file once when adding the same file twice', ->
|
108 | @js.addFile(__dirname + '/files/coffee/1.coffee')
|
109 | @js.addFile(__dirname + '/files/coffee/1.coffee')
|
110 |
|
111 | expect(@js.files.length).toEqual(1)
|
112 | file = @js.files[0]
|
113 | expect(file.file).toEqual("#{__dirname}/files/public/generated/coffee/1.js")
|
114 | expect(file.origFile).toEqual(__dirname + '/files/coffee/1.coffee')
|
115 | expect(file.url).toEqual('/generated/coffee/1.js')
|
116 |
|
117 | describe 'filtered paths', ->
|
118 | it 'should be able to add 1.coffee using files/nested/js/*.coffee', ->
|
119 | @js.addFile(__dirname + '/files/nested/js/*.coffee')
|
120 | expect(@js.files.length).toEqual(1)
|
121 | expect(@js.files[0].origFile).toEqual(__dirname + '/files/nested/js/1.coffee')
|
122 |
|
123 | it 'should be able to add all 2 coffee files using files/nested/js/**.coffee', ->
|
124 | @js.addFile(__dirname + '/files/nested/js/**.coffee')
|
125 | expect(@js.files.length).toEqual(2)
|
126 | expect(@js.files[0].origFile).toEqual(__dirname + '/files/nested/js/1.coffee')
|
127 | expect(@js.files[1].origFile).toEqual(__dirname + '/files/nested/js/sub/2.coffee')
|
128 |
|
129 | it 'should be able to add all 6 files using files/coffee/js/**', ->
|
130 | @js.addFile(__dirname + '/files/nested/js/**')
|
131 | expect(@js.files.length).toEqual(6)
|
132 | expect(@js.files[0].origFile).toEqual(__dirname + '/files/nested/js/1.coffee')
|
133 | expect(@js.files[1].origFile).toEqual(__dirname + '/files/nested/js/1.js')
|
134 | expect(@js.files[2].origFile).toEqual(__dirname + '/files/nested/js/sub/2.coffee')
|
135 | expect(@js.files[3].origFile).toEqual(__dirname + '/files/nested/js/sub/2.js')
|
136 | expect(@js.files[4].origFile).toEqual(__dirname + '/files/nested/js/sub/sub2/3.js')
|
137 | expect(@js.files[5].origFile).toEqual(__dirname + '/files/nested/js/sub/sub2/4.js')
|
138 |
|
139 | it 'should add 0 files when trying /files/invalid*', ->
|
140 | @js.addFile(__dirname + '/files/invalid*')
|
141 | expect(@js.files.length).toEqual(0)
|
142 |
|
143 | it 'should add 6 files when trying /files/nested/j*', ->
|
144 | @js.addFile(__dirname + '/files/nested/j*')
|
145 | expect(@js.files.length).toEqual(6)
|