jspec-steventux 3.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.md +763 -0
- data/Manifest +73 -0
- data/README.md +974 -0
- data/Rakefile +44 -0
- data/bin/jspec +178 -0
- data/jspec-steventux.gemspec +44 -0
- data/lib/images/bg.png +0 -0
- data/lib/images/hr.png +0 -0
- data/lib/images/loading.gif +0 -0
- data/lib/images/sprites.bg.png +0 -0
- data/lib/images/sprites.png +0 -0
- data/lib/images/vr.png +0 -0
- data/lib/jspec.css +149 -0
- data/lib/jspec.growl.js +115 -0
- data/lib/jspec.jquery.js +72 -0
- data/lib/jspec.js +1756 -0
- data/lib/jspec.shell.js +39 -0
- data/lib/jspec.timers.js +90 -0
- data/lib/jspec.xhr.js +195 -0
- data/spec/commands/example_command.rb +19 -0
- data/spec/dom.html +33 -0
- data/spec/fixtures/test.html +1 -0
- data/spec/fixtures/test.json +1 -0
- data/spec/fixtures/test.xml +5 -0
- data/spec/node.js +17 -0
- data/spec/rhino.js +23 -0
- data/spec/ruby/bin/init_spec.rb +101 -0
- data/spec/ruby/bin/install_spec.rb +142 -0
- data/spec/ruby/bin/run_spec.rb +0 -0
- data/spec/ruby/bin/shell_spec.rb +13 -0
- data/spec/ruby/bin/spec_helper.rb +8 -0
- data/spec/ruby/bin/update_spec.rb +72 -0
- data/spec/server.html +29 -0
- data/spec/server.rb +2 -0
- data/spec/support/env.js +10118 -0
- data/spec/support/jquery.js +4376 -0
- data/spec/unit/helpers.js +64 -0
- data/spec/unit/spec.fixtures.js +17 -0
- data/spec/unit/spec.grammar-less.js +34 -0
- data/spec/unit/spec.grammar.js +241 -0
- data/spec/unit/spec.jquery.js +178 -0
- data/spec/unit/spec.jquery.xhr.js +84 -0
- data/spec/unit/spec.js +187 -0
- data/spec/unit/spec.matchers.js +577 -0
- data/spec/unit/spec.modules.js +51 -0
- data/spec/unit/spec.shared-behaviors.js +80 -0
- data/spec/unit/spec.utils.js +346 -0
- data/spec/unit/spec.xhr.js +157 -0
- data/src/browsers.rb +294 -0
- data/src/helpers.rb +67 -0
- data/src/installables.rb +229 -0
- data/src/project.rb +341 -0
- data/src/routes.rb +57 -0
- data/src/server.rb +99 -0
- data/support/js.jar +0 -0
- data/templates/default/History.md +5 -0
- data/templates/default/Readme.md +29 -0
- data/templates/default/lib/yourlib.js +2 -0
- data/templates/default/spec/commands/example_command.rb +19 -0
- data/templates/default/spec/dom.html +22 -0
- data/templates/default/spec/node.js +10 -0
- data/templates/default/spec/rhino.js +10 -0
- data/templates/default/spec/server.html +18 -0
- data/templates/default/spec/server.rb +4 -0
- data/templates/default/spec/unit/spec.helper.js +0 -0
- data/templates/default/spec/unit/spec.js +8 -0
- data/templates/rails/commands/example_commands.rb +19 -0
- data/templates/rails/dom.html +22 -0
- data/templates/rails/rhino.js +10 -0
- data/templates/rails/server.html +18 -0
- data/templates/rails/server.rb +4 -0
- data/templates/rails/unit/spec.helper.js +0 -0
- data/templates/rails/unit/spec.js +8 -0
- metadata +185 -0
@@ -0,0 +1,51 @@
|
|
1
|
+
|
2
|
+
describe 'JSpec'
|
3
|
+
describe 'module'
|
4
|
+
describe 'hooks'
|
5
|
+
it 'should run beforeSpec'
|
6
|
+
addedBeforeSpec.should.be_true
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'should run afterSpec'
|
10
|
+
addedAfterSpec.should.be_true
|
11
|
+
end
|
12
|
+
|
13
|
+
describe 'with suites'
|
14
|
+
it 'should run beforeSuite'
|
15
|
+
addedBeforeSuite.should.be_true
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should run afterSuite'
|
20
|
+
addedAfterSuite.should.be_true
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '.hook()'
|
25
|
+
it 'should invoke hooks, returning an array of results'
|
26
|
+
results = hook('randomHook', 'foo', 'bar')
|
27
|
+
results.should.eql [['foo', 'bar']]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe '.utilities'
|
32
|
+
it 'should be merged with the default utilities'
|
33
|
+
doFoo().should.eql 'foo'
|
34
|
+
doBar().should.eql 'bar'
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe '.matchers'
|
39
|
+
it 'should be merged with default matchers'
|
40
|
+
'test'.should.be_foo_bar
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '.DSLs'
|
45
|
+
it 'should be merged with default DSLs'
|
46
|
+
JSpec.DSLs.snake.some_snake_case_stuff().should.be_true
|
47
|
+
JSpec.DSLs.camel.someCamelCaseStuff().should.be_true
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
|
2
|
+
describe 'Shared Behaviors'
|
3
|
+
describe 'User'
|
4
|
+
before
|
5
|
+
User = function(name) { this.name = name }
|
6
|
+
user = new User('joe')
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'should have a name'
|
10
|
+
user.should.have_property 'name'
|
11
|
+
end
|
12
|
+
|
13
|
+
describe 'Administrator'
|
14
|
+
should_behave_like('User')
|
15
|
+
|
16
|
+
before
|
17
|
+
Admin = function(name) { this.name = name }
|
18
|
+
Admin.prototype.may = function(perm){ return true }
|
19
|
+
user = new Admin('tj')
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should have access to all permissions'
|
23
|
+
user.may('edit pages').should.be_true
|
24
|
+
user.may('delete users').should.be_true
|
25
|
+
end
|
26
|
+
|
27
|
+
describe 'Super Administrator'
|
28
|
+
should_behave_like('Administrator')
|
29
|
+
|
30
|
+
before
|
31
|
+
SuperAdmin = function(name) { this.name = name }
|
32
|
+
SuperAdmin.prototype.may = function(perm){ return true }
|
33
|
+
user = new SuperAdmin('tj')
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe 'User with toString()'
|
40
|
+
before
|
41
|
+
user = { toString : function() { return '<User tj>' }}
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'should return <User NAME>'
|
45
|
+
user.toString().should.match(/\<User/)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe 'Manager'
|
50
|
+
should_behave_like('User')
|
51
|
+
should_behave_like('User with toString()')
|
52
|
+
|
53
|
+
before
|
54
|
+
Manager = function(name) { this.name = name }
|
55
|
+
Manager.prototype.may = function(perm){ return perm == 'hire' || perm == 'fire' }
|
56
|
+
Manager.prototype.toString = function(){ return '<User ' + this.name + '>' }
|
57
|
+
user = new Manager('tj')
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'should have access to hire or fire employees'
|
61
|
+
user.may('hire').should.be_true
|
62
|
+
user.may('fire').should.be_true
|
63
|
+
user.may('do anything else').should.be_false
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe 'findSuite'
|
68
|
+
it 'should find a suite by full description'
|
69
|
+
JSpec.findSuite('Shared Behaviors User Administrator').should.be_a JSpec.Suite
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'should find a suite by name'
|
73
|
+
JSpec.findSuite('User').should.be_a JSpec.Suite
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'should return null when not found'
|
77
|
+
JSpec.findSuite('Rawr').should.be_null
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,346 @@
|
|
1
|
+
|
2
|
+
describe 'Utility'
|
3
|
+
describe 'fail()'
|
4
|
+
it 'should fail the current spec'
|
5
|
+
spec = mock_it(function() {
|
6
|
+
fail('I failed!')
|
7
|
+
})
|
8
|
+
spec.should.have_failure_message('I failed!')
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe 'pass()'
|
13
|
+
it 'should pass the current spec'
|
14
|
+
pass('yay')
|
15
|
+
pass('wahoo')
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe 'stubbing'
|
20
|
+
before_each
|
21
|
+
Object.prototype.stubby = function() { return 'Not stubbed' }
|
22
|
+
object = { toString : function() { return '<Im an object>' }}
|
23
|
+
stub(object, 'stubby').and_return('Im stubbed')
|
24
|
+
stub(object, 'toString').and_return('<No im not>')
|
25
|
+
end
|
26
|
+
|
27
|
+
after_each
|
28
|
+
delete Object.prototype.stubby
|
29
|
+
end
|
30
|
+
|
31
|
+
describe 'stub()'
|
32
|
+
it 'should stub :)'
|
33
|
+
object.stubby().should.eql 'Im stubbed'
|
34
|
+
object.toString().should.eql '<No im not>'
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'should allow being called as a core prototype method'
|
38
|
+
foo = { bar : function(){ return 'baz' }}
|
39
|
+
foo.stub('bar').and_return('something else')
|
40
|
+
foo.bar().should.eql 'something else'
|
41
|
+
foo.destub()
|
42
|
+
foo.bar().should.eql 'baz'
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'should stub methods starting with an underscore'
|
46
|
+
object._foo = function(){ return 'bar' }
|
47
|
+
object.stub('_foo').and_return('something else')
|
48
|
+
object._foo().should.eql 'something else'
|
49
|
+
object.destub()
|
50
|
+
object._foo().should.eql 'bar'
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'should stub methods with whitespace'
|
54
|
+
object['foo bar'] = function(){ return 'rawr' }
|
55
|
+
object.stub('foo bar').and_return('baz')
|
56
|
+
object['foo bar']().should.eql 'baz'
|
57
|
+
object.destub()
|
58
|
+
object['foo bar']().should.eql 'rawr'
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'should stub with arbitrary method when no return value is set'
|
62
|
+
object.stub(' super cool ')
|
63
|
+
object[' super cool '].should.be_a Function
|
64
|
+
destub(object)
|
65
|
+
object[' super cool '].should.be_null
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'should stub sub properties using the JSpec grammar'
|
69
|
+
object = { foo : { bar : {}}}
|
70
|
+
object.foo.bar.stub('kitten').and_return('meow')
|
71
|
+
object.foo.bar.kitten().should.eql 'meow'
|
72
|
+
object.foo.bar.destub()
|
73
|
+
object.foo.bar.should.not.respond_to('kitten')
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'should allow functions to be passed as a method'
|
77
|
+
stub(object, 'post').and_return(function(url, callback){
|
78
|
+
if (url == 'http://jspec.info')
|
79
|
+
callback('is awesome')
|
80
|
+
})
|
81
|
+
object.post('http://jspec.info', function(text){
|
82
|
+
text.should_eql 'is awesome'
|
83
|
+
})
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
describe 'destub()'
|
88
|
+
it 'should restore old methods'
|
89
|
+
destub(object, 'toString')
|
90
|
+
destub(object, 'stubby')
|
91
|
+
object.toString().should.eql '<Im an object>'
|
92
|
+
object.stubby().should.eql 'Not stubbed'
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'should restore prototypal methods'
|
96
|
+
Object.prototype.stubby = function() { return 'Oh no im new' }
|
97
|
+
destub(object, 'stubby')
|
98
|
+
object.stubby().should.eql 'Oh no im new'
|
99
|
+
end
|
100
|
+
|
101
|
+
it 'should destub all methods stubbed related to the object passed when no method is given'
|
102
|
+
destub(object)
|
103
|
+
object.toString().should.eql '<Im an object>'
|
104
|
+
object.stubby().should.eql 'Not stubbed'
|
105
|
+
end
|
106
|
+
|
107
|
+
describe 'should restore after each spec'
|
108
|
+
before
|
109
|
+
a = { toString : function(){ return 'Wahoo' }}
|
110
|
+
b = { toString : function(){ return 'Wahhhhhooo' }}
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'should stub'
|
114
|
+
stub(a, 'toString').and_return('Oh no')
|
115
|
+
stub(b, 'toString').and_return('Oh noooo')
|
116
|
+
a.toString().should.eql 'Oh no'
|
117
|
+
b.toString().should.eql 'Oh noooo'
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'should restore'
|
121
|
+
a.toString().should.eql 'Wahoo'
|
122
|
+
b.toString().should.eql 'Wahhhhhooo'
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
describe 'query()'
|
129
|
+
it 'should return a pairs value'
|
130
|
+
query('suite', '?suite=Positive%20specs').should.equal 'Positive specs'
|
131
|
+
end
|
132
|
+
|
133
|
+
it 'should return null when key is not present'
|
134
|
+
query('foo', '?suite=Positive%20specs').should.be_null
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
describe 'strip()'
|
139
|
+
it 'should strip whitespace by default'
|
140
|
+
strip(" foo \n\n").should.equal 'foo'
|
141
|
+
end
|
142
|
+
|
143
|
+
it 'should strip the characters passed'
|
144
|
+
strip('[foo]', '\\[\\]').should.equal 'foo'
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
describe 'each()'
|
149
|
+
it 'should iterate an array'
|
150
|
+
result = []
|
151
|
+
each([1,2,3], function(value){
|
152
|
+
result.push(value)
|
153
|
+
})
|
154
|
+
result.should.eql [1,2,3]
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
describe 'map()'
|
159
|
+
it 'should return an array of mapped values'
|
160
|
+
result = map([1,2,3], function(value){
|
161
|
+
return value * 2
|
162
|
+
})
|
163
|
+
result.should.eql [2,4,6]
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
describe 'inject()'
|
168
|
+
it 'should provide a memo object while iterating, not expecting returning of memo for composits'
|
169
|
+
result = inject([1,2,3], [], function(memo, value){
|
170
|
+
memo.push(value)
|
171
|
+
})
|
172
|
+
result.should.eql [1,2,3]
|
173
|
+
end
|
174
|
+
|
175
|
+
it 'should require returning of memo for scalar variables'
|
176
|
+
result = inject([1,2,3], false, function(memo, value){
|
177
|
+
return memo ? memo : value == 2
|
178
|
+
})
|
179
|
+
result.should.be_true
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
describe 'any()'
|
184
|
+
it 'should return null when no matches are found'
|
185
|
+
result = any('some foo bar', function(value){
|
186
|
+
return value.length > 5
|
187
|
+
})
|
188
|
+
result.should.be_null
|
189
|
+
end
|
190
|
+
|
191
|
+
it 'should return the value of the first matching expression'
|
192
|
+
result = any(['foo', 'some', 'bar'], function(value){
|
193
|
+
return value.length > 3
|
194
|
+
})
|
195
|
+
result.should.eql 'some'
|
196
|
+
end
|
197
|
+
|
198
|
+
describe 'haveStopped'
|
199
|
+
it 'should check if "stop" has been returned by a callback hook'
|
200
|
+
any([true, 'stop'], haveStopped).should.eql 'stop'
|
201
|
+
any([true, true], haveStopped).should.be_null
|
202
|
+
any([true, null], haveStopped).should.be_null
|
203
|
+
end
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
207
|
+
describe 'select()'
|
208
|
+
it 'should return an array of values when the callback evaluates to true'
|
209
|
+
result = select(['some', 'foo', 'bar', 'baz', 'stuff'], function(value){
|
210
|
+
return value.length > 3
|
211
|
+
})
|
212
|
+
result.should.eql ['some', 'stuff']
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
describe 'last()'
|
217
|
+
it 'should return the last element in an array'
|
218
|
+
last(['foo', 'bar']).should.eql 'bar'
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
222
|
+
describe 'toArray()'
|
223
|
+
it 'should convert an arraylike object to an array'
|
224
|
+
func = function(){ return toArray(arguments) }
|
225
|
+
func('foo', 'bar').should.eql ['foo', 'bar']
|
226
|
+
end
|
227
|
+
|
228
|
+
it 'should allow a slice offset'
|
229
|
+
func = function(){ return toArray(arguments, 2) }
|
230
|
+
func('foo', 'bar', 'baz').should.eql ['baz']
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
describe 'does()'
|
235
|
+
it 'should assert without reporting'
|
236
|
+
does('foo', 'eql', 'foo')
|
237
|
+
JSpec.currentSpec.assertions.should.have_length 0
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
describe 'contentsOf()'
|
242
|
+
it 'should return a function body'
|
243
|
+
JSpec.contentsOf(-{ return 'foo' }).should.include 'return', 'foo'
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
247
|
+
describe 'puts()'
|
248
|
+
describe 'with primitive scalar values'
|
249
|
+
it 'should output true'
|
250
|
+
puts(true).should.eql 'true'
|
251
|
+
end
|
252
|
+
|
253
|
+
it 'should output false'
|
254
|
+
puts(false).should.eql 'false'
|
255
|
+
end
|
256
|
+
|
257
|
+
it 'should output null'
|
258
|
+
puts(null).should.eql 'null'
|
259
|
+
end
|
260
|
+
|
261
|
+
it 'should output undefined'
|
262
|
+
puts().should.eql 'undefined'
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
266
|
+
describe 'with strings'
|
267
|
+
it 'should output within double quotes'
|
268
|
+
puts("string").should.eql '"string"'
|
269
|
+
end
|
270
|
+
|
271
|
+
it 'should escape double quotes'
|
272
|
+
puts('he said "hey"').should.eql '"he said \\"hey\\""'
|
273
|
+
end
|
274
|
+
|
275
|
+
it 'should output non-printables as \n \t etc'
|
276
|
+
puts("\n\t\n\t").should.eql '"\\n\\t\\n\\t"'
|
277
|
+
end
|
278
|
+
end
|
279
|
+
|
280
|
+
describe 'with arrays'
|
281
|
+
it 'should output an array literal'
|
282
|
+
puts([1, 2, 3]).should.eql '[ 1, 2, 3 ]'
|
283
|
+
end
|
284
|
+
|
285
|
+
it 'should output nested arrays'
|
286
|
+
puts([1, 2, [ 1, 2 ]]).should.eql '[ 1, 2, [ 1, 2 ] ]'
|
287
|
+
end
|
288
|
+
|
289
|
+
it 'should output empty arrays'
|
290
|
+
puts([]).should.eql '[ ]'
|
291
|
+
end
|
292
|
+
end
|
293
|
+
|
294
|
+
describe 'with integers'
|
295
|
+
it 'should output an integer literal'
|
296
|
+
puts(1).should.eql '1'
|
297
|
+
puts(10).should.eql '10'
|
298
|
+
end
|
299
|
+
end
|
300
|
+
|
301
|
+
describe 'with floats'
|
302
|
+
it 'should output a float literal'
|
303
|
+
puts(1.5).should.eql '1.5'
|
304
|
+
end
|
305
|
+
end
|
306
|
+
|
307
|
+
describe 'with regular expressions'
|
308
|
+
it 'should output a regexp literal'
|
309
|
+
puts(/test/).should.eql '/test/'
|
310
|
+
end
|
311
|
+
|
312
|
+
it 'should output flags as well'
|
313
|
+
puts(/test/gm).should.eql '/test/gm'
|
314
|
+
end
|
315
|
+
end
|
316
|
+
|
317
|
+
describe 'with hashes'
|
318
|
+
it 'should output an object literal'
|
319
|
+
puts({ foo: 'bar' }).should.eql '{ foo: "bar" }'
|
320
|
+
end
|
321
|
+
|
322
|
+
it 'should output nested objects'
|
323
|
+
puts({ foo: { bar: 'baz' }}).should.eql '{ foo: { bar: "baz" } }'
|
324
|
+
end
|
325
|
+
|
326
|
+
it 'should output empty objects'
|
327
|
+
puts({}).should.eql '{ }'
|
328
|
+
end
|
329
|
+
end
|
330
|
+
|
331
|
+
describe 'with an_instance_of'
|
332
|
+
it 'should output an instance of Constructor'
|
333
|
+
object = { an_instance_of: Array }
|
334
|
+
puts(object).should.eql 'an instance of Array'
|
335
|
+
end
|
336
|
+
end
|
337
|
+
|
338
|
+
describe 'circular references'
|
339
|
+
it 'should output <circular reference> with objects'
|
340
|
+
object = { a: 1 }
|
341
|
+
object.b = object
|
342
|
+
puts(object).should.eql '{ a: 1, b: <circular reference> }'
|
343
|
+
end
|
344
|
+
end
|
345
|
+
end
|
346
|
+
end
|