Initial commit
[yaffs-website] / node_modules / tiny-lr / test / server.js
1
2 var request = require('supertest');
3 var assert  = require('assert');
4
5 var Server = require('..').Server;
6
7 var listen = require('./helpers/listen');
8
9 describe('tiny-lr', function() {
10
11   before(listen());
12
13   describe('GET /', function() {
14     it('respond with nothing, but respond', function(done){
15       request(this.server)
16         .get('/')
17         .expect('Content-Type', /json/)
18         .expect(/\{"tinylr":"Welcome","version":"[\d].[\d].[\d]+"\}/)
19         .expect(200, done);
20     });
21
22     it('unknown route respond with proper 404 and error message', function(done){
23       request(this.server)
24         .get('/whatev')
25         .expect('Content-Type', /json/)
26         .expect('{"error":"not_found","reason":"no such route"}')
27         .expect(404, done);
28     });
29   });
30
31
32   describe('GET /changed', function() {
33     it('with no clients, no files', function(done) {
34       request(this.server)
35         .get('/changed')
36         .expect('Content-Type', /json/)
37         .expect(/"clients":\[\]/)
38         .expect(/"files":\[\]/)
39         .expect(200, done);
40     });
41
42     it('with no clients, some files', function(done) {
43       request(this.server)
44         .get('/changed?files=gonna.css,test.css,it.css')
45         .expect('Content-Type', /json/)
46         .expect('{"clients":[],"files":["gonna.css","test.css","it.css"]}')
47         .expect(200, done);
48     });
49   });
50
51   describe('POST /changed', function() {
52     it('with no clients, no files', function(done) {
53       request(this.server)
54         .post('/changed')
55         .expect('Content-Type', /json/)
56         .expect(/"clients":\[\]/)
57         .expect(/"files":\[\]/)
58         .expect(200, done);
59     });
60
61     it('with no clients, some files', function(done) {
62       var data = { clients: [], files: ['cat.css', 'sed.css', 'ack.js'] };
63
64       request(this.server)
65         .post('/changed')
66         // .type('json')
67         .send({ files: data.files })
68         .expect('Content-Type', /json/)
69         .expect(JSON.stringify(data))
70         .expect(200, done);
71     });
72   });
73
74   describe('GET /livereload.js', function() {
75     it('respond with livereload script', function(done) {
76       request(this.server)
77         .get('/livereload.js')
78         .expect(/LiveReload/)
79         .expect(200, done);
80     });
81   });
82
83   describe('GET /kill', function() {
84     it('shutdown the server', function(done) {
85       var srv = this.server;
86       request(srv)
87         .get('/kill')
88         .expect(200, function(err) {
89           if(err) return done(err);
90           assert.ok(!srv._handle);
91           done();
92         });
93     });
94   });
95
96 });