Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80635 views
1
function install(globalObject) {
2
if (!globalObject.jasmine) {
3
throw new Error(
4
'It looks like you\'re trying to install jasmine-pit before installing ' +
5
'jasmine! Make sure there is a `jasmine` property on the global object ' +
6
'(window/global/etc) before calling install().'
7
);
8
}
9
10
var jasmine = globalObject.jasmine;
11
12
globalObject.pit = function pit(specName, promiseBuilder) {
13
return jasmine.getEnv().it(specName, runPitTest.bind(null, promiseBuilder));
14
};
15
16
globalObject.pit.only = function pitOnly(specName, promiseBuilder) {
17
return jasmine.getEnv().it.only(specName, runPitTest.bind(null, promiseBuilder));
18
};
19
20
globalObject.xpit = function xpit(specName, promiseBuilder) {
21
return jasmine.getEnv().xit(specName, runPitTest.bind(null, promiseBuilder));
22
};
23
24
function runPitTest(promiseBuilder) {
25
var jasmineEnv = jasmine.getEnv();
26
var spec = jasmineEnv.currentSpec;
27
var isFinished = false;
28
var error = null;
29
30
spec.runs(function() {
31
try {
32
var promise = promiseBuilder.call(spec);
33
if (!promise || !promise.then) {
34
throw new Error('pit() tests should return a promise');
35
}
36
37
promise.then(function() {
38
isFinished = true;
39
})['catch'](function(err) {
40
error = err; isFinished = true;
41
});
42
} catch (e) {
43
error = e;
44
isFinished = true;
45
}
46
});
47
48
spec.waitsFor(function() { return isFinished; });
49
spec.runs(function() { if (error) throw error; });
50
};
51
}
52
53
exports.install = install;
54
55