1 | suite = require 'jasmine-node'
|
2 | BundleUp = require './../index'
|
3 | Js = require './../lib/js'
|
4 | Css = require './../lib/css'
|
5 | helper = require './helper'
|
6 | fs = require 'fs'
|
7 | express = require 'express'
|
8 | request = require 'request'
|
9 |
|
10 | describe 'OnTheFlyCompiler', ->
|
11 | bundle = {}
|
12 | beforeEach ->
|
13 | helper.beforeEach()
|
14 | @app = express.createServer()
|
15 | @bundle = BundleUp @app, __dirname + '/files/assets.coffee',
|
16 | staticRoot: __dirname + '/../specs/files/public/',
|
17 | staticUrlRoot:"/",
|
18 | bundle:false
|
19 | bundle = @bundle
|
20 | @app.use(express.static( __dirname + '/../specs/files/public/'))
|
21 |
|
22 | @app.listen(1338)
|
23 |
|
24 | afterEach ->
|
25 | @app.close()
|
26 |
|
27 | it 'should compile stylus files correctly', ->
|
28 | request.get 'http://localhost:1338/generated/stylus/main.css', (err, res) ->
|
29 | expected = """
|
30 | h1 {
|
31 | color: #00f;
|
32 | }
|
33 | body {
|
34 | background-color: #ff0;
|
35 | }
|
36 |
|
37 | """
|
38 | expect(res.body).toEqual(expected)
|
39 | jasmine.asyncSpecDone()
|
40 | jasmine.asyncSpecWait()
|
41 |
|
42 | it 'should compile coffee files correctly', ->
|
43 | request.get 'http://localhost:1338/generated/coffee/1.js', (err, res) ->
|
44 | expected = "\n console.log('1');\n"
|
45 | expect(res.body).toEqual(expected)
|
46 | jasmine.asyncSpecDone()
|
47 | jasmine.asyncSpecWait()
|
48 |
|
49 | it 'should map imported files for main.styl first time it is requested', =>
|
50 | file = bundle.css.files[0]
|
51 | expect(file.origFile).toEqual(__dirname + '/files/stylus/main.styl')
|
52 | expect(file._imports).toBeUndefined()
|
53 | request.get 'http://localhost:1338/generated/stylus/main.css', (err, res) ->
|
54 | expect(file._imports).toBeDefined()
|
55 | found = false
|
56 | for imp in file._imports
|
57 | if imp.file == __dirname + '/files/stylus/typography.styl'
|
58 | found = true
|
59 | expect(found).toBeTruthy()
|
60 |
|
61 | jasmine.asyncSpecDone()
|
62 | jasmine.asyncSpecWait()
|
63 |
|
64 | it 'should re-compile main.styl when imported file change', ->
|
65 | file = bundle.css.files[0]
|
66 | expect(file.origFile).toEqual(__dirname + '/files/stylus/main.styl')
|
67 | request.get 'http://localhost:1338/generated/stylus/main.css', (err, res) ->
|
68 | beforeTime = (fs.statSync __dirname + '/files/stylus/typography.styl').mtime
|
69 |
|
70 | oldContent = fs.readFileSync __dirname + '/files/stylus/typography.styl', 'utf8'
|
71 | fs.writeFileSync __dirname + '/files/stylus/typography.styl', oldContent + '\n', 'utf8'
|
72 |
|
73 | afterTime = (fs.statSync __dirname + '/files/stylus/typography.styl').mtime
|
74 |
|
75 | request.get 'http://localhost:1338/generated/stylus/main.css', (err, res) ->
|
76 |
|
77 |
|
78 |
|
79 |
|
80 | expect(beforeTime).toNotEqual(afterTime)
|
81 | importedFile = file._imports[1]
|
82 | expect(importedFile.file).toEqual(__dirname + '/files/stylus/typography.styl')
|
83 | expect(importedFile.mtime).toEqual(afterTime)
|
84 |
|
85 |
|
86 | fs.writeFileSync __dirname + '/files/stylus/typography.styl', oldContent, 'utf8'
|
87 | jasmine.asyncSpecDone()
|
88 | jasmine.asyncSpecWait()
|