jasminerice 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +12 -2
- data/README.md +29 -3
- data/app/assets/javascripts/jasminerice.js.coffee +5 -1
- data/app/controllers/jasminerice/spec_controller.rb +5 -0
- data/app/views/jasminerice/spec/index.html.haml +2 -2
- data/config/initializers/jasminerice.rb +1 -1
- data/config/routes.rb +3 -5
- data/jasminerice.gemspec +2 -1
- data/lib/jasminerice.rb +0 -2
- data/vendor/assets/javascripts/jasmine.js +255 -197
- metadata +21 -4
data/Gemfile.lock
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
jasminerice (0.0.
|
4
|
+
jasminerice (0.0.9)
|
5
|
+
coffee-rails
|
5
6
|
haml
|
6
7
|
|
7
8
|
GEM
|
@@ -40,9 +41,18 @@ GEM
|
|
40
41
|
bcrypt-ruby (3.0.1)
|
41
42
|
bcrypt-ruby (3.0.1-java)
|
42
43
|
builder (3.0.0)
|
44
|
+
coffee-rails (3.1.1)
|
45
|
+
coffee-script (>= 2.2.0)
|
46
|
+
railties (~> 3.1.0)
|
47
|
+
coffee-script (2.2.0)
|
48
|
+
coffee-script-source
|
49
|
+
execjs
|
50
|
+
coffee-script-source (1.3.3)
|
43
51
|
columnize (0.3.4)
|
44
52
|
erubis (2.7.0)
|
45
|
-
|
53
|
+
execjs (1.4.0)
|
54
|
+
multi_json (~> 1.0)
|
55
|
+
haml (3.1.4)
|
46
56
|
hike (1.2.1)
|
47
57
|
i18n (0.6.0)
|
48
58
|
json (1.6.1)
|
data/README.md
CHANGED
@@ -18,7 +18,7 @@ This is a gem specifically for Rails 3.1. Just include it in
|
|
18
18
|
your `Gemfile`:
|
19
19
|
|
20
20
|
```ruby
|
21
|
-
group :development, :test
|
21
|
+
group :development, :test do
|
22
22
|
gem "jasminerice"
|
23
23
|
end
|
24
24
|
```
|
@@ -48,7 +48,7 @@ The Rails 3.1 asset pipeline using [Sprockets](https://github.com/sstephenson/sp
|
|
48
48
|
and [Tilt](https://github.com/rtomayko/tilt) ensure conversion.
|
49
49
|
|
50
50
|
As well you can use the `#require` dependency mechanisms in your specs to
|
51
|
-
pull dependencies. Here's an example `spec/javascripts/
|
51
|
+
pull dependencies. Here's an example `spec/javascripts/foo_spec.js.coffee`:
|
52
52
|
|
53
53
|
```coffeescript
|
54
54
|
#= require foo
|
@@ -63,7 +63,7 @@ describe "Bar", ->
|
|
63
63
|
it "it is not foo", ->
|
64
64
|
v = new Bar()
|
65
65
|
expect(v.foo()).toEqual(false)
|
66
|
-
```
|
66
|
+
```
|
67
67
|
|
68
68
|
### Stylesheets
|
69
69
|
|
@@ -95,6 +95,9 @@ available in your specs, you can load the `baz` fixture in your spec with:
|
|
95
95
|
loadFixtures 'baz'
|
96
96
|
```
|
97
97
|
|
98
|
+
### Helper Methods
|
99
|
+
You can declare Jasminerice::HelperMethods (perhaps put inside lib/) to make helpers available to jasminerice fixtures.
|
100
|
+
|
98
101
|
### Start server
|
99
102
|
|
100
103
|
Now start your server
|
@@ -111,6 +114,29 @@ http://localhost:3000/jasmine
|
|
111
114
|
|
112
115
|
and there are your specs.
|
113
116
|
|
117
|
+
### Compatibility with Require.js
|
118
|
+
|
119
|
+
If you use [Require.js](http://requirejs.org/) in your project and need to load your
|
120
|
+
modules in your jasmine specs, there is an option to prevent jasminerice from automatically
|
121
|
+
executing the test runner before the modules are defined. This enables you to start the
|
122
|
+
execution manually whenever you want in your `spec/javascripts/spec.js.coffee` file:
|
123
|
+
|
124
|
+
#= require your/specs/and/other/stuff
|
125
|
+
# at the end of this file add:
|
126
|
+
|
127
|
+
jasmine.rice.autoExecute = false
|
128
|
+
|
129
|
+
define 'jasmine.waitsfor.requirejs', ->
|
130
|
+
require ['jasmine.waitsfor.requirejs'], ->
|
131
|
+
jasmine.getEnv().execute()
|
132
|
+
|
133
|
+
The shown example defines a dummy module in require.js that is required immediately on the next
|
134
|
+
line. This is a simple hack to wait until require.js has initialized all modules and start the
|
135
|
+
jasmine runner after that.
|
136
|
+
|
137
|
+
Of course you can use `jasmine.rice.autoExecute = false` also for all other cases where you need
|
138
|
+
to control when your specs should be executed!
|
139
|
+
|
114
140
|
Author
|
115
141
|
------
|
116
142
|
|
@@ -17,8 +17,12 @@
|
|
17
17
|
jasmineEnv.specFilter = (spec) ->
|
18
18
|
trivialReporter.specFilter spec
|
19
19
|
|
20
|
+
jasmine.rice = {}
|
21
|
+
jasmine.rice.autoExecute = true
|
22
|
+
|
20
23
|
currentWindowOnload = window.onload
|
21
24
|
window.onload = ->
|
22
25
|
currentWindowOnload() if currentWindowOnload
|
23
|
-
|
26
|
+
if jasmine.rice.autoExecute
|
27
|
+
execJasmine()
|
24
28
|
)()
|
@@ -3,7 +3,7 @@
|
|
3
3
|
%title Jasmine Spec Runner
|
4
4
|
= stylesheet_link_tag "jasmine"
|
5
5
|
= stylesheet_link_tag "spec"
|
6
|
-
= javascript_include_tag "jasminerice"
|
7
|
-
= javascript_include_tag "spec"
|
6
|
+
= javascript_include_tag "jasminerice"
|
7
|
+
= javascript_include_tag "spec"
|
8
8
|
= csrf_meta_tags
|
9
9
|
%body
|
@@ -1 +1 @@
|
|
1
|
-
Rails.application.config.assets.paths <<
|
1
|
+
Rails.application.config.assets.paths << Rails.root.join("spec", "javascripts") << Rails.root.join("spec", "stylesheets")
|
data/config/routes.rb
CHANGED
@@ -1,14 +1,12 @@
|
|
1
1
|
Jasminerice::Engine.routes.draw do
|
2
2
|
resources :spec, :controller => 'spec', :only => [:index] do
|
3
|
-
get "fixtures
|
3
|
+
get "fixtures/*filename", :action => :fixtures
|
4
4
|
end
|
5
|
-
match "fixtures
|
5
|
+
match "fixtures/*filename", :to => "spec#fixtures"
|
6
6
|
|
7
7
|
root :to => "spec#index"
|
8
8
|
end
|
9
9
|
|
10
10
|
Rails.application.routes.draw do
|
11
|
-
|
12
|
-
mount Jasminerice::Engine => "/jasmine"
|
13
|
-
end
|
11
|
+
mount Jasminerice::Engine => "/jasmine"
|
14
12
|
end
|
data/jasminerice.gemspec
CHANGED
@@ -6,7 +6,8 @@ Gem::Specification.new do |s|
|
|
6
6
|
s.description = "Full support for the Rails 3.1 asset pipeline when bdd'ing your coffeescript or javascript using jasmine"
|
7
7
|
s.files = `git ls-files`.split "\n"
|
8
8
|
s.authors = ["Brad Phelan"]
|
9
|
-
s.version = "0.0.
|
9
|
+
s.version = "0.0.9"
|
10
10
|
s.platform = Gem::Platform::RUBY
|
11
11
|
s.add_dependency( 'haml' )
|
12
|
+
s.add_dependency( 'coffee-rails' )
|
12
13
|
end
|
data/lib/jasminerice.rb
CHANGED
@@ -196,6 +196,21 @@ jasmine.any = function(clazz) {
|
|
196
196
|
return new jasmine.Matchers.Any(clazz);
|
197
197
|
};
|
198
198
|
|
199
|
+
/**
|
200
|
+
* Returns a matchable subset of a JSON object. For use in expectations when you don't care about all of the
|
201
|
+
* attributes on the object.
|
202
|
+
*
|
203
|
+
* @example
|
204
|
+
* // don't care about any other attributes than foo.
|
205
|
+
* expect(mySpy).toHaveBeenCalledWith(jasmine.objectContaining({foo: "bar"});
|
206
|
+
*
|
207
|
+
* @param sample {Object} sample
|
208
|
+
* @returns matchable object for the sample
|
209
|
+
*/
|
210
|
+
jasmine.objectContaining = function (sample) {
|
211
|
+
return new jasmine.Matchers.ObjectContaining(sample);
|
212
|
+
};
|
213
|
+
|
199
214
|
/**
|
200
215
|
* Jasmine Spies are test doubles that can act as stubs, spies, fakes or when used in an expecation, mocks.
|
201
216
|
*
|
@@ -735,12 +750,17 @@ jasmine.Env.prototype.version = function () {
|
|
735
750
|
* @returns string containing jasmine version build info, if set.
|
736
751
|
*/
|
737
752
|
jasmine.Env.prototype.versionString = function() {
|
738
|
-
if (jasmine.version_) {
|
739
|
-
var version = this.version();
|
740
|
-
return version.major + "." + version.minor + "." + version.build + " revision " + version.revision;
|
741
|
-
} else {
|
753
|
+
if (!jasmine.version_) {
|
742
754
|
return "version unknown";
|
743
755
|
}
|
756
|
+
|
757
|
+
var version = this.version();
|
758
|
+
var versionString = version.major + "." + version.minor + "." + version.build;
|
759
|
+
if (version.release_candidate) {
|
760
|
+
versionString += ".rc" + version.release_candidate;
|
761
|
+
}
|
762
|
+
versionString += " revision " + version.revision;
|
763
|
+
return versionString;
|
744
764
|
};
|
745
765
|
|
746
766
|
/**
|
@@ -909,11 +929,19 @@ jasmine.Env.prototype.equals_ = function(a, b, mismatchKeys, mismatchValues) {
|
|
909
929
|
return a.getTime() == b.getTime();
|
910
930
|
}
|
911
931
|
|
912
|
-
if (a
|
932
|
+
if (a.jasmineMatches) {
|
933
|
+
return a.jasmineMatches(b);
|
934
|
+
}
|
935
|
+
|
936
|
+
if (b.jasmineMatches) {
|
937
|
+
return b.jasmineMatches(a);
|
938
|
+
}
|
939
|
+
|
940
|
+
if (a instanceof jasmine.Matchers.ObjectContaining) {
|
913
941
|
return a.matches(b);
|
914
942
|
}
|
915
943
|
|
916
|
-
if (b instanceof jasmine.Matchers.
|
944
|
+
if (b instanceof jasmine.Matchers.ObjectContaining) {
|
917
945
|
return b.matches(a);
|
918
946
|
}
|
919
947
|
|
@@ -1207,7 +1235,7 @@ jasmine.Matchers.prototype.toEqual = function(expected) {
|
|
1207
1235
|
/**
|
1208
1236
|
* toNotEqual: compares the actual to the expected using the ! of jasmine.Matchers.toEqual
|
1209
1237
|
* @param expected
|
1210
|
-
* @deprecated as of 1.0. Use not.
|
1238
|
+
* @deprecated as of 1.0. Use not.toEqual() instead.
|
1211
1239
|
*/
|
1212
1240
|
jasmine.Matchers.prototype.toNotEqual = function(expected) {
|
1213
1241
|
return !this.env.equals_(this.actual, expected);
|
@@ -1380,7 +1408,7 @@ jasmine.Matchers.prototype.toContain = function(expected) {
|
|
1380
1408
|
* Matcher that checks that the expected item is NOT an element in the actual Array.
|
1381
1409
|
*
|
1382
1410
|
* @param {Object} expected
|
1383
|
-
* @deprecated as of 1.0. Use not.
|
1411
|
+
* @deprecated as of 1.0. Use not.toContain() instead.
|
1384
1412
|
*/
|
1385
1413
|
jasmine.Matchers.prototype.toNotContain = function(expected) {
|
1386
1414
|
return !this.env.contains_(this.actual, expected);
|
@@ -1448,7 +1476,7 @@ jasmine.Matchers.Any = function(expectedClass) {
|
|
1448
1476
|
this.expectedClass = expectedClass;
|
1449
1477
|
};
|
1450
1478
|
|
1451
|
-
jasmine.Matchers.Any.prototype.
|
1479
|
+
jasmine.Matchers.Any.prototype.jasmineMatches = function(other) {
|
1452
1480
|
if (this.expectedClass == String) {
|
1453
1481
|
return typeof other == 'string' || other instanceof String;
|
1454
1482
|
}
|
@@ -1468,10 +1496,222 @@ jasmine.Matchers.Any.prototype.matches = function(other) {
|
|
1468
1496
|
return other instanceof this.expectedClass;
|
1469
1497
|
};
|
1470
1498
|
|
1471
|
-
jasmine.Matchers.Any.prototype.
|
1499
|
+
jasmine.Matchers.Any.prototype.jasmineToString = function() {
|
1472
1500
|
return '<jasmine.any(' + this.expectedClass + ')>';
|
1473
1501
|
};
|
1474
1502
|
|
1503
|
+
jasmine.Matchers.ObjectContaining = function (sample) {
|
1504
|
+
this.sample = sample;
|
1505
|
+
};
|
1506
|
+
|
1507
|
+
jasmine.Matchers.ObjectContaining.prototype.jasmineMatches = function(other, mismatchKeys, mismatchValues) {
|
1508
|
+
mismatchKeys = mismatchKeys || [];
|
1509
|
+
mismatchValues = mismatchValues || [];
|
1510
|
+
|
1511
|
+
var env = jasmine.getEnv();
|
1512
|
+
|
1513
|
+
var hasKey = function(obj, keyName) {
|
1514
|
+
return obj != null && obj[keyName] !== jasmine.undefined;
|
1515
|
+
};
|
1516
|
+
|
1517
|
+
for (var property in this.sample) {
|
1518
|
+
if (!hasKey(other, property) && hasKey(this.sample, property)) {
|
1519
|
+
mismatchKeys.push("expected has key '" + property + "', but missing from actual.");
|
1520
|
+
}
|
1521
|
+
else if (!env.equals_(this.sample[property], other[property], mismatchKeys, mismatchValues)) {
|
1522
|
+
mismatchValues.push("'" + property + "' was '" + (other[property] ? jasmine.util.htmlEscape(other[property].toString()) : other[property]) + "' in expected, but was '" + (this.sample[property] ? jasmine.util.htmlEscape(this.sample[property].toString()) : this.sample[property]) + "' in actual.");
|
1523
|
+
}
|
1524
|
+
}
|
1525
|
+
|
1526
|
+
return (mismatchKeys.length === 0 && mismatchValues.length === 0);
|
1527
|
+
};
|
1528
|
+
|
1529
|
+
jasmine.Matchers.ObjectContaining.prototype.jasmineToString = function () {
|
1530
|
+
return "<jasmine.objectContaining(" + jasmine.pp(this.sample) + ")>";
|
1531
|
+
};
|
1532
|
+
// Mock setTimeout, clearTimeout
|
1533
|
+
// Contributed by Pivotal Computer Systems, www.pivotalsf.com
|
1534
|
+
|
1535
|
+
jasmine.FakeTimer = function() {
|
1536
|
+
this.reset();
|
1537
|
+
|
1538
|
+
var self = this;
|
1539
|
+
self.setTimeout = function(funcToCall, millis) {
|
1540
|
+
self.timeoutsMade++;
|
1541
|
+
self.scheduleFunction(self.timeoutsMade, funcToCall, millis, false);
|
1542
|
+
return self.timeoutsMade;
|
1543
|
+
};
|
1544
|
+
|
1545
|
+
self.setInterval = function(funcToCall, millis) {
|
1546
|
+
self.timeoutsMade++;
|
1547
|
+
self.scheduleFunction(self.timeoutsMade, funcToCall, millis, true);
|
1548
|
+
return self.timeoutsMade;
|
1549
|
+
};
|
1550
|
+
|
1551
|
+
self.clearTimeout = function(timeoutKey) {
|
1552
|
+
self.scheduledFunctions[timeoutKey] = jasmine.undefined;
|
1553
|
+
};
|
1554
|
+
|
1555
|
+
self.clearInterval = function(timeoutKey) {
|
1556
|
+
self.scheduledFunctions[timeoutKey] = jasmine.undefined;
|
1557
|
+
};
|
1558
|
+
|
1559
|
+
};
|
1560
|
+
|
1561
|
+
jasmine.FakeTimer.prototype.reset = function() {
|
1562
|
+
this.timeoutsMade = 0;
|
1563
|
+
this.scheduledFunctions = {};
|
1564
|
+
this.nowMillis = 0;
|
1565
|
+
};
|
1566
|
+
|
1567
|
+
jasmine.FakeTimer.prototype.tick = function(millis) {
|
1568
|
+
var oldMillis = this.nowMillis;
|
1569
|
+
var newMillis = oldMillis + millis;
|
1570
|
+
this.runFunctionsWithinRange(oldMillis, newMillis);
|
1571
|
+
this.nowMillis = newMillis;
|
1572
|
+
};
|
1573
|
+
|
1574
|
+
jasmine.FakeTimer.prototype.runFunctionsWithinRange = function(oldMillis, nowMillis) {
|
1575
|
+
var scheduledFunc;
|
1576
|
+
var funcsToRun = [];
|
1577
|
+
for (var timeoutKey in this.scheduledFunctions) {
|
1578
|
+
scheduledFunc = this.scheduledFunctions[timeoutKey];
|
1579
|
+
if (scheduledFunc != jasmine.undefined &&
|
1580
|
+
scheduledFunc.runAtMillis >= oldMillis &&
|
1581
|
+
scheduledFunc.runAtMillis <= nowMillis) {
|
1582
|
+
funcsToRun.push(scheduledFunc);
|
1583
|
+
this.scheduledFunctions[timeoutKey] = jasmine.undefined;
|
1584
|
+
}
|
1585
|
+
}
|
1586
|
+
|
1587
|
+
if (funcsToRun.length > 0) {
|
1588
|
+
funcsToRun.sort(function(a, b) {
|
1589
|
+
return a.runAtMillis - b.runAtMillis;
|
1590
|
+
});
|
1591
|
+
for (var i = 0; i < funcsToRun.length; ++i) {
|
1592
|
+
try {
|
1593
|
+
var funcToRun = funcsToRun[i];
|
1594
|
+
this.nowMillis = funcToRun.runAtMillis;
|
1595
|
+
funcToRun.funcToCall();
|
1596
|
+
if (funcToRun.recurring) {
|
1597
|
+
this.scheduleFunction(funcToRun.timeoutKey,
|
1598
|
+
funcToRun.funcToCall,
|
1599
|
+
funcToRun.millis,
|
1600
|
+
true);
|
1601
|
+
}
|
1602
|
+
} catch(e) {
|
1603
|
+
}
|
1604
|
+
}
|
1605
|
+
this.runFunctionsWithinRange(oldMillis, nowMillis);
|
1606
|
+
}
|
1607
|
+
};
|
1608
|
+
|
1609
|
+
jasmine.FakeTimer.prototype.scheduleFunction = function(timeoutKey, funcToCall, millis, recurring) {
|
1610
|
+
this.scheduledFunctions[timeoutKey] = {
|
1611
|
+
runAtMillis: this.nowMillis + millis,
|
1612
|
+
funcToCall: funcToCall,
|
1613
|
+
recurring: recurring,
|
1614
|
+
timeoutKey: timeoutKey,
|
1615
|
+
millis: millis
|
1616
|
+
};
|
1617
|
+
};
|
1618
|
+
|
1619
|
+
/**
|
1620
|
+
* @namespace
|
1621
|
+
*/
|
1622
|
+
jasmine.Clock = {
|
1623
|
+
defaultFakeTimer: new jasmine.FakeTimer(),
|
1624
|
+
|
1625
|
+
reset: function() {
|
1626
|
+
jasmine.Clock.assertInstalled();
|
1627
|
+
jasmine.Clock.defaultFakeTimer.reset();
|
1628
|
+
},
|
1629
|
+
|
1630
|
+
tick: function(millis) {
|
1631
|
+
jasmine.Clock.assertInstalled();
|
1632
|
+
jasmine.Clock.defaultFakeTimer.tick(millis);
|
1633
|
+
},
|
1634
|
+
|
1635
|
+
runFunctionsWithinRange: function(oldMillis, nowMillis) {
|
1636
|
+
jasmine.Clock.defaultFakeTimer.runFunctionsWithinRange(oldMillis, nowMillis);
|
1637
|
+
},
|
1638
|
+
|
1639
|
+
scheduleFunction: function(timeoutKey, funcToCall, millis, recurring) {
|
1640
|
+
jasmine.Clock.defaultFakeTimer.scheduleFunction(timeoutKey, funcToCall, millis, recurring);
|
1641
|
+
},
|
1642
|
+
|
1643
|
+
useMock: function() {
|
1644
|
+
if (!jasmine.Clock.isInstalled()) {
|
1645
|
+
var spec = jasmine.getEnv().currentSpec;
|
1646
|
+
spec.after(jasmine.Clock.uninstallMock);
|
1647
|
+
|
1648
|
+
jasmine.Clock.installMock();
|
1649
|
+
}
|
1650
|
+
},
|
1651
|
+
|
1652
|
+
installMock: function() {
|
1653
|
+
jasmine.Clock.installed = jasmine.Clock.defaultFakeTimer;
|
1654
|
+
},
|
1655
|
+
|
1656
|
+
uninstallMock: function() {
|
1657
|
+
jasmine.Clock.assertInstalled();
|
1658
|
+
jasmine.Clock.installed = jasmine.Clock.real;
|
1659
|
+
},
|
1660
|
+
|
1661
|
+
real: {
|
1662
|
+
setTimeout: jasmine.getGlobal().setTimeout,
|
1663
|
+
clearTimeout: jasmine.getGlobal().clearTimeout,
|
1664
|
+
setInterval: jasmine.getGlobal().setInterval,
|
1665
|
+
clearInterval: jasmine.getGlobal().clearInterval
|
1666
|
+
},
|
1667
|
+
|
1668
|
+
assertInstalled: function() {
|
1669
|
+
if (!jasmine.Clock.isInstalled()) {
|
1670
|
+
throw new Error("Mock clock is not installed, use jasmine.Clock.useMock()");
|
1671
|
+
}
|
1672
|
+
},
|
1673
|
+
|
1674
|
+
isInstalled: function() {
|
1675
|
+
return jasmine.Clock.installed == jasmine.Clock.defaultFakeTimer;
|
1676
|
+
},
|
1677
|
+
|
1678
|
+
installed: null
|
1679
|
+
};
|
1680
|
+
jasmine.Clock.installed = jasmine.Clock.real;
|
1681
|
+
|
1682
|
+
//else for IE support
|
1683
|
+
jasmine.getGlobal().setTimeout = function(funcToCall, millis) {
|
1684
|
+
if (jasmine.Clock.installed.setTimeout.apply) {
|
1685
|
+
return jasmine.Clock.installed.setTimeout.apply(this, arguments);
|
1686
|
+
} else {
|
1687
|
+
return jasmine.Clock.installed.setTimeout(funcToCall, millis);
|
1688
|
+
}
|
1689
|
+
};
|
1690
|
+
|
1691
|
+
jasmine.getGlobal().setInterval = function(funcToCall, millis) {
|
1692
|
+
if (jasmine.Clock.installed.setInterval.apply) {
|
1693
|
+
return jasmine.Clock.installed.setInterval.apply(this, arguments);
|
1694
|
+
} else {
|
1695
|
+
return jasmine.Clock.installed.setInterval(funcToCall, millis);
|
1696
|
+
}
|
1697
|
+
};
|
1698
|
+
|
1699
|
+
jasmine.getGlobal().clearTimeout = function(timeoutKey) {
|
1700
|
+
if (jasmine.Clock.installed.clearTimeout.apply) {
|
1701
|
+
return jasmine.Clock.installed.clearTimeout.apply(this, arguments);
|
1702
|
+
} else {
|
1703
|
+
return jasmine.Clock.installed.clearTimeout(timeoutKey);
|
1704
|
+
}
|
1705
|
+
};
|
1706
|
+
|
1707
|
+
jasmine.getGlobal().clearInterval = function(timeoutKey) {
|
1708
|
+
if (jasmine.Clock.installed.clearTimeout.apply) {
|
1709
|
+
return jasmine.Clock.installed.clearInterval.apply(this, arguments);
|
1710
|
+
} else {
|
1711
|
+
return jasmine.Clock.installed.clearInterval(timeoutKey);
|
1712
|
+
}
|
1713
|
+
};
|
1714
|
+
|
1475
1715
|
/**
|
1476
1716
|
* @constructor
|
1477
1717
|
*/
|
@@ -1612,8 +1852,8 @@ jasmine.PrettyPrinter.prototype.format = function(value) {
|
|
1612
1852
|
this.emitScalar('null');
|
1613
1853
|
} else if (value === jasmine.getGlobal()) {
|
1614
1854
|
this.emitScalar('<global>');
|
1615
|
-
} else if (value
|
1616
|
-
this.emitScalar(value.
|
1855
|
+
} else if (value.jasmineToString) {
|
1856
|
+
this.emitScalar(value.jasmineToString());
|
1617
1857
|
} else if (typeof value === 'string') {
|
1618
1858
|
this.emitString(value);
|
1619
1859
|
} else if (jasmine.isSpy(value)) {
|
@@ -2280,192 +2520,10 @@ jasmine.WaitsForBlock.prototype.execute = function(onComplete) {
|
|
2280
2520
|
}, jasmine.WaitsForBlock.TIMEOUT_INCREMENT);
|
2281
2521
|
}
|
2282
2522
|
};
|
2283
|
-
// Mock setTimeout, clearTimeout
|
2284
|
-
// Contributed by Pivotal Computer Systems, www.pivotalsf.com
|
2285
|
-
|
2286
|
-
jasmine.FakeTimer = function() {
|
2287
|
-
this.reset();
|
2288
|
-
|
2289
|
-
var self = this;
|
2290
|
-
self.setTimeout = function(funcToCall, millis) {
|
2291
|
-
self.timeoutsMade++;
|
2292
|
-
self.scheduleFunction(self.timeoutsMade, funcToCall, millis, false);
|
2293
|
-
return self.timeoutsMade;
|
2294
|
-
};
|
2295
|
-
|
2296
|
-
self.setInterval = function(funcToCall, millis) {
|
2297
|
-
self.timeoutsMade++;
|
2298
|
-
self.scheduleFunction(self.timeoutsMade, funcToCall, millis, true);
|
2299
|
-
return self.timeoutsMade;
|
2300
|
-
};
|
2301
|
-
|
2302
|
-
self.clearTimeout = function(timeoutKey) {
|
2303
|
-
self.scheduledFunctions[timeoutKey] = jasmine.undefined;
|
2304
|
-
};
|
2305
|
-
|
2306
|
-
self.clearInterval = function(timeoutKey) {
|
2307
|
-
self.scheduledFunctions[timeoutKey] = jasmine.undefined;
|
2308
|
-
};
|
2309
|
-
|
2310
|
-
};
|
2311
|
-
|
2312
|
-
jasmine.FakeTimer.prototype.reset = function() {
|
2313
|
-
this.timeoutsMade = 0;
|
2314
|
-
this.scheduledFunctions = {};
|
2315
|
-
this.nowMillis = 0;
|
2316
|
-
};
|
2317
|
-
|
2318
|
-
jasmine.FakeTimer.prototype.tick = function(millis) {
|
2319
|
-
var oldMillis = this.nowMillis;
|
2320
|
-
var newMillis = oldMillis + millis;
|
2321
|
-
this.runFunctionsWithinRange(oldMillis, newMillis);
|
2322
|
-
this.nowMillis = newMillis;
|
2323
|
-
};
|
2324
|
-
|
2325
|
-
jasmine.FakeTimer.prototype.runFunctionsWithinRange = function(oldMillis, nowMillis) {
|
2326
|
-
var scheduledFunc;
|
2327
|
-
var funcsToRun = [];
|
2328
|
-
for (var timeoutKey in this.scheduledFunctions) {
|
2329
|
-
scheduledFunc = this.scheduledFunctions[timeoutKey];
|
2330
|
-
if (scheduledFunc != jasmine.undefined &&
|
2331
|
-
scheduledFunc.runAtMillis >= oldMillis &&
|
2332
|
-
scheduledFunc.runAtMillis <= nowMillis) {
|
2333
|
-
funcsToRun.push(scheduledFunc);
|
2334
|
-
this.scheduledFunctions[timeoutKey] = jasmine.undefined;
|
2335
|
-
}
|
2336
|
-
}
|
2337
|
-
|
2338
|
-
if (funcsToRun.length > 0) {
|
2339
|
-
funcsToRun.sort(function(a, b) {
|
2340
|
-
return a.runAtMillis - b.runAtMillis;
|
2341
|
-
});
|
2342
|
-
for (var i = 0; i < funcsToRun.length; ++i) {
|
2343
|
-
try {
|
2344
|
-
var funcToRun = funcsToRun[i];
|
2345
|
-
this.nowMillis = funcToRun.runAtMillis;
|
2346
|
-
funcToRun.funcToCall();
|
2347
|
-
if (funcToRun.recurring) {
|
2348
|
-
this.scheduleFunction(funcToRun.timeoutKey,
|
2349
|
-
funcToRun.funcToCall,
|
2350
|
-
funcToRun.millis,
|
2351
|
-
true);
|
2352
|
-
}
|
2353
|
-
} catch(e) {
|
2354
|
-
}
|
2355
|
-
}
|
2356
|
-
this.runFunctionsWithinRange(oldMillis, nowMillis);
|
2357
|
-
}
|
2358
|
-
};
|
2359
|
-
|
2360
|
-
jasmine.FakeTimer.prototype.scheduleFunction = function(timeoutKey, funcToCall, millis, recurring) {
|
2361
|
-
this.scheduledFunctions[timeoutKey] = {
|
2362
|
-
runAtMillis: this.nowMillis + millis,
|
2363
|
-
funcToCall: funcToCall,
|
2364
|
-
recurring: recurring,
|
2365
|
-
timeoutKey: timeoutKey,
|
2366
|
-
millis: millis
|
2367
|
-
};
|
2368
|
-
};
|
2369
|
-
|
2370
|
-
/**
|
2371
|
-
* @namespace
|
2372
|
-
*/
|
2373
|
-
jasmine.Clock = {
|
2374
|
-
defaultFakeTimer: new jasmine.FakeTimer(),
|
2375
|
-
|
2376
|
-
reset: function() {
|
2377
|
-
jasmine.Clock.assertInstalled();
|
2378
|
-
jasmine.Clock.defaultFakeTimer.reset();
|
2379
|
-
},
|
2380
|
-
|
2381
|
-
tick: function(millis) {
|
2382
|
-
jasmine.Clock.assertInstalled();
|
2383
|
-
jasmine.Clock.defaultFakeTimer.tick(millis);
|
2384
|
-
},
|
2385
|
-
|
2386
|
-
runFunctionsWithinRange: function(oldMillis, nowMillis) {
|
2387
|
-
jasmine.Clock.defaultFakeTimer.runFunctionsWithinRange(oldMillis, nowMillis);
|
2388
|
-
},
|
2389
|
-
|
2390
|
-
scheduleFunction: function(timeoutKey, funcToCall, millis, recurring) {
|
2391
|
-
jasmine.Clock.defaultFakeTimer.scheduleFunction(timeoutKey, funcToCall, millis, recurring);
|
2392
|
-
},
|
2393
|
-
|
2394
|
-
useMock: function() {
|
2395
|
-
if (!jasmine.Clock.isInstalled()) {
|
2396
|
-
var spec = jasmine.getEnv().currentSpec;
|
2397
|
-
spec.after(jasmine.Clock.uninstallMock);
|
2398
|
-
|
2399
|
-
jasmine.Clock.installMock();
|
2400
|
-
}
|
2401
|
-
},
|
2402
|
-
|
2403
|
-
installMock: function() {
|
2404
|
-
jasmine.Clock.installed = jasmine.Clock.defaultFakeTimer;
|
2405
|
-
},
|
2406
|
-
|
2407
|
-
uninstallMock: function() {
|
2408
|
-
jasmine.Clock.assertInstalled();
|
2409
|
-
jasmine.Clock.installed = jasmine.Clock.real;
|
2410
|
-
},
|
2411
|
-
|
2412
|
-
real: {
|
2413
|
-
setTimeout: jasmine.getGlobal().setTimeout,
|
2414
|
-
clearTimeout: jasmine.getGlobal().clearTimeout,
|
2415
|
-
setInterval: jasmine.getGlobal().setInterval,
|
2416
|
-
clearInterval: jasmine.getGlobal().clearInterval
|
2417
|
-
},
|
2418
|
-
|
2419
|
-
assertInstalled: function() {
|
2420
|
-
if (!jasmine.Clock.isInstalled()) {
|
2421
|
-
throw new Error("Mock clock is not installed, use jasmine.Clock.useMock()");
|
2422
|
-
}
|
2423
|
-
},
|
2424
|
-
|
2425
|
-
isInstalled: function() {
|
2426
|
-
return jasmine.Clock.installed == jasmine.Clock.defaultFakeTimer;
|
2427
|
-
},
|
2428
|
-
|
2429
|
-
installed: null
|
2430
|
-
};
|
2431
|
-
jasmine.Clock.installed = jasmine.Clock.real;
|
2432
|
-
|
2433
|
-
//else for IE support
|
2434
|
-
jasmine.getGlobal().setTimeout = function(funcToCall, millis) {
|
2435
|
-
if (jasmine.Clock.installed.setTimeout.apply) {
|
2436
|
-
return jasmine.Clock.installed.setTimeout.apply(this, arguments);
|
2437
|
-
} else {
|
2438
|
-
return jasmine.Clock.installed.setTimeout(funcToCall, millis);
|
2439
|
-
}
|
2440
|
-
};
|
2441
|
-
|
2442
|
-
jasmine.getGlobal().setInterval = function(funcToCall, millis) {
|
2443
|
-
if (jasmine.Clock.installed.setInterval.apply) {
|
2444
|
-
return jasmine.Clock.installed.setInterval.apply(this, arguments);
|
2445
|
-
} else {
|
2446
|
-
return jasmine.Clock.installed.setInterval(funcToCall, millis);
|
2447
|
-
}
|
2448
|
-
};
|
2449
|
-
|
2450
|
-
jasmine.getGlobal().clearTimeout = function(timeoutKey) {
|
2451
|
-
if (jasmine.Clock.installed.clearTimeout.apply) {
|
2452
|
-
return jasmine.Clock.installed.clearTimeout.apply(this, arguments);
|
2453
|
-
} else {
|
2454
|
-
return jasmine.Clock.installed.clearTimeout(timeoutKey);
|
2455
|
-
}
|
2456
|
-
};
|
2457
|
-
|
2458
|
-
jasmine.getGlobal().clearInterval = function(timeoutKey) {
|
2459
|
-
if (jasmine.Clock.installed.clearTimeout.apply) {
|
2460
|
-
return jasmine.Clock.installed.clearInterval.apply(this, arguments);
|
2461
|
-
} else {
|
2462
|
-
return jasmine.Clock.installed.clearInterval(timeoutKey);
|
2463
|
-
}
|
2464
|
-
};
|
2465
2523
|
|
2466
2524
|
jasmine.version_= {
|
2467
2525
|
"major": 1,
|
2468
|
-
"minor":
|
2526
|
+
"minor": 2,
|
2469
2527
|
"build": 0,
|
2470
|
-
"revision":
|
2471
|
-
}
|
2528
|
+
"revision": 1337005947
|
2529
|
+
};
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: jasminerice
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.9
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Brad Phelan
|
@@ -10,11 +10,10 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date:
|
13
|
+
date: 2012-06-18 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: haml
|
17
|
-
prerelease: false
|
18
17
|
requirement: &id001 !ruby/object:Gem::Requirement
|
19
18
|
none: false
|
20
19
|
requirements:
|
@@ -22,7 +21,19 @@ dependencies:
|
|
22
21
|
- !ruby/object:Gem::Version
|
23
22
|
version: "0"
|
24
23
|
type: :runtime
|
24
|
+
prerelease: false
|
25
25
|
version_requirements: *id001
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: coffee-rails
|
28
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: "0"
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: *id002
|
26
37
|
description: Full support for the Rails 3.1 asset pipeline when bdd'ing your coffeescript or javascript using jasmine
|
27
38
|
email:
|
28
39
|
executables: []
|
@@ -70,17 +81,23 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
70
81
|
requirements:
|
71
82
|
- - ">="
|
72
83
|
- !ruby/object:Gem::Version
|
84
|
+
hash: -1621631643476018546
|
85
|
+
segments:
|
86
|
+
- 0
|
73
87
|
version: "0"
|
74
88
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
89
|
none: false
|
76
90
|
requirements:
|
77
91
|
- - ">="
|
78
92
|
- !ruby/object:Gem::Version
|
93
|
+
hash: -1621631643476018546
|
94
|
+
segments:
|
95
|
+
- 0
|
79
96
|
version: "0"
|
80
97
|
requirements: []
|
81
98
|
|
82
99
|
rubyforge_project:
|
83
|
-
rubygems_version: 1.8.
|
100
|
+
rubygems_version: 1.8.15
|
84
101
|
signing_key:
|
85
102
|
specification_version: 3
|
86
103
|
summary: Pain free coffeescript unit testing for Rails 3.1 using jasmine
|