jasmine-jquery-rails 1.4.2 → 1.5.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/jasmine-jquery-rails/version.rb +1 -1
- data/vendor/assets/javascripts/jasmine-jquery.js +134 -22
- metadata +7 -15
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e8b3556accc34ab3a94e5ab912d878adbef78e6e
|
4
|
+
data.tar.gz: 58ab7da7878cbe9ce2ea0c575b4bdde770890baf
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 06a87ba4c95ee47b4824f0d0da470246785a2b00cfe61d47ff36cd85cb11687a08c9458967a46d79c54b30ef08217a62360500c7cdc5ac0d4667e3569bcaf588
|
7
|
+
data.tar.gz: 230360dbbe128625f002ca040b4d148108c9bab61e1f1092502b23cacd70c5e648c59823a3465f9f2c1681b534918b968534838054a960087421a4b8ceba0545
|
@@ -1,3 +1,31 @@
|
|
1
|
+
/*!
|
2
|
+
Jasmine-jQuery: a set of jQuery helpers for Jasmine tests.
|
3
|
+
|
4
|
+
Version 1.5.3
|
5
|
+
|
6
|
+
https://github.com/velesin/jasmine-jquery
|
7
|
+
|
8
|
+
Copyright (c) 2010-2013 Wojciech Zawistowski, Travis Jeffery
|
9
|
+
|
10
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
11
|
+
a copy of this software and associated documentation files (the
|
12
|
+
"Software"), to deal in the Software without restriction, including
|
13
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
14
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
15
|
+
permit persons to whom the Software is furnished to do so, subject to
|
16
|
+
the following conditions:
|
17
|
+
|
18
|
+
The above copyright notice and this permission notice shall be
|
19
|
+
included in all copies or substantial portions of the Software.
|
20
|
+
|
21
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
22
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
23
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
24
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
25
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
26
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
27
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
28
|
+
*/
|
1
29
|
var readFixtures = function() {
|
2
30
|
return jasmine.getFixtures().proxyCallTo_('read', arguments)
|
3
31
|
}
|
@@ -114,27 +142,27 @@ jasmine.Fixtures.prototype.clearCache = function() {
|
|
114
142
|
}
|
115
143
|
|
116
144
|
jasmine.Fixtures.prototype.cleanUp = function() {
|
117
|
-
|
145
|
+
$('#' + this.containerId).remove()
|
118
146
|
}
|
119
147
|
|
120
148
|
jasmine.Fixtures.prototype.sandbox = function(attributes) {
|
121
149
|
var attributesToSet = attributes || {}
|
122
|
-
return
|
150
|
+
return $('<div id="sandbox" />').attr(attributesToSet)
|
123
151
|
}
|
124
152
|
|
125
153
|
jasmine.Fixtures.prototype.createContainer_ = function(html) {
|
126
154
|
var container
|
127
|
-
if(html instanceof
|
128
|
-
container =
|
155
|
+
if(html instanceof $) {
|
156
|
+
container = $('<div id="' + this.containerId + '" />')
|
129
157
|
container.html(html)
|
130
158
|
} else {
|
131
159
|
container = '<div id="' + this.containerId + '">' + html + '</div>'
|
132
160
|
}
|
133
|
-
|
161
|
+
$(document.body).append(container)
|
134
162
|
}
|
135
163
|
|
136
164
|
jasmine.Fixtures.prototype.addToContainer_ = function(html){
|
137
|
-
var container =
|
165
|
+
var container = $(document.body).find('#'+this.containerId).append(html)
|
138
166
|
if(!container.length){
|
139
167
|
this.createContainer_(html)
|
140
168
|
}
|
@@ -149,7 +177,7 @@ jasmine.Fixtures.prototype.getFixtureHtml_ = function(url) {
|
|
149
177
|
|
150
178
|
jasmine.Fixtures.prototype.loadFixtureIntoCache_ = function(relativeUrl) {
|
151
179
|
var url = this.makeFixtureUrl_(relativeUrl)
|
152
|
-
var request =
|
180
|
+
var request = $.ajax({
|
153
181
|
type: "GET",
|
154
182
|
url: url + "?" + new Date().getTime(),
|
155
183
|
async: false
|
@@ -201,11 +229,12 @@ jasmine.StyleFixtures.prototype.cleanUp = function() {
|
|
201
229
|
}
|
202
230
|
|
203
231
|
jasmine.StyleFixtures.prototype.createStyle_ = function(html) {
|
204
|
-
var
|
232
|
+
var styleText = $('<div></div>').html(html).text(),
|
233
|
+
style = $('<style>' + styleText + '</style>')
|
205
234
|
|
206
235
|
this.fixturesNodes_.push(style)
|
207
236
|
|
208
|
-
|
237
|
+
$('head').append(style)
|
209
238
|
}
|
210
239
|
|
211
240
|
jasmine.StyleFixtures.prototype.clearCache = jasmine.Fixtures.prototype.clearCache
|
@@ -220,8 +249,6 @@ jasmine.StyleFixtures.prototype.makeFixtureUrl_ = jasmine.Fixtures.prototype.mak
|
|
220
249
|
|
221
250
|
jasmine.StyleFixtures.prototype.proxyCallTo_ = jasmine.Fixtures.prototype.proxyCallTo_
|
222
251
|
|
223
|
-
/** jasmine json fixtures */
|
224
|
-
|
225
252
|
jasmine.getJSONFixtures = function() {
|
226
253
|
return jasmine.currentJSONFixtures_ = jasmine.currentJSONFixtures_ || new jasmine.JSONFixtures()
|
227
254
|
}
|
@@ -248,7 +275,7 @@ jasmine.JSONFixtures.prototype.clearCache = function() {
|
|
248
275
|
this.fixturesCache_ = {}
|
249
276
|
}
|
250
277
|
|
251
|
-
jasmine.JSONFixtures.prototype.getFixtureData_ = function(url) {
|
278
|
+
jasmine.JSONFixtures.prototype.getFixtureData_ = function(url) {
|
252
279
|
this.loadFixtureIntoCache_(url)
|
253
280
|
return this.fixturesCache_[url]
|
254
281
|
}
|
@@ -256,7 +283,7 @@ jasmine.JSONFixtures.prototype.getFixtureData_ = function(url) {
|
|
256
283
|
jasmine.JSONFixtures.prototype.loadFixtureIntoCache_ = function(relativeUrl) {
|
257
284
|
var self = this
|
258
285
|
var url = this.fixturesPath.match('/$') ? this.fixturesPath + relativeUrl : this.fixturesPath + '/' + relativeUrl
|
259
|
-
|
286
|
+
$.ajax({
|
260
287
|
async: false, // must be synchronous to guarantee that no tests are run before fixture is loaded
|
261
288
|
cache: false,
|
262
289
|
dataType: 'json',
|
@@ -277,13 +304,13 @@ jasmine.JSONFixtures.prototype.proxyCallTo_ = function(methodName, passedArgumen
|
|
277
304
|
jasmine.JQuery = function() {}
|
278
305
|
|
279
306
|
jasmine.JQuery.browserTagCaseIndependentHtml = function(html) {
|
280
|
-
return
|
307
|
+
return $('<div/>').append(html).html()
|
281
308
|
}
|
282
309
|
|
283
310
|
jasmine.JQuery.elementToString = function(element) {
|
284
311
|
var domEl = $(element).get(0)
|
285
312
|
if (domEl == undefined || domEl.cloneNode)
|
286
|
-
return
|
313
|
+
return $('<div />').append($(element).clone()).html()
|
287
314
|
else
|
288
315
|
return element.toString()
|
289
316
|
}
|
@@ -299,9 +326,9 @@ jasmine.JQuery.matchersClass = {}
|
|
299
326
|
namespace.events = {
|
300
327
|
spyOn: function(selector, eventName) {
|
301
328
|
var handler = function(e) {
|
302
|
-
data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)] =
|
329
|
+
data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)] = jasmine.util.argsToArray(arguments)
|
303
330
|
}
|
304
|
-
|
331
|
+
$(selector).on(eventName, handler)
|
305
332
|
data.handlers.push(handler)
|
306
333
|
return {
|
307
334
|
selector: selector,
|
@@ -313,12 +340,38 @@ jasmine.JQuery.matchersClass = {}
|
|
313
340
|
}
|
314
341
|
},
|
315
342
|
|
343
|
+
args: function(selector, eventName) {
|
344
|
+
var actualArgs = data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)];
|
345
|
+
|
346
|
+
if (!actualArgs) {
|
347
|
+
throw "There is no spy for " + eventName + " on " + selector.toString() + ". Make sure to create a spy using spyOnEvent.";
|
348
|
+
}
|
349
|
+
|
350
|
+
return actualArgs;
|
351
|
+
},
|
352
|
+
|
316
353
|
wasTriggered: function(selector, eventName) {
|
317
354
|
return !!(data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)])
|
318
355
|
},
|
319
356
|
|
357
|
+
wasTriggeredWith: function(selector, eventName, expectedArgs, env) {
|
358
|
+
var actualArgs = jasmine.JQuery.events.args(selector, eventName).slice(1);
|
359
|
+
if (Object.prototype.toString.call(expectedArgs) !== '[object Array]') {
|
360
|
+
actualArgs = actualArgs[0];
|
361
|
+
}
|
362
|
+
return env.equals_(expectedArgs, actualArgs);
|
363
|
+
},
|
364
|
+
|
320
365
|
wasPrevented: function(selector, eventName) {
|
321
|
-
|
366
|
+
var args = data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)],
|
367
|
+
e = args ? args[0] : undefined;
|
368
|
+
return e && e.isDefaultPrevented()
|
369
|
+
},
|
370
|
+
|
371
|
+
wasStopped: function(selector, eventName) {
|
372
|
+
var args = data.spiedEvents[jasmine.spiedEventsKey(selector, eventName)],
|
373
|
+
e = args ? args[0] : undefined;
|
374
|
+
return e && e.isPropagationStopped()
|
322
375
|
},
|
323
376
|
|
324
377
|
cleanUp: function() {
|
@@ -365,6 +418,10 @@ jasmine.JQuery.matchersClass = {}
|
|
365
418
|
return $(document).find(this.actual).length
|
366
419
|
},
|
367
420
|
|
421
|
+
toHaveLength: function(length) {
|
422
|
+
return this.actual.length === length
|
423
|
+
},
|
424
|
+
|
368
425
|
toHaveAttr: function(attributeName, expectedAttributeValue) {
|
369
426
|
return hasProperty(this.actual.attr(attributeName), expectedAttributeValue)
|
370
427
|
},
|
@@ -389,15 +446,24 @@ jasmine.JQuery.matchersClass = {}
|
|
389
446
|
|
390
447
|
toHaveText: function(text) {
|
391
448
|
var trimmedText = $.trim(this.actual.text())
|
392
|
-
if (text &&
|
449
|
+
if (text && $.isFunction(text.test)) {
|
393
450
|
return text.test(trimmedText)
|
394
451
|
} else {
|
395
452
|
return trimmedText == text
|
396
453
|
}
|
397
454
|
},
|
398
455
|
|
456
|
+
toContainText: function(text) {
|
457
|
+
var trimmedText = $.trim(this.actual.text())
|
458
|
+
if (text && $.isFunction(text.test)) {
|
459
|
+
return text.test(trimmedText)
|
460
|
+
} else {
|
461
|
+
return trimmedText.indexOf(text) != -1;
|
462
|
+
}
|
463
|
+
},
|
464
|
+
|
399
465
|
toHaveValue: function(value) {
|
400
|
-
return this.actual.val()
|
466
|
+
return this.actual.val() === value
|
401
467
|
},
|
402
468
|
|
403
469
|
toHaveData: function(key, expectedValue) {
|
@@ -417,7 +483,7 @@ jasmine.JQuery.matchersClass = {}
|
|
417
483
|
},
|
418
484
|
|
419
485
|
toBeFocused: function(selector) {
|
420
|
-
return this.actual.
|
486
|
+
return this.actual[0] === this.actual[0].ownerDocument.activeElement
|
421
487
|
},
|
422
488
|
|
423
489
|
toHandle: function(event) {
|
@@ -465,7 +531,7 @@ jasmine.JQuery.matchersClass = {}
|
|
465
531
|
|
466
532
|
jasmine.JQuery.matchersClass[methodName] = function() {
|
467
533
|
if (this.actual
|
468
|
-
&& (this.actual instanceof
|
534
|
+
&& (this.actual instanceof $
|
469
535
|
|| jasmine.isDomNode(this.actual))) {
|
470
536
|
this.actual = $(this.actual)
|
471
537
|
var result = jQueryMatchers[methodName].apply(this, arguments)
|
@@ -514,6 +580,28 @@ beforeEach(function() {
|
|
514
580
|
return jasmine.JQuery.events.wasTriggered(selector, eventName)
|
515
581
|
}
|
516
582
|
})
|
583
|
+
this.addMatchers({
|
584
|
+
toHaveBeenTriggeredOnAndWith: function() {
|
585
|
+
var selector = arguments[0],
|
586
|
+
expectedArgs = arguments[1],
|
587
|
+
wasTriggered = jasmine.JQuery.events.wasTriggered(selector, this.actual);
|
588
|
+
this.message = function() {
|
589
|
+
if (wasTriggered) {
|
590
|
+
var actualArgs = jasmine.JQuery.events.args(selector, this.actual, expectedArgs)[1];
|
591
|
+
return [
|
592
|
+
"Expected event " + this.actual + " to have been triggered with " + jasmine.pp(expectedArgs) + " but it was triggered with " + jasmine.pp(actualArgs),
|
593
|
+
"Expected event " + this.actual + " not to have been triggered with " + jasmine.pp(expectedArgs) + " but it was triggered with " + jasmine.pp(actualArgs)
|
594
|
+
]
|
595
|
+
} else {
|
596
|
+
return [
|
597
|
+
"Expected event " + this.actual + " to have been triggered on " + selector,
|
598
|
+
"Expected event " + this.actual + " not to have been triggered on " + selector
|
599
|
+
]
|
600
|
+
}
|
601
|
+
}
|
602
|
+
return wasTriggered && jasmine.JQuery.events.wasTriggeredWith(selector, this.actual, expectedArgs, this.env);
|
603
|
+
}
|
604
|
+
})
|
517
605
|
this.addMatchers({
|
518
606
|
toHaveBeenPreventedOn: function(selector) {
|
519
607
|
this.message = function() {
|
@@ -538,6 +626,30 @@ beforeEach(function() {
|
|
538
626
|
return jasmine.JQuery.events.wasPrevented(selector, eventName)
|
539
627
|
}
|
540
628
|
})
|
629
|
+
this.addMatchers({
|
630
|
+
toHaveBeenStoppedOn: function(selector) {
|
631
|
+
this.message = function() {
|
632
|
+
return [
|
633
|
+
"Expected event " + this.actual + " to have been stopped on " + selector,
|
634
|
+
"Expected event " + this.actual + " not to have been stopped on " + selector
|
635
|
+
]
|
636
|
+
}
|
637
|
+
return jasmine.JQuery.events.wasStopped(selector, this.actual)
|
638
|
+
}
|
639
|
+
})
|
640
|
+
this.addMatchers({
|
641
|
+
toHaveBeenStopped: function() {
|
642
|
+
var eventName = this.actual.eventName,
|
643
|
+
selector = this.actual.selector
|
644
|
+
this.message = function() {
|
645
|
+
return [
|
646
|
+
"Expected event " + eventName + " to have been stopped on " + selector,
|
647
|
+
"Expected event " + eventName + " not to have been stopped on " + selector
|
648
|
+
]
|
649
|
+
}
|
650
|
+
return jasmine.JQuery.events.wasStopped(selector, eventName)
|
651
|
+
}
|
652
|
+
})
|
541
653
|
})
|
542
654
|
|
543
655
|
afterEach(function() {
|
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jasmine-jquery-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.5.3
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Travis Jeffery
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-07-17 00:00:00.000000000 Z
|
13
12
|
dependencies: []
|
14
13
|
description:
|
15
14
|
email:
|
@@ -30,32 +29,25 @@ files:
|
|
30
29
|
- vendor/assets/javascripts/jasmine-jquery.js
|
31
30
|
homepage: http://github.com/travisjeffery/jasmine-jquery-rails
|
32
31
|
licenses: []
|
32
|
+
metadata: {}
|
33
33
|
post_install_message:
|
34
34
|
rdoc_options: []
|
35
35
|
require_paths:
|
36
36
|
- lib
|
37
37
|
required_ruby_version: !ruby/object:Gem::Requirement
|
38
|
-
none: false
|
39
38
|
requirements:
|
40
|
-
- -
|
39
|
+
- - '>='
|
41
40
|
- !ruby/object:Gem::Version
|
42
41
|
version: '0'
|
43
|
-
segments:
|
44
|
-
- 0
|
45
|
-
hash: 270161812332261063
|
46
42
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
47
|
-
none: false
|
48
43
|
requirements:
|
49
|
-
- -
|
44
|
+
- - '>='
|
50
45
|
- !ruby/object:Gem::Version
|
51
46
|
version: '0'
|
52
|
-
segments:
|
53
|
-
- 0
|
54
|
-
hash: 270161812332261063
|
55
47
|
requirements: []
|
56
48
|
rubyforge_project:
|
57
|
-
rubygems_version:
|
49
|
+
rubygems_version: 2.0.3
|
58
50
|
signing_key:
|
59
|
-
specification_version:
|
51
|
+
specification_version: 4
|
60
52
|
summary: jasmine-jquery via asset pipeline
|
61
53
|
test_files: []
|