UNPKG

3.16 kBtext/coffeescriptView Raw
1suite = require 'jasmine-node'
2BundleUp = require './../index'
3Js = require './../lib/js'
4Css = require './../lib/css'
5helper = require './helper'
6fs = require 'fs'
7express = require 'express'
8request = require 'request'
9
10describe '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 # Apparently the main.css file mtime doesn't change
77 # most likely because the content in the file is the same...
78 # therefore we make the expectations on the typography file
79 # instead
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 # Clean up
86 fs.writeFileSync __dirname + '/files/stylus/typography.styl', oldContent, 'utf8'
87 jasmine.asyncSpecDone()
88 jasmine.asyncSpecWait()