jasmine-core 3.0.0 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/lib/jasmine-core/boot/node_boot.js +1 -1
  3. data/lib/jasmine-core/jasmine-html.js +0 -35
  4. data/lib/jasmine-core/jasmine.css +0 -6
  5. data/lib/jasmine-core/jasmine.js +246 -36
  6. data/lib/jasmine-core/node_boot.js +1 -1
  7. data/lib/jasmine-core/version.rb +1 -1
  8. metadata +3 -88
  9. data/lib/jasmine-core/spec/core/CallTrackerSpec.js +0 -130
  10. data/lib/jasmine-core/spec/core/ClearStackSpec.js +0 -137
  11. data/lib/jasmine-core/spec/core/ClockSpec.js +0 -710
  12. data/lib/jasmine-core/spec/core/DelayedFunctionSchedulerSpec.js +0 -286
  13. data/lib/jasmine-core/spec/core/EnvSpec.js +0 -200
  14. data/lib/jasmine-core/spec/core/ExceptionFormatterSpec.js +0 -120
  15. data/lib/jasmine-core/spec/core/ExceptionsSpec.js +0 -46
  16. data/lib/jasmine-core/spec/core/ExpectationResultSpec.js +0 -61
  17. data/lib/jasmine-core/spec/core/ExpectationSpec.js +0 -434
  18. data/lib/jasmine-core/spec/core/GlobalErrorsSpec.js +0 -110
  19. data/lib/jasmine-core/spec/core/JsApiReporterSpec.js +0 -259
  20. data/lib/jasmine-core/spec/core/MockDateSpec.js +0 -200
  21. data/lib/jasmine-core/spec/core/PrettyPrintSpec.js +0 -332
  22. data/lib/jasmine-core/spec/core/QueueRunnerSpec.js +0 -670
  23. data/lib/jasmine-core/spec/core/ReportDispatcherSpec.js +0 -140
  24. data/lib/jasmine-core/spec/core/SpecSpec.js +0 -407
  25. data/lib/jasmine-core/spec/core/SpyRegistrySpec.js +0 -364
  26. data/lib/jasmine-core/spec/core/SpySpec.js +0 -177
  27. data/lib/jasmine-core/spec/core/SpyStrategySpec.js +0 -202
  28. data/lib/jasmine-core/spec/core/StackTraceSpec.js +0 -166
  29. data/lib/jasmine-core/spec/core/SuiteSpec.js +0 -123
  30. data/lib/jasmine-core/spec/core/TimerSpec.js +0 -31
  31. data/lib/jasmine-core/spec/core/TreeProcessorSpec.js +0 -794
  32. data/lib/jasmine-core/spec/core/UserContextSpec.js +0 -54
  33. data/lib/jasmine-core/spec/core/UtilSpec.js +0 -105
  34. data/lib/jasmine-core/spec/core/asymmetric_equality/AnySpec.js +0 -91
  35. data/lib/jasmine-core/spec/core/asymmetric_equality/AnythingSpec.js +0 -76
  36. data/lib/jasmine-core/spec/core/asymmetric_equality/ArrayContainingSpec.js +0 -52
  37. data/lib/jasmine-core/spec/core/asymmetric_equality/ArrayWithExactContentsSpec.js +0 -47
  38. data/lib/jasmine-core/spec/core/asymmetric_equality/ObjectContainingSpec.js +0 -99
  39. data/lib/jasmine-core/spec/core/asymmetric_equality/StringMatchingSpec.js +0 -27
  40. data/lib/jasmine-core/spec/core/formatErrorMsgSpec.js +0 -13
  41. data/lib/jasmine-core/spec/core/integration/CustomMatchersSpec.js +0 -200
  42. data/lib/jasmine-core/spec/core/integration/CustomSpyStrategiesSpec.js +0 -138
  43. data/lib/jasmine-core/spec/core/integration/EnvSpec.js +0 -2344
  44. data/lib/jasmine-core/spec/core/integration/SpecRunningSpec.js +0 -976
  45. data/lib/jasmine-core/spec/core/matchers/DiffBuilderSpec.js +0 -47
  46. data/lib/jasmine-core/spec/core/matchers/NullDiffBuilderSpec.js +0 -13
  47. data/lib/jasmine-core/spec/core/matchers/ObjectPathSpec.js +0 -43
  48. data/lib/jasmine-core/spec/core/matchers/matchersUtilSpec.js +0 -645
  49. data/lib/jasmine-core/spec/core/matchers/nothingSpec.js +0 -8
  50. data/lib/jasmine-core/spec/core/matchers/toBeCloseToSpec.js +0 -93
  51. data/lib/jasmine-core/spec/core/matchers/toBeDefinedSpec.js +0 -18
  52. data/lib/jasmine-core/spec/core/matchers/toBeFalsySpec.js +0 -38
  53. data/lib/jasmine-core/spec/core/matchers/toBeGreaterThanOrEqualSpec.js +0 -29
  54. data/lib/jasmine-core/spec/core/matchers/toBeGreaterThanSpec.js +0 -20
  55. data/lib/jasmine-core/spec/core/matchers/toBeLessThanOrEqualSpec.js +0 -29
  56. data/lib/jasmine-core/spec/core/matchers/toBeLessThanSpec.js +0 -20
  57. data/lib/jasmine-core/spec/core/matchers/toBeNaNSpec.js +0 -37
  58. data/lib/jasmine-core/spec/core/matchers/toBeNegativeInfinitySpec.js +0 -31
  59. data/lib/jasmine-core/spec/core/matchers/toBeNullSpec.js +0 -17
  60. data/lib/jasmine-core/spec/core/matchers/toBePositiveInfinitySpec.js +0 -31
  61. data/lib/jasmine-core/spec/core/matchers/toBeSpec.js +0 -17
  62. data/lib/jasmine-core/spec/core/matchers/toBeTruthySpec.js +0 -38
  63. data/lib/jasmine-core/spec/core/matchers/toBeUndefinedSpec.js +0 -18
  64. data/lib/jasmine-core/spec/core/matchers/toContainSpec.js +0 -26
  65. data/lib/jasmine-core/spec/core/matchers/toEqualSpec.js +0 -785
  66. data/lib/jasmine-core/spec/core/matchers/toHaveBeenCalledBeforeSpec.js +0 -99
  67. data/lib/jasmine-core/spec/core/matchers/toHaveBeenCalledSpec.js +0 -47
  68. data/lib/jasmine-core/spec/core/matchers/toHaveBeenCalledTimesSpec.js +0 -86
  69. data/lib/jasmine-core/spec/core/matchers/toHaveBeenCalledWithSpec.js +0 -67
  70. data/lib/jasmine-core/spec/core/matchers/toMatchSpec.js +0 -43
  71. data/lib/jasmine-core/spec/core/matchers/toThrowErrorSpec.js +0 -315
  72. data/lib/jasmine-core/spec/core/matchers/toThrowMatchingSpec.js +0 -73
  73. data/lib/jasmine-core/spec/core/matchers/toThrowSpec.js +0 -100
  74. data/lib/jasmine-core/spec/helpers/BrowserFlags.js +0 -15
  75. data/lib/jasmine-core/spec/helpers/asyncAwait.js +0 -27
  76. data/lib/jasmine-core/spec/helpers/checkForMap.js +0 -37
  77. data/lib/jasmine-core/spec/helpers/checkForSet.js +0 -41
  78. data/lib/jasmine-core/spec/helpers/checkForSymbol.js +0 -28
  79. data/lib/jasmine-core/spec/helpers/checkForTypedArrays.js +0 -20
  80. data/lib/jasmine-core/spec/helpers/defineJasmineUnderTest.js +0 -6
  81. data/lib/jasmine-core/spec/helpers/integrationMatchers.js +0 -43
  82. data/lib/jasmine-core/spec/helpers/nodeDefineJasmineUnderTest.js +0 -30
  83. data/lib/jasmine-core/spec/html/HtmlReporterSpec.js +0 -1261
  84. data/lib/jasmine-core/spec/html/HtmlSpecFilterSpec.js +0 -18
  85. data/lib/jasmine-core/spec/html/MatchersHtmlSpec.js +0 -37
  86. data/lib/jasmine-core/spec/html/PrettyPrintHtmlSpec.js +0 -27
  87. data/lib/jasmine-core/spec/html/QueryStringSpec.js +0 -72
  88. data/lib/jasmine-core/spec/html/ResultsNodeSpec.js +0 -62
  89. data/lib/jasmine-core/spec/html/SpyRegistryHtmlSpec.js +0 -39
  90. data/lib/jasmine-core/spec/html/matchers/toHaveClassSpec.js +0 -48
  91. data/lib/jasmine-core/spec/npmPackage/npmPackageSpec.js +0 -101
  92. data/lib/jasmine-core/spec/performance/large_object_test.js +0 -36
  93. data/lib/jasmine-core/spec/performance/performance_test.js +0 -10
@@ -1,140 +0,0 @@
1
- describe("ReportDispatcher", function() {
2
-
3
- it("builds an interface of requested methods", function() {
4
- var dispatcher = new jasmineUnderTest.ReportDispatcher(['foo', 'bar', 'baz']);
5
-
6
- expect(dispatcher.foo).toBeDefined();
7
- expect(dispatcher.bar).toBeDefined();
8
- expect(dispatcher.baz).toBeDefined();
9
- });
10
-
11
- it("dispatches requested methods to added reporters", function() {
12
- var queueRunnerFactory = jasmine.createSpy('queueRunner'),
13
- dispatcher = new jasmineUnderTest.ReportDispatcher(['foo', 'bar'], queueRunnerFactory),
14
- reporter = jasmine.createSpyObj('reporter', ['foo', 'bar']),
15
- anotherReporter = jasmine.createSpyObj('reporter', ['foo', 'bar']),
16
- completeCallback = jasmine.createSpy('complete');
17
-
18
- dispatcher.addReporter(reporter);
19
- dispatcher.addReporter(anotherReporter);
20
-
21
- dispatcher.foo(123, 456, completeCallback);
22
-
23
- expect(queueRunnerFactory).toHaveBeenCalledWith(jasmine.objectContaining({
24
- queueableFns: [{fn: jasmine.any(Function)}, {fn: jasmine.any(Function)}],
25
- isReporter: true
26
- }));
27
-
28
- var fns = queueRunnerFactory.calls.mostRecent().args[0].queueableFns;
29
- fns[0].fn();
30
- expect(reporter.foo).toHaveBeenCalledWith(123, 456);
31
- expect(reporter.foo.calls.mostRecent().object).toBe(reporter);
32
-
33
- fns[1].fn();
34
- expect(anotherReporter.foo).toHaveBeenCalledWith(123, 456);
35
- expect(anotherReporter.foo.calls.mostRecent().object).toBe(anotherReporter);
36
-
37
- queueRunnerFactory.calls.reset();
38
-
39
- dispatcher.bar('a', 'b', completeCallback);
40
-
41
- expect(queueRunnerFactory).toHaveBeenCalledWith(jasmine.objectContaining({
42
- queueableFns: [{fn: jasmine.any(Function)}, {fn: jasmine.any(Function)}],
43
- isReporter: true
44
- }));
45
-
46
- fns = queueRunnerFactory.calls.mostRecent().args[0].queueableFns;
47
- fns[0].fn();
48
- expect(reporter.bar).toHaveBeenCalledWith('a', 'b');
49
-
50
- fns[1].fn();
51
- expect(anotherReporter.bar).toHaveBeenCalledWith('a', 'b');
52
- });
53
-
54
- it("does not dispatch to a reporter if the reporter doesn't accept the method", function() {
55
- var queueRunnerFactory = jasmine.createSpy('queueRunner'),
56
- dispatcher = new jasmineUnderTest.ReportDispatcher(['foo'], queueRunnerFactory),
57
- reporter = jasmine.createSpyObj('reporter', ['baz']);
58
-
59
- dispatcher.addReporter(reporter);
60
-
61
- dispatcher.foo(123, 456);
62
- expect(queueRunnerFactory).toHaveBeenCalledWith(jasmine.objectContaining({
63
- queueableFns: []
64
- }));
65
- });
66
-
67
- it("allows providing a fallback reporter in case there's no other reporter", function() {
68
- var queueRunnerFactory = jasmine.createSpy('queueRunner'),
69
- dispatcher = new jasmineUnderTest.ReportDispatcher(['foo', 'bar'], queueRunnerFactory),
70
- reporter = jasmine.createSpyObj('reporter', ['foo', 'bar']),
71
- completeCallback = jasmine.createSpy('complete');
72
-
73
- dispatcher.provideFallbackReporter(reporter);
74
- dispatcher.foo(123, 456, completeCallback);
75
-
76
- expect(queueRunnerFactory).toHaveBeenCalledWith(jasmine.objectContaining({
77
- queueableFns: [{fn: jasmine.any(Function)}],
78
- isReporter: true
79
- }));
80
-
81
- var fns = queueRunnerFactory.calls.mostRecent().args[0].queueableFns;
82
- fns[0].fn();
83
- expect(reporter.foo).toHaveBeenCalledWith(123, 456);
84
- });
85
-
86
- it("does not call fallback reporting methods when another reporter is provided", function() {
87
- var queueRunnerFactory = jasmine.createSpy('queueRunner'),
88
- dispatcher = new jasmineUnderTest.ReportDispatcher(['foo', 'bar'], queueRunnerFactory),
89
- reporter = jasmine.createSpyObj('reporter', ['foo', 'bar']),
90
- fallbackReporter = jasmine.createSpyObj('otherReporter', ['foo', 'bar']),
91
- completeCallback = jasmine.createSpy('complete');
92
-
93
- dispatcher.provideFallbackReporter(fallbackReporter);
94
- dispatcher.addReporter(reporter);
95
- dispatcher.foo(123, 456, completeCallback);
96
-
97
- expect(queueRunnerFactory).toHaveBeenCalledWith(jasmine.objectContaining({
98
- queueableFns: [{fn: jasmine.any(Function)}],
99
- isReporter: true
100
- }));
101
-
102
- var fns = queueRunnerFactory.calls.mostRecent().args[0].queueableFns;
103
- fns[0].fn();
104
- expect(reporter.foo).toHaveBeenCalledWith(123, 456);
105
- expect(fallbackReporter.foo).not.toHaveBeenCalledWith(123, 456);
106
- });
107
-
108
- it("allows registered reporters to be cleared", function() {
109
- var queueRunnerFactory = jasmine.createSpy('queueRunner'),
110
- dispatcher = new jasmineUnderTest.ReportDispatcher(['foo', 'bar'], queueRunnerFactory),
111
- reporter1 = jasmine.createSpyObj('reporter1', ['foo', 'bar']),
112
- reporter2 = jasmine.createSpyObj('reporter2', ['foo', 'bar']),
113
- completeCallback = jasmine.createSpy('complete');
114
-
115
- dispatcher.addReporter(reporter1);
116
- dispatcher.foo(123, completeCallback);
117
- expect(queueRunnerFactory).toHaveBeenCalledWith(jasmine.objectContaining({
118
- queueableFns: [{fn: jasmine.any(Function)}],
119
- isReporter: true
120
- }));
121
-
122
- var fns = queueRunnerFactory.calls.mostRecent().args[0].queueableFns;
123
- fns[0].fn();
124
- expect(reporter1.foo).toHaveBeenCalledWith(123);
125
-
126
- dispatcher.clearReporters();
127
- dispatcher.addReporter(reporter2);
128
- dispatcher.bar(456, completeCallback);
129
-
130
- expect(queueRunnerFactory).toHaveBeenCalledWith(jasmine.objectContaining({
131
- queueableFns: [{fn: jasmine.any(Function)}],
132
- isReporter: true
133
- }));
134
-
135
- fns = queueRunnerFactory.calls.mostRecent().args[0].queueableFns;
136
- fns[0].fn();
137
- expect(reporter1.bar).not.toHaveBeenCalled();
138
- expect(reporter2.bar).toHaveBeenCalledWith(456);
139
- });
140
- });
@@ -1,407 +0,0 @@
1
- describe("Spec", function() {
2
-
3
- it("#isPendingSpecException returns true for a pending spec exception", function() {
4
- var e = new Error(jasmineUnderTest.Spec.pendingSpecExceptionMessage);
5
-
6
- expect(jasmineUnderTest.Spec.isPendingSpecException(e)).toBe(true);
7
- });
8
-
9
- it("#isPendingSpecException returns true for a pending spec exception (even when FF bug is present)", function() {
10
- var fakeError = {
11
- toString: function() { return "Error: " + jasmineUnderTest.Spec.pendingSpecExceptionMessage; }
12
- };
13
-
14
- expect(jasmineUnderTest.Spec.isPendingSpecException(fakeError)).toBe(true);
15
- });
16
-
17
- it("#isPendingSpecException returns true for a pending spec exception with a custom message", function() {
18
- expect(jasmineUnderTest.Spec.isPendingSpecException(jasmineUnderTest.Spec.pendingSpecExceptionMessage + 'foo')).toBe(true);
19
- });
20
-
21
- it("#isPendingSpecException returns false for not a pending spec exception", function() {
22
- var e = new Error("foo");
23
-
24
- expect(jasmineUnderTest.Spec.isPendingSpecException(e)).toBe(false);
25
- });
26
-
27
- it("#isPendingSpecException returns false for thrown values that don't have toString", function() {
28
- expect(jasmineUnderTest.Spec.isPendingSpecException(void 0)).toBe(false);
29
- });
30
-
31
- it("delegates execution to a QueueRunner", function() {
32
- var fakeQueueRunner = jasmine.createSpy('fakeQueueRunner'),
33
- spec = new jasmineUnderTest.Spec({
34
- description: 'my test',
35
- id: 'some-id',
36
- queueableFn: { fn: function() {} },
37
- queueRunnerFactory: fakeQueueRunner
38
- });
39
-
40
- spec.execute();
41
-
42
- expect(fakeQueueRunner).toHaveBeenCalled();
43
- });
44
-
45
- it("should call the start callback on execution", function() {
46
- var fakeQueueRunner = jasmine.createSpy('fakeQueueRunner'),
47
- startCallback = jasmine.createSpy('startCallback'),
48
- spec = new jasmineUnderTest.Spec({
49
- id: 123,
50
- description: 'foo bar',
51
- queueableFn: { fn: function() {} },
52
- onStart: startCallback,
53
- queueRunnerFactory: fakeQueueRunner
54
- });
55
-
56
- spec.execute();
57
-
58
- fakeQueueRunner.calls.mostRecent().args[0].queueableFns[0].fn();
59
- // TODO: due to some issue with the Pretty Printer, this line fails, but the other two pass.
60
- // This means toHaveBeenCalledWith on IE8 will always be broken.
61
-
62
- // expect(startCallback).toHaveBeenCalledWith(spec);
63
- expect(startCallback).toHaveBeenCalled();
64
- expect(startCallback.calls.first().object).toEqual(spec);
65
- });
66
-
67
- it("should call the start callback on execution but before any befores are called", function() {
68
- var fakeQueueRunner = jasmine.createSpy('fakeQueueRunner'),
69
- beforesWereCalled = false,
70
- startCallback = jasmine.createSpy('start-callback').and.callFake(function() {
71
- expect(beforesWereCalled).toBe(false);
72
- }),
73
- spec = new jasmineUnderTest.Spec({
74
- queueableFn: { fn: function() {} },
75
- beforeFns: function() {
76
- return [function() {
77
- beforesWereCalled = true
78
- }]
79
- },
80
- onStart: startCallback,
81
- queueRunnerFactory: fakeQueueRunner
82
- });
83
-
84
- spec.execute();
85
-
86
- fakeQueueRunner.calls.mostRecent().args[0].queueableFns[0].fn();
87
- expect(startCallback).toHaveBeenCalled();
88
- });
89
-
90
- it("provides all before fns and after fns to be run", function() {
91
- var fakeQueueRunner = jasmine.createSpy('fakeQueueRunner'),
92
- before = jasmine.createSpy('before'),
93
- after = jasmine.createSpy('after'),
94
- queueableFn = { fn: jasmine.createSpy('test body').and.callFake(function() {
95
- expect(before).toHaveBeenCalled();
96
- expect(after).not.toHaveBeenCalled();
97
- }) },
98
- spec = new jasmineUnderTest.Spec({
99
- queueableFn: queueableFn,
100
- beforeAndAfterFns: function() {
101
- return {befores: [before], afters: [after]}
102
- },
103
- queueRunnerFactory: fakeQueueRunner
104
- });
105
-
106
- spec.execute();
107
-
108
- var options = fakeQueueRunner.calls.mostRecent().args[0];
109
- expect(options.queueableFns).toEqual([{fn: jasmine.any(Function)}, before, queueableFn]);
110
- expect(options.cleanupFns).toEqual([after, {fn: jasmine.any(Function)}]);
111
- });
112
-
113
- it("tells the queue runner that it's a leaf node", function() {
114
- var fakeQueueRunner = jasmine.createSpy('fakeQueueRunner'),
115
- spec = new jasmineUnderTest.Spec({
116
- queueableFn: { fn: function() {} },
117
- beforeAndAfterFns: function() {
118
- return {befores: [], afters: []}
119
- },
120
- queueRunnerFactory: fakeQueueRunner
121
- });
122
-
123
- spec.execute();
124
-
125
- expect(fakeQueueRunner).toHaveBeenCalledWith(jasmine.objectContaining({
126
- isLeaf: true
127
- }));
128
- });
129
-
130
- it("is marked pending if created without a function body", function() {
131
- var fakeQueueRunner = jasmine.createSpy('fakeQueueRunner'),
132
-
133
- startCallback = jasmine.createSpy('startCallback'),
134
- resultCallback = jasmine.createSpy('resultCallback'),
135
- spec = new jasmineUnderTest.Spec({
136
- onStart: startCallback,
137
- queueableFn: { fn: null },
138
- resultCallback: resultCallback,
139
- queueRunnerFactory: fakeQueueRunner
140
- });
141
-
142
- expect(spec.status()).toBe('pending');
143
- });
144
-
145
- it("can be excluded at execution time by a parent", function() {
146
- var fakeQueueRunner = jasmine.createSpy('fakeQueueRunner'),
147
- startCallback = jasmine.createSpy('startCallback'),
148
- specBody = jasmine.createSpy('specBody'),
149
- resultCallback = jasmine.createSpy('resultCallback'),
150
- spec = new jasmineUnderTest.Spec({
151
- onStart:startCallback,
152
- queueableFn: { fn: specBody },
153
- resultCallback: resultCallback,
154
- queueRunnerFactory: fakeQueueRunner
155
- });
156
-
157
- spec.execute('cally-back', true);
158
-
159
- expect(fakeQueueRunner).toHaveBeenCalledWith(jasmine.objectContaining({
160
- onComplete: jasmine.any(Function),
161
- queueableFns: [{fn: jasmine.any(Function)}],
162
- cleanupFns: [{fn: jasmine.any(Function)}]
163
- }));
164
- expect(specBody).not.toHaveBeenCalled();
165
-
166
- var args = fakeQueueRunner.calls.mostRecent().args[0];
167
- args.queueableFns[0].fn();
168
- expect(startCallback).toHaveBeenCalled();
169
- args.cleanupFns[0].fn();
170
- expect(resultCallback).toHaveBeenCalled();
171
-
172
- expect(spec.result.status).toBe('excluded');
173
- });
174
-
175
- it("can be marked pending, but still calls callbacks when executed", function() {
176
- var fakeQueueRunner = jasmine.createSpy('fakeQueueRunner'),
177
- startCallback = jasmine.createSpy('startCallback'),
178
- resultCallback = jasmine.createSpy('resultCallback'),
179
- spec = new jasmineUnderTest.Spec({
180
- onStart: startCallback,
181
- resultCallback: resultCallback,
182
- description: "with a spec",
183
- getSpecName: function() {
184
- return "a suite with a spec"
185
- },
186
- queueRunnerFactory: fakeQueueRunner,
187
- queueableFn: { fn: null }
188
- });
189
-
190
- spec.pend();
191
-
192
- expect(spec.status()).toBe('pending');
193
-
194
- spec.execute();
195
-
196
- expect(fakeQueueRunner).toHaveBeenCalled();
197
-
198
- var args = fakeQueueRunner.calls.mostRecent().args[0];
199
- args.queueableFns[0].fn();
200
- expect(startCallback).toHaveBeenCalled();
201
- args.cleanupFns[0].fn('things');
202
- expect(resultCallback).toHaveBeenCalledWith({
203
- id: spec.id,
204
- status: 'pending',
205
- description: 'with a spec',
206
- fullName: 'a suite with a spec',
207
- failedExpectations: [],
208
- passedExpectations: [],
209
- deprecationWarnings: [],
210
- pendingReason: ''
211
- }, 'things');
212
- });
213
-
214
- it("should call the done callback on execution complete", function() {
215
- var done = jasmine.createSpy('done callback'),
216
- spec = new jasmineUnderTest.Spec({
217
- queueableFn: { fn: function() {} },
218
- catchExceptions: function() { return false; },
219
- resultCallback: function() {},
220
- queueRunnerFactory: function(attrs) { attrs.onComplete(); }
221
- });
222
-
223
- spec.execute(done);
224
-
225
- expect(done).toHaveBeenCalled();
226
- });
227
-
228
- it("should call the done callback with an error if the spec is failed", function() {
229
- var done = jasmine.createSpy('done callback'),
230
- spec = new jasmineUnderTest.Spec({
231
- queueableFn: { fn: function() {} },
232
- catchExceptions: function() { return false; },
233
- resultCallback: function() {},
234
- queueRunnerFactory: function(attrs) {
235
- spec.result.status = 'failed';
236
- attrs.onComplete();
237
- }
238
- });
239
-
240
- spec.execute(done);
241
-
242
- expect(done).toHaveBeenCalledWith(jasmine.any(jasmineUnderTest.StopExecutionError));
243
- });
244
-
245
- it("#status returns passing by default", function() {
246
- var spec = new jasmineUnderTest.Spec({queueableFn: { fn: jasmine.createSpy("spec body")} });
247
- expect(spec.status()).toBe('passed');
248
- });
249
-
250
- it("#status returns passed if all expectations in the spec have passed", function() {
251
- var spec = new jasmineUnderTest.Spec({queueableFn: { fn: jasmine.createSpy("spec body")} });
252
- spec.addExpectationResult(true);
253
- expect(spec.status()).toBe('passed');
254
- });
255
-
256
- it("#status returns failed if any expectations in the spec have failed", function() {
257
- var spec = new jasmineUnderTest.Spec({queueableFn: { fn: jasmine.createSpy("spec body") } });
258
- spec.addExpectationResult(true);
259
- spec.addExpectationResult(false);
260
- expect(spec.status()).toBe('failed');
261
- });
262
-
263
- it("keeps track of passed and failed expectations", function() {
264
- var fakeQueueRunner = jasmine.createSpy('queueRunner'),
265
- resultCallback = jasmine.createSpy('resultCallback'),
266
- spec = new jasmineUnderTest.Spec({
267
- queueableFn: { fn: jasmine.createSpy("spec body") },
268
- expectationResultFactory: function (data) { return data; },
269
- queueRunnerFactory: fakeQueueRunner,
270
- resultCallback: resultCallback
271
- });
272
- spec.addExpectationResult(true, 'expectation1');
273
- spec.addExpectationResult(false, 'expectation2');
274
-
275
- spec.execute();
276
-
277
- fakeQueueRunner.calls.mostRecent().args[0].cleanupFns[0].fn();
278
- expect(resultCallback.calls.first().args[0].passedExpectations).toEqual(['expectation1']);
279
- expect(resultCallback.calls.first().args[0].failedExpectations).toEqual(['expectation2']);
280
- });
281
-
282
- it("throws an ExpectationFailed error upon receiving a failed expectation when 'throwOnExpectationFailure' is set", function() {
283
- var fakeQueueRunner = jasmine.createSpy('queueRunner'),
284
- resultCallback = jasmine.createSpy('resultCallback'),
285
- spec = new jasmineUnderTest.Spec({
286
- queueableFn: { fn: function() {} },
287
- expectationResultFactory: function(data) { return data; },
288
- queueRunnerFactory: fakeQueueRunner,
289
- resultCallback: resultCallback,
290
- throwOnExpectationFailure: true
291
- });
292
-
293
- spec.addExpectationResult(true, 'passed');
294
- expect(function() {
295
- spec.addExpectationResult(false, 'failed')
296
- }).toThrowError(jasmineUnderTest.errors.ExpectationFailed);
297
-
298
- spec.execute();
299
-
300
- fakeQueueRunner.calls.mostRecent().args[0].cleanupFns[0].fn();
301
- expect(resultCallback.calls.first().args[0].passedExpectations).toEqual(['passed']);
302
- expect(resultCallback.calls.first().args[0].failedExpectations).toEqual(['failed']);
303
- });
304
-
305
- it("does not throw an ExpectationFailed error when handling an error", function() {
306
- var resultCallback = jasmine.createSpy('resultCallback'),
307
- spec = new jasmineUnderTest.Spec({
308
- queueableFn: { fn: function() {} },
309
- expectationResultFactory: function(data) { return data; },
310
- queueRunnerFactory: function(attrs) { attrs.onComplete(); },
311
- resultCallback: resultCallback,
312
- throwOnExpectationFailure: true
313
- });
314
-
315
- spec.onException('failing exception');
316
- });
317
-
318
- it("can return its full name", function() {
319
- var specNameSpy = jasmine.createSpy('specNameSpy').and.returnValue('expected val');
320
-
321
- var spec = new jasmineUnderTest.Spec({
322
- getSpecName: specNameSpy,
323
- queueableFn: { fn: null }
324
- });
325
-
326
- expect(spec.getFullName()).toBe('expected val');
327
- expect(specNameSpy.calls.mostRecent().args[0].id).toEqual(spec.id);
328
- });
329
-
330
- describe("when a spec is marked pending during execution", function() {
331
- it("should mark the spec as pending", function() {
332
- var fakeQueueRunner = function(opts) {
333
- opts.onException(new Error(jasmineUnderTest.Spec.pendingSpecExceptionMessage));
334
- },
335
- spec = new jasmineUnderTest.Spec({
336
- description: 'my test',
337
- id: 'some-id',
338
- queueableFn: { fn: function() { } },
339
- queueRunnerFactory: fakeQueueRunner
340
- });
341
-
342
- spec.execute();
343
-
344
- expect(spec.status()).toEqual("pending");
345
- expect(spec.result.pendingReason).toEqual('');
346
- });
347
-
348
- it("should set the pendingReason", function() {
349
- var fakeQueueRunner = function(opts) {
350
- opts.onException(new Error(jasmineUnderTest.Spec.pendingSpecExceptionMessage + 'custom message'));
351
- },
352
- spec = new jasmineUnderTest.Spec({
353
- description: 'my test',
354
- id: 'some-id',
355
- queueableFn: { fn: function() { } },
356
- queueRunnerFactory: fakeQueueRunner
357
- });
358
-
359
- spec.execute();
360
-
361
- expect(spec.status()).toEqual("pending");
362
- expect(spec.result.pendingReason).toEqual('custom message');
363
- });
364
- });
365
-
366
- it("should log a failure when handling an exception", function() {
367
- var fakeQueueRunner = jasmine.createSpy('queueRunner'),
368
- resultCallback = jasmine.createSpy('resultCallback'),
369
- spec = new jasmineUnderTest.Spec({
370
- queueableFn: { fn: function() {} },
371
- expectationResultFactory: function(data) { return data; },
372
- queueRunnerFactory: fakeQueueRunner,
373
- resultCallback: resultCallback
374
- });
375
-
376
- spec.onException('foo');
377
- spec.execute();
378
-
379
- var args = fakeQueueRunner.calls.mostRecent().args[0];
380
- args.cleanupFns[0].fn();
381
- expect(resultCallback.calls.first().args[0].failedExpectations).toEqual([{
382
- error: 'foo',
383
- matcherName: '',
384
- passed: false,
385
- expected: '',
386
- actual: ''
387
- }]);
388
- });
389
-
390
- it("should not log an additional failure when handling an ExpectationFailed error", function() {
391
- var fakeQueueRunner = jasmine.createSpy('queueRunner'),
392
- resultCallback = jasmine.createSpy('resultCallback'),
393
- spec = new jasmineUnderTest.Spec({
394
- queueableFn: { fn: function() {} },
395
- expectationResultFactory: function(data) { return data; },
396
- queueRunnerFactory: fakeQueueRunner,
397
- resultCallback: resultCallback
398
- });
399
-
400
- spec.onException(new jasmineUnderTest.errors.ExpectationFailed());
401
- spec.execute();
402
-
403
- var args = fakeQueueRunner.calls.mostRecent().args[0];
404
- args.cleanupFns[0].fn();
405
- expect(resultCallback.calls.first().args[0].failedExpectations).toEqual([]);
406
- });
407
- });