Add unit specs for WaitsForBlock
This commit is contained in:
parent
462b50e84e
commit
5aa306cf66
@ -8,13 +8,13 @@
|
|||||||
// yes, really keep this here to keep us honest, but only for jasmine's own runner! [xw]
|
// yes, really keep this here to keep us honest, but only for jasmine's own runner! [xw]
|
||||||
undefined = "diz be undefined yo";
|
undefined = "diz be undefined yo";
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script type="text/javascript" src="../src/base.js"></script>
|
<script type="text/javascript" src="../src/base.js"></script>
|
||||||
<script type="text/javascript" src="../src/util.js"></script>
|
<script type="text/javascript" src="../src/util.js"></script>
|
||||||
<script type="text/javascript" src="../src/Env.js"></script>
|
<script type="text/javascript" src="../src/Env.js"></script>
|
||||||
<script type="text/javascript" src="../src/Reporter.js"></script>
|
<script type="text/javascript" src="../src/Reporter.js"></script>
|
||||||
<script type="text/javascript" src="../src/Block.js"></script>
|
<script type="text/javascript" src="../src/Block.js"></script>
|
||||||
|
|
||||||
<script type="text/javascript" src="../src/JsApiReporter.js"></script>
|
<script type="text/javascript" src="../src/JsApiReporter.js"></script>
|
||||||
<script type="text/javascript" src="../src/Matchers.js"></script>
|
<script type="text/javascript" src="../src/Matchers.js"></script>
|
||||||
<script type="text/javascript" src="../src/mock-timeout.js"></script>
|
<script type="text/javascript" src="../src/mock-timeout.js"></script>
|
||||||
@ -28,7 +28,7 @@
|
|||||||
<script type="text/javascript" src="../src/Suite.js"></script>
|
<script type="text/javascript" src="../src/Suite.js"></script>
|
||||||
<script type="text/javascript" src="../src/WaitsBlock.js"></script>
|
<script type="text/javascript" src="../src/WaitsBlock.js"></script>
|
||||||
<script type="text/javascript" src="../src/WaitsForBlock.js"></script>
|
<script type="text/javascript" src="../src/WaitsForBlock.js"></script>
|
||||||
|
|
||||||
<script type="text/javascript" src="../lib/TrivialReporter.js"></script>
|
<script type="text/javascript" src="../lib/TrivialReporter.js"></script>
|
||||||
<script type="text/javascript" src="../lib/consolex.js"></script>
|
<script type="text/javascript" src="../lib/consolex.js"></script>
|
||||||
|
|
||||||
@ -50,7 +50,8 @@
|
|||||||
<script type="text/javascript" src="suites/SpySpec.js"></script>
|
<script type="text/javascript" src="suites/SpySpec.js"></script>
|
||||||
<script type="text/javascript" src="suites/SuiteSpec.js"></script>
|
<script type="text/javascript" src="suites/SuiteSpec.js"></script>
|
||||||
<script type="text/javascript" src="suites/TrivialReporterSpec.js"></script>
|
<script type="text/javascript" src="suites/TrivialReporterSpec.js"></script>
|
||||||
|
<script type="text/javascript" src="suites/WaitsForBlockSpec.js"></script>
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
(function() {
|
(function() {
|
||||||
|
88
spec/suites/WaitsForBlockSpec.js
Normal file
88
spec/suites/WaitsForBlockSpec.js
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
describe('WaitsForBlock', function () {
|
||||||
|
var env, suite, timeout, spec, message, onComplete, fakeTimer;
|
||||||
|
beforeEach(function() {
|
||||||
|
env = new jasmine.Env();
|
||||||
|
env.updateInterval = 0;
|
||||||
|
suite = new jasmine.Suite(env, 'suite 1');
|
||||||
|
timeout = 1000;
|
||||||
|
spec = new jasmine.Spec(env, suite);
|
||||||
|
message = "some error message";
|
||||||
|
onComplete = jasmine.createSpy("onComplete");
|
||||||
|
});
|
||||||
|
|
||||||
|
it('onComplete should be called if the latchFunction returns true', function () {
|
||||||
|
var latchFunction = function() {
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
var block = new jasmine.WaitsForBlock(env, timeout, latchFunction, message, spec);
|
||||||
|
expect(onComplete).wasNotCalled();
|
||||||
|
block.execute(onComplete);
|
||||||
|
expect(onComplete).wasCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('latchFunction should run in same scope as spec', function () {
|
||||||
|
var result;
|
||||||
|
var latchFunction = function() {
|
||||||
|
result = this.scopedValue;
|
||||||
|
};
|
||||||
|
spec.scopedValue = 'foo';
|
||||||
|
var block = new jasmine.WaitsForBlock(env, timeout, latchFunction, message, spec);
|
||||||
|
block.execute(onComplete);
|
||||||
|
expect(result).toEqual('foo');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should fail spec and call onComplete if there is an error in the latchFunction', function() {
|
||||||
|
var latchFunction = jasmine.createSpy('latchFunction').andThrow('some error');
|
||||||
|
spyOn(spec, 'fail');
|
||||||
|
var block = new jasmine.WaitsForBlock(env, timeout, latchFunction, message, spec);
|
||||||
|
block.execute(onComplete);
|
||||||
|
expect(spec.fail).wasCalledWith('some error');
|
||||||
|
expect(onComplete).wasCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("if latchFunction returns false", function() {
|
||||||
|
var latchFunction, fakeTimer;
|
||||||
|
beforeEach(function() {
|
||||||
|
latchFunction = jasmine.createSpy('latchFunction').andReturn(false);
|
||||||
|
fakeTimer = new jasmine.FakeTimer();
|
||||||
|
env.setTimeout = fakeTimer.setTimeout;
|
||||||
|
env.clearTimeout = fakeTimer.clearTimeout;
|
||||||
|
env.setInterval = fakeTimer.setInterval;
|
||||||
|
env.clearInterval = fakeTimer.clearInterval;
|
||||||
|
});
|
||||||
|
|
||||||
|
it('latchFunction should be retried after 100 ms', function () {
|
||||||
|
var block = new jasmine.WaitsForBlock(env, timeout, latchFunction, message, spec);
|
||||||
|
expect(latchFunction).wasNotCalled();
|
||||||
|
block.execute(onComplete);
|
||||||
|
expect(latchFunction.callCount).toEqual(1);
|
||||||
|
fakeTimer.tick(50);
|
||||||
|
expect(latchFunction.callCount).toEqual(1);
|
||||||
|
fakeTimer.tick(50);
|
||||||
|
expect(latchFunction.callCount).toEqual(2);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('onComplete should be called if latchFunction returns true before timeout', function () {
|
||||||
|
var block = new jasmine.WaitsForBlock(env, timeout, latchFunction, message, spec);
|
||||||
|
expect(onComplete).wasNotCalled();
|
||||||
|
block.execute(onComplete);
|
||||||
|
expect(onComplete).wasNotCalled();
|
||||||
|
latchFunction.andReturn(true);
|
||||||
|
fakeTimer.tick(100);
|
||||||
|
expect(onComplete).wasCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('spec should fail with the passed message if the timeout is reached (and not call onComplete)', function () {
|
||||||
|
spyOn(spec, 'fail');
|
||||||
|
var block = new jasmine.WaitsForBlock(env, timeout, latchFunction, message, spec);
|
||||||
|
block.execute(onComplete);
|
||||||
|
expect(spec.fail).wasNotCalled();
|
||||||
|
fakeTimer.tick(timeout);
|
||||||
|
expect(spec.fail).wasCalled();
|
||||||
|
var failMessage = spec.fail.mostRecentCall.args[0].message;
|
||||||
|
expect(failMessage).toMatch(message);
|
||||||
|
expect(onComplete).wasNotCalled();
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user