jasminerice 0.0.8 → 0.0.9
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/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
|