-
Notifications
You must be signed in to change notification settings - Fork 0
/
huddle-test.js
120 lines (100 loc) · 5.11 KB
/
huddle-test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/*global assert: false, refute: false */
var buster = require("buster"),
huddle = require("../lib/huddle.js"),
resources;
buster.testCase('Huddle', {
setUp: function () {
resources = new huddle.Huddle();
},
"Empty input": function () {
resources.read('');
assert.equals(resources.write(), '');
},
"Doctype should be preserved": function () {
resources.read('<!DOCTYPE html>');
assert.equals(resources.write(), '<!DOCTYPE html>');
},
"Multi line doctype": function () {
resources.read('<!DOCTYPE html line1\nline2>');
assert.equals(resources.write(), '<!DOCTYPE html line1\nline2>');
},
"Singleton tag": function () {
resources.read('<div/>');
assert.equals(resources.write(), '<div/>');
},
"Strip whitespace": function () {
resources.read(' <div/>');
assert.equals(resources.write(), '<div/>');
},
"Preserve whitespace": function () {
resources = new huddle.Huddle({ignoreWhitespace: false});
resources.read(' <div/>');
assert.equals(resources.write(), ' <div/>');
},
"Open/Close tag without body": function () {
resources.read('<div></div>');
assert.equals(resources.write(), '<div/>');
},
"Open/Close tag with body": function () {
resources.read('<div>Test</div>');
assert.equals(resources.write(), '<div>Test</div>');
},
"Tag with attributes": function () {
resources.read('<div a1="v1" a2="v2"/>');
assert.equals(resources.write(), '<div a1="v1" a2="v2"/>');
},
"Stylesheet link tag": function () {
resources.read('<link href="a.css" rel="stylesheet" type="text/css"/>');
assert.equals(resources.write(), '<link href="app.css" rel="stylesheet" type="text/css"/>');
assert.equals(resources.getStylesheets()['app']['a.css'], 'text/css');
},
"Multiple stylesheet link tags": function () {
resources.read('<link href="a.css" rel="stylesheet" type="text/css"/><link href="b.less" rel="stylesheet/less" type="text/css"/>');
assert.equals(resources.write(), '<link href="app.css" rel="stylesheet" type="text/css"/>');
assert.equals(resources.getStylesheets()['app']['a.css'], 'text/css');
assert.equals(resources.getStylesheets()['app']['b.less'], 'text/less');
},
"Stylesheet with module": function () {
resources.read('<link href="a.css" rel="stylesheet" type="text/css" data-module="mymod"/>');
assert.equals(resources.write(), '<link href="mymod.css" rel="stylesheet" type="text/css"/>');
assert.equals(resources.getStylesheets()['mymod']['a.css'], 'text/css');
refute(resources.getStylesheets()['app']);
},
"Multiple stylesheet link tags with modules": function () {
resources.read('<link href="a.css" rel="stylesheet" type="text/css" data-module="mylib"/><link href="b.less" rel="stylesheet/less" type="text/css"/>');
assert.equals(resources.write(), '<link href="mylib.css" rel="stylesheet" type="text/css"/><link href="app.css" rel="stylesheet" type="text/css"/>');
assert.equals(resources.getStylesheets()['mylib']['a.css'], 'text/css');
assert.equals(resources.getStylesheets()['app']['b.less'], 'text/less');
},
"Drop stylesheet link tag": function () {
resources.read('<link href="a.css" rel="stylesheet" type="text/css" data-drop=""/>');
assert.equals(resources.write(), '');
refute(resources.getStylesheets()['app']);
},
"Include remote stylesheet": function () {
resources.read('<link href="a.css" rel="stylesheet" type="text/css" data-remote="b.css"/>');
assert.equals(resources.write(), '<link href="b.css" rel="stylesheet" type="text/css"/>');
refute(resources.getStylesheets()['app']);
},
"Script tag": function () {
resources.read('<script type="text/javascript" src="a.js"></script>');
assert.equals(resources.write(), '<script type="text/javascript" src="app.js"></script>');
assert.equals(resources.getScripts()['app']['a.js'], 'text/javascript');
},
"Multiple script tags with modules": function () {
resources.read('<script type="text/javascript" src="a.js"></script><script type="text/javascript" src="b.js" data-module="mylib"></script>');
assert.equals(resources.write(), '<script type="text/javascript" src="app.js"></script><script type="text/javascript" src="mylib.js"></script>');
assert.equals(resources.getScripts()['app']['a.js'], 'text/javascript');
assert.equals(resources.getScripts()['mylib']['b.js'], 'text/javascript');
},
"Drop script tag": function () {
resources.read('<script type="text/javascript" src="a.js" data-drop=""/>');
assert.equals(resources.write(), '');
refute(resources.getScripts()['app']);
},
"Include remote scripts": function () {
resources.read('<script type="text/javascript" src="a.js" data-remote="b.js"/>');
assert.equals(resources.write(), '<script type="text/javascript" src="b.js"></script>');
refute(resources.getScripts()['app']);
}
});