shuriken 0.1.2.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. data/.gitignore +1 -0
  2. data/Rakefile +28 -0
  3. data/coffeescripts/shuriken/test/assertions.coffee +111 -0
  4. data/coffeescripts/shuriken/test/reporters.coffee +61 -0
  5. data/coffeescripts/shuriken/test.coffee +117 -0
  6. data/coffeescripts/shuriken.coffee +2 -2
  7. data/javascripts/shuriken/mixins/callbacks.js +45 -0
  8. data/javascripts/shuriken/mixins.js +58 -0
  9. data/javascripts/shuriken/test/assertions.js +117 -0
  10. data/javascripts/shuriken/test/reporters.js +84 -0
  11. data/javascripts/shuriken/test.js +165 -0
  12. data/javascripts/shuriken.js +195 -0
  13. data/lib/shuriken.rb +1 -1
  14. data/shuriken.gemspec +84 -4
  15. data/tests/basic_namespace_tests.coffee +114 -0
  16. data/tests/template.erb +26 -0
  17. data/tests.watchr +6 -0
  18. data/vendor/jasmine-0.10.0/MIT.LICENSE +20 -0
  19. data/vendor/jasmine-0.10.0/README.markdown +437 -0
  20. data/vendor/jasmine-0.10.0/doc/files.html +460 -0
  21. data/vendor/jasmine-0.10.0/doc/index.html +322 -0
  22. data/vendor/jasmine-0.10.0/doc/symbols/_global_.html +918 -0
  23. data/vendor/jasmine-0.10.0/doc/symbols/jasmine.Block.html +417 -0
  24. data/vendor/jasmine-0.10.0/doc/symbols/jasmine.Clock.html +678 -0
  25. data/vendor/jasmine-0.10.0/doc/symbols/jasmine.Env.html +1169 -0
  26. data/vendor/jasmine-0.10.0/doc/symbols/jasmine.JsApiReporter.html +822 -0
  27. data/vendor/jasmine-0.10.0/doc/symbols/jasmine.Matchers.html +1461 -0
  28. data/vendor/jasmine-0.10.0/doc/symbols/jasmine.MultiReporter.html +394 -0
  29. data/vendor/jasmine-0.10.0/doc/symbols/jasmine.NestedResults.html +710 -0
  30. data/vendor/jasmine-0.10.0/doc/symbols/jasmine.Reporter.html +574 -0
  31. data/vendor/jasmine-0.10.0/doc/symbols/jasmine.Runner.html +710 -0
  32. data/vendor/jasmine-0.10.0/doc/symbols/jasmine.Spec.html +1259 -0
  33. data/vendor/jasmine-0.10.0/doc/symbols/jasmine.Spy.html +855 -0
  34. data/vendor/jasmine-0.10.0/doc/symbols/jasmine.Suite.html +705 -0
  35. data/vendor/jasmine-0.10.0/doc/symbols/jasmine.html +1345 -0
  36. data/vendor/jasmine-0.10.0/doc/symbols/jasmine.util.html +535 -0
  37. data/vendor/jasmine-0.10.0/doc/symbols/src/lib_TrivialReporter.js.html +124 -0
  38. data/vendor/jasmine-0.10.0/doc/symbols/src/src_Block.js.html +29 -0
  39. data/vendor/jasmine-0.10.0/doc/symbols/src/src_Env.js.html +240 -0
  40. data/vendor/jasmine-0.10.0/doc/symbols/src/src_JsApiReporter.js.html +111 -0
  41. data/vendor/jasmine-0.10.0/doc/symbols/src/src_Matchers.js.html +328 -0
  42. data/vendor/jasmine-0.10.0/doc/symbols/src/src_MultiReporter.js.html +36 -0
  43. data/vendor/jasmine-0.10.0/doc/symbols/src/src_NestedResults.js.html +88 -0
  44. data/vendor/jasmine-0.10.0/doc/symbols/src/src_PrettyPrinter.js.html +130 -0
  45. data/vendor/jasmine-0.10.0/doc/symbols/src/src_Queue.js.html +102 -0
  46. data/vendor/jasmine-0.10.0/doc/symbols/src/src_Reporter.js.html +35 -0
  47. data/vendor/jasmine-0.10.0/doc/symbols/src/src_Reporters.js.html +51 -0
  48. data/vendor/jasmine-0.10.0/doc/symbols/src/src_Runner.js.html +75 -0
  49. data/vendor/jasmine-0.10.0/doc/symbols/src/src_Spec.js.html +211 -0
  50. data/vendor/jasmine-0.10.0/doc/symbols/src/src_Suite.js.html +77 -0
  51. data/vendor/jasmine-0.10.0/doc/symbols/src/src_WaitsBlock.js.html +21 -0
  52. data/vendor/jasmine-0.10.0/doc/symbols/src/src_WaitsForBlock.js.html +45 -0
  53. data/vendor/jasmine-0.10.0/doc/symbols/src/src_base.js.html +555 -0
  54. data/vendor/jasmine-0.10.0/doc/symbols/src/src_mock-timeout.js.html +185 -0
  55. data/vendor/jasmine-0.10.0/doc/symbols/src/src_util.js.html +75 -0
  56. data/vendor/jasmine-0.10.0/example/example_runner.html +25 -0
  57. data/vendor/jasmine-0.10.0/example/spec/example_suite.js +11 -0
  58. data/vendor/jasmine-0.10.0/lib/TrivialReporter.js +117 -0
  59. data/vendor/jasmine-0.10.0/lib/consolex.js +28 -0
  60. data/vendor/jasmine-0.10.0/lib/jasmine-0.10.0.js +2261 -0
  61. data/vendor/jasmine-0.10.0/lib/jasmine.css +86 -0
  62. data/vendor/jasmine-0.10.0/spec/runner.html +63 -0
  63. data/vendor/jasmine-0.10.0/spec/suites/CustomMatchersSpec.js +112 -0
  64. data/vendor/jasmine-0.10.0/spec/suites/EnvSpec.js +71 -0
  65. data/vendor/jasmine-0.10.0/spec/suites/ExceptionsSpec.js +107 -0
  66. data/vendor/jasmine-0.10.0/spec/suites/JsApiReporterSpec.js +82 -0
  67. data/vendor/jasmine-0.10.0/spec/suites/MatchersSpec.js +589 -0
  68. data/vendor/jasmine-0.10.0/spec/suites/MockClockSpec.js +34 -0
  69. data/vendor/jasmine-0.10.0/spec/suites/MultiReporterSpec.js +30 -0
  70. data/vendor/jasmine-0.10.0/spec/suites/NestedResultsSpec.js +54 -0
  71. data/vendor/jasmine-0.10.0/spec/suites/PrettyPrintSpec.js +93 -0
  72. data/vendor/jasmine-0.10.0/spec/suites/QueueSpec.js +23 -0
  73. data/vendor/jasmine-0.10.0/spec/suites/ReporterSpec.js +60 -0
  74. data/vendor/jasmine-0.10.0/spec/suites/RunnerSpec.js +258 -0
  75. data/vendor/jasmine-0.10.0/spec/suites/SpecRunningSpec.js +1086 -0
  76. data/vendor/jasmine-0.10.0/spec/suites/SpecSpec.js +110 -0
  77. data/vendor/jasmine-0.10.0/spec/suites/SpySpec.js +187 -0
  78. data/vendor/jasmine-0.10.0/spec/suites/SuiteSpec.js +101 -0
  79. data/vendor/jasmine-0.10.0/spec/suites/TrivialReporterSpec.js +140 -0
  80. data/vendor/jasmine-0.10.0/spec/suites/UtilSpec.js +23 -0
  81. data/vendor/jquery.js +154 -0
  82. data/wip-coffeescripts/example_test.coffee +0 -0
  83. data/wip-coffeescripts/test/assertions.coffee +111 -0
  84. data/wip-coffeescripts/test/reporters.coffee +61 -0
  85. data/wip-coffeescripts/test.coffee +96 -15
  86. metadata +83 -4
@@ -0,0 +1,110 @@
1
+ describe('Spec', function () {
2
+ var env, suite;
3
+ beforeEach(function() {
4
+ env = new jasmine.Env();
5
+ env.updateInterval = 0;
6
+ suite = new jasmine.Suite(env, 'suite 1');
7
+ });
8
+
9
+ describe('initialization', function () {
10
+
11
+ it('should raise an error if an env is not passed', function () {
12
+ try {
13
+ new jasmine.Spec();
14
+ }
15
+ catch (e) {
16
+ expect(e.message).toEqual('jasmine.Env() required');
17
+ }
18
+ });
19
+
20
+ it('should raise an error if a suite is not passed', function () {
21
+ try {
22
+ new jasmine.Spec(env);
23
+ }
24
+ catch (e) {
25
+ expect(e.message).toEqual('jasmine.Suite() required');
26
+ }
27
+ });
28
+
29
+ it('should assign sequential ids for specs belonging to the same env', function () {
30
+ var spec1 = new jasmine.Spec(env, suite);
31
+ var spec2 = new jasmine.Spec(env, suite);
32
+ var spec3 = new jasmine.Spec(env, suite);
33
+ expect(spec1.id).toEqual(0);
34
+ expect(spec2.id).toEqual(1);
35
+ expect(spec3.id).toEqual(2);
36
+ });
37
+
38
+ });
39
+
40
+ it('getFullName returns suite & spec description', function () {
41
+ var spec = new jasmine.Spec(env, suite, 'spec 1');
42
+ expect(spec.getFullName()).toEqual('suite 1 spec 1.')
43
+ });
44
+
45
+ describe('results', function () {
46
+ var spec, results;
47
+ beforeEach(function () {
48
+ spec = new jasmine.Spec(env, suite);
49
+ results = spec.results();
50
+ expect(results.totalCount).toEqual(0);
51
+ spec.runs(function () {
52
+ this.expect(true).toEqual(true);
53
+ this.expect(true).toEqual(true);
54
+ });
55
+ });
56
+
57
+
58
+ it('results shows the total number of expectations for each spec after execution', function () {
59
+ expect(results.totalCount).toEqual(0);
60
+ spec.execute();
61
+ expect(results.totalCount).toEqual(2);
62
+ });
63
+
64
+ it('results shows the number of passed expectations for each spec after execution', function () {
65
+ expect(results.passedCount).toEqual(0);
66
+ spec.execute();
67
+ expect(results.passedCount).toEqual(2);
68
+ });
69
+
70
+ it('results shows the number of failed expectations for each spec after execution', function () {
71
+ spec.runs(function () {
72
+ this.expect(true).toEqual(false);
73
+ });
74
+ expect(results.failedCount).toEqual(0);
75
+ spec.execute();
76
+ expect(results.failedCount).toEqual(1);
77
+ });
78
+
79
+ describe('results.passed', function () {
80
+ it('is true if all spec expectations pass', function () {
81
+ spec.runs(function () {
82
+ this.expect(true).toEqual(true);
83
+ });
84
+ spec.execute();
85
+ expect(results.passed()).toEqual(true);
86
+ });
87
+
88
+ it('is false if one spec expectation fails', function () {
89
+ spec.runs(function () {
90
+ this.expect(true).toEqual(false);
91
+ });
92
+ spec.execute();
93
+ expect(results.passed()).toEqual(false);
94
+ });
95
+
96
+ it('a spec with no expectations will return true', function () {
97
+ var specWithoutExpectations = new jasmine.Spec(env, suite);
98
+ specWithoutExpectations.runs(function() {
99
+
100
+ });
101
+ specWithoutExpectations.execute();
102
+ expect(results.passed()).toEqual(true);
103
+ });
104
+
105
+ it('an unexecuted spec will return true', function () {
106
+ expect(results.passed()).toEqual(true);
107
+ });
108
+ });
109
+ });
110
+ });
@@ -0,0 +1,187 @@
1
+ describe('Spies', function () {
2
+ it('should replace the specified function with a spy object', function() {
3
+ var originalFunctionWasCalled = false;
4
+ var TestClass = {
5
+ someFunction: function() {
6
+ originalFunctionWasCalled = true;
7
+ }
8
+ };
9
+ this.spyOn(TestClass, 'someFunction');
10
+
11
+ expect(TestClass.someFunction.wasCalled).toEqual(false);
12
+ expect(TestClass.someFunction.callCount).toEqual(0);
13
+ TestClass.someFunction('foo');
14
+ expect(TestClass.someFunction.wasCalled).toEqual(true);
15
+ expect(TestClass.someFunction.callCount).toEqual(1);
16
+ expect(TestClass.someFunction.mostRecentCall.args).toEqual(['foo']);
17
+ expect(TestClass.someFunction.mostRecentCall.object).toEqual(TestClass);
18
+ expect(originalFunctionWasCalled).toEqual(false);
19
+
20
+ TestClass.someFunction('bar');
21
+ expect(TestClass.someFunction.callCount).toEqual(2);
22
+ expect(TestClass.someFunction.mostRecentCall.args).toEqual(['bar']);
23
+ });
24
+
25
+ it('should allow you to view args for a particular call', function() {
26
+ var originalFunctionWasCalled = false;
27
+ var TestClass = {
28
+ someFunction: function() {
29
+ originalFunctionWasCalled = true;
30
+ }
31
+ };
32
+ this.spyOn(TestClass, 'someFunction');
33
+
34
+ TestClass.someFunction('foo');
35
+ TestClass.someFunction('bar');
36
+ expect(TestClass.someFunction.calls[0].args).toEqual(['foo']);
37
+ expect(TestClass.someFunction.calls[1].args).toEqual(['bar']);
38
+ expect(TestClass.someFunction.mostRecentCall.args).toEqual(['bar']);
39
+ });
40
+
41
+ it('should be possible to call through to the original method, or return a specific result', function() {
42
+ var originalFunctionWasCalled = false;
43
+ var passedArgs;
44
+ var passedObj;
45
+ var TestClass = {
46
+ someFunction: function() {
47
+ originalFunctionWasCalled = true;
48
+ passedArgs = arguments;
49
+ passedObj = this;
50
+ return "return value from original function";
51
+ }
52
+ };
53
+
54
+ this.spyOn(TestClass, 'someFunction').andCallThrough();
55
+ var result = TestClass.someFunction('arg1', 'arg2');
56
+ expect(result).toEqual("return value from original function");
57
+ expect(originalFunctionWasCalled).toEqual(true);
58
+ expect(passedArgs).toEqual(['arg1', 'arg2']);
59
+ expect(passedObj).toEqual(TestClass);
60
+ expect(TestClass.someFunction.wasCalled).toEqual(true);
61
+ });
62
+
63
+ it('should be possible to return a specific value', function() {
64
+ var originalFunctionWasCalled = false;
65
+ var TestClass = {
66
+ someFunction: function() {
67
+ originalFunctionWasCalled = true;
68
+ return "return value from original function";
69
+ }
70
+ };
71
+
72
+ this.spyOn(TestClass, 'someFunction').andReturn("some value");
73
+ originalFunctionWasCalled = false;
74
+ var result = TestClass.someFunction('arg1', 'arg2');
75
+ expect(result).toEqual("some value");
76
+ expect(originalFunctionWasCalled).toEqual(false);
77
+ });
78
+
79
+ it('should be possible to throw a specific error', function() {
80
+ var originalFunctionWasCalled = false;
81
+ var TestClass = {
82
+ someFunction: function() {
83
+ originalFunctionWasCalled = true;
84
+ return "return value from original function";
85
+ }
86
+ };
87
+
88
+ this.spyOn(TestClass, 'someFunction').andThrow(new Error('fake error'));
89
+ var exception;
90
+ try {
91
+ TestClass.someFunction('arg1', 'arg2');
92
+ } catch (e) {
93
+ exception = e;
94
+ }
95
+ expect(exception.message).toEqual('fake error');
96
+ expect(originalFunctionWasCalled).toEqual(false);
97
+ });
98
+
99
+ it('should be possible to call a specified function', function() {
100
+ var originalFunctionWasCalled = false;
101
+ var fakeFunctionWasCalled = false;
102
+ var passedArgs;
103
+ var passedObj;
104
+ var TestClass = {
105
+ someFunction: function() {
106
+ originalFunctionWasCalled = true;
107
+ return "return value from original function";
108
+ }
109
+ };
110
+
111
+ this.spyOn(TestClass, 'someFunction').andCallFake(function() {
112
+ fakeFunctionWasCalled = true;
113
+ passedArgs = arguments;
114
+ passedObj = this;
115
+ return "return value from fake function";
116
+ });
117
+
118
+ var result = TestClass.someFunction('arg1', 'arg2');
119
+ expect(result).toEqual("return value from fake function");
120
+ expect(originalFunctionWasCalled).toEqual(false);
121
+ expect(fakeFunctionWasCalled).toEqual(true);
122
+ expect(passedArgs).toEqual(['arg1', 'arg2']);
123
+ expect(passedObj).toEqual(TestClass);
124
+ expect(TestClass.someFunction.wasCalled).toEqual(true);
125
+ });
126
+
127
+ it('is torn down when this.removeAllSpies is called', function() {
128
+ var originalFunctionWasCalled = false;
129
+ var TestClass = {
130
+ someFunction: function() {
131
+ originalFunctionWasCalled = true;
132
+ }
133
+ };
134
+ this.spyOn(TestClass, 'someFunction');
135
+
136
+ TestClass.someFunction('foo');
137
+ expect(originalFunctionWasCalled).toEqual(false);
138
+
139
+ this.removeAllSpies();
140
+
141
+ TestClass.someFunction('foo');
142
+ expect(originalFunctionWasCalled).toEqual(true);
143
+ });
144
+
145
+ it('calls removeAllSpies during spec finish', function() {
146
+ var test = new jasmine.Spec(new jasmine.Env(), {}, 'sample test');
147
+
148
+ this.spyOn(test, 'removeAllSpies');
149
+
150
+ test.finish();
151
+
152
+ expect(test.removeAllSpies).wasCalled();
153
+ });
154
+
155
+ it('throws an exception when some method is spied on twice', function() {
156
+ var TestClass = { someFunction: function() {
157
+ } };
158
+ this.spyOn(TestClass, 'someFunction');
159
+ var exception;
160
+ try {
161
+ this.spyOn(TestClass, 'someFunction');
162
+ } catch (e) {
163
+ exception = e;
164
+ }
165
+ expect(exception).toBeDefined();
166
+ });
167
+
168
+ it('should be able to reset a spy', function() {
169
+ var TestClass = { someFunction: function() {} };
170
+ this.spyOn(TestClass, 'someFunction');
171
+
172
+ expect(TestClass.someFunction).wasNotCalled();
173
+ TestClass.someFunction();
174
+ expect(TestClass.someFunction).wasCalled();
175
+ TestClass.someFunction.reset();
176
+ expect(TestClass.someFunction).wasNotCalled();
177
+ expect(TestClass.someFunction.callCount).toEqual(0);
178
+ });
179
+
180
+ it("should create an object with a bunch of spy methods when you call jasmine.createSpyObj()", function() {
181
+ var spyObj = jasmine.createSpyObj('BaseName', ['method1', 'method2']);
182
+ expect(spyObj).toEqual({ method1: jasmine.any(Function), method2: jasmine.any(Function)});
183
+ expect(spyObj.method1.identity).toEqual('BaseName.method1');
184
+ expect(spyObj.method2.identity).toEqual('BaseName.method2');
185
+ });
186
+
187
+ });
@@ -0,0 +1,101 @@
1
+ describe('Suite', function() {
2
+ var fakeTimer;
3
+ var env;
4
+
5
+ beforeEach(function() {
6
+ env = new jasmine.Env();
7
+ env.updateInterval = 0;
8
+
9
+ fakeTimer = new jasmine.FakeTimer();
10
+ env.setTimeout = fakeTimer.setTimeout;
11
+ env.clearTimeout = fakeTimer.clearTimeout;
12
+ env.setInterval = fakeTimer.setInterval;
13
+ env.clearInterval = fakeTimer.clearInterval;
14
+ });
15
+
16
+ describe('Specs', function () {
17
+ it('#specs should return all immediate children that are specs.', function () {
18
+ var suite =env.describe('Suite 1', function () {
19
+ env.it('Spec 1', function() {
20
+ this.runs(function () {
21
+ this.expect(true).toEqual(true);
22
+ });
23
+ });
24
+ env.it('Spec 2', function() {
25
+ this.runs(function () {
26
+ this.expect(true).toEqual(true);
27
+ });
28
+ });
29
+ env.describe('Suite 2', function () {
30
+ env.it('Spec 3', function() {
31
+ this.runs(function () {
32
+ this.expect(true).toEqual(true);
33
+ });
34
+ });
35
+ });
36
+ env.it('Spec 4', function() {
37
+ this.runs(function () {
38
+ this.expect(true).toEqual(true);
39
+ });
40
+ });
41
+ });
42
+
43
+ var suiteSpecs = suite.specs();
44
+ expect(suiteSpecs.length).toEqual(3);
45
+ expect(suiteSpecs[0].description).toEqual('Spec 1');
46
+ expect(suiteSpecs[1].description).toEqual('Spec 2');
47
+ expect(suiteSpecs[2].description).toEqual('Spec 4');
48
+ });
49
+
50
+ describe('SpecCount', function () {
51
+
52
+ it('should keep a count of the number of specs that are run', function() {
53
+ var suite = env.describe('one suite description', function () {
54
+ env.it('should be a test', function() {
55
+ this.runs(function () {
56
+ this.expect(true).toEqual(true);
57
+ });
58
+ });
59
+ env.it('should be another test', function() {
60
+ this.runs(function () {
61
+ this.expect(true).toEqual(true);
62
+ });
63
+ });
64
+ env.it('should be a third test', function() {
65
+ this.runs(function () {
66
+ this.expect(true).toEqual(true);
67
+ });
68
+ });
69
+ });
70
+
71
+ expect(suite.specs().length).toEqual(3);
72
+ });
73
+
74
+ it('specCount should be correct even with runs/waits blocks', function() {
75
+ var suite = env.describe('one suite description', function () {
76
+ env.it('should be a test', function() {
77
+ this.runs(function () {
78
+ this.expect(true).toEqual(true);
79
+ });
80
+ });
81
+ env.it('should be another test', function() {
82
+ this.runs(function () {
83
+ this.expect(true).toEqual(true);
84
+ });
85
+ this.waits(10);
86
+ this.runs(function () {
87
+ this.expect(true).toEqual(true);
88
+ });
89
+ });
90
+ env.it('should be a third test', function() {
91
+ this.runs(function () {
92
+ this.expect(true).toEqual(true);
93
+ });
94
+ });
95
+ });
96
+
97
+ expect(suite.specs().length).toEqual(3);
98
+ });
99
+ });
100
+ });
101
+ });
@@ -0,0 +1,140 @@
1
+ describe("TrivialReporter", function() {
2
+ var trivialReporter;
3
+ var body;
4
+
5
+ beforeEach(function() {
6
+ body = document.createElement("body");
7
+ });
8
+
9
+ function fakeSpec(name) {
10
+ return {
11
+ getFullName: function() {
12
+ return name;
13
+ }
14
+ };
15
+ }
16
+
17
+ it("should run only specs beginning with spec parameter", function() {
18
+ var trivialReporter = new jasmine.TrivialReporter({ location: {search: "?spec=run%20this"} });
19
+ expect(trivialReporter.specFilter(fakeSpec("run this"))).toBeTruthy();
20
+ expect(trivialReporter.specFilter(fakeSpec("not the right spec"))).toBeFalsy();
21
+ expect(trivialReporter.specFilter(fakeSpec("not run this"))).toBeFalsy();
22
+ });
23
+
24
+ it("should display empty divs for every suite when the runner is starting", function() {
25
+ var trivialReporter = new jasmine.TrivialReporter({ body: body });
26
+ trivialReporter.reportRunnerStarting({
27
+ suites: function() {
28
+ return [ new jasmine.Suite({}, "suite 1", null, null) ];
29
+ }
30
+ });
31
+
32
+ var divs = body.getElementsByTagName("div");
33
+ expect(divs.length).toEqual(2);
34
+ expect(divs[1].innerHTML).toContain("suite 1");
35
+ });
36
+
37
+ describe('Matcher reporting', function () {
38
+ var getResultMessageDiv = function (body) {
39
+ var divs = body.getElementsByTagName("div");
40
+ for (var i = 0; i < divs.length; i++) {
41
+ if (divs[i].className.match(/resultMessage/)) {
42
+ return divs[i];
43
+ }
44
+ }
45
+ };
46
+
47
+ var runner, spec, fakeTimer;
48
+ beforeEach(function () {
49
+ var env = new jasmine.Env();
50
+ fakeTimer = new jasmine.FakeTimer();
51
+ env.setTimeout = fakeTimer.setTimeout;
52
+ env.clearTimeout = fakeTimer.clearTimeout;
53
+ env.setInterval = fakeTimer.setInterval;
54
+ env.clearInterval = fakeTimer.clearInterval;
55
+ runner = env.currentRunner();
56
+ var suite = new jasmine.Suite(env, 'some suite');
57
+ runner.add(suite);
58
+ spec = new jasmine.Spec(env, suite, 'some spec');
59
+ suite.add(spec);
60
+ var trivialReporter = new jasmine.TrivialReporter({ body: body, location: {search: "?"} });
61
+ env.addReporter(trivialReporter);
62
+ });
63
+
64
+ describe('toContain', function () {
65
+ it('should show actual and expected', function () {
66
+ spec.runs(function () {
67
+ this.expect('foo').toContain('bar');
68
+ });
69
+ runner.execute();
70
+ fakeTimer.tick(0);
71
+
72
+ var resultEl = getResultMessageDiv(body);
73
+ expect(resultEl.innerHTML).toMatch(/foo/);
74
+ expect(resultEl.innerHTML).toMatch(/bar/);
75
+ });
76
+ });
77
+ });
78
+
79
+
80
+ describe("failure messages (integration)", function () {
81
+ var spec, results, expectationResult;
82
+
83
+ beforeEach(function() {
84
+ results = {
85
+ passed: function() {
86
+ return false;
87
+ },
88
+ getItems: function() {
89
+ }};
90
+
91
+ spec = {
92
+ suite: {
93
+ getFullName: function() {
94
+ return "suite 1";
95
+ }
96
+ },
97
+ getFullName: function() {
98
+ return "foo";
99
+ },
100
+ results: function() {
101
+ return results;
102
+ }
103
+ };
104
+
105
+ trivialReporter = new jasmine.TrivialReporter({ body: body });
106
+ trivialReporter.reportRunnerStarting({
107
+ suites: function() {
108
+ return [ new jasmine.Suite({}, "suite 1", null, null) ];
109
+ }
110
+ });
111
+ });
112
+
113
+ it("should add the failure message to the DOM (non-toEquals matchers)", function() {
114
+ expectationResult = new jasmine.ExpectationResult({
115
+ matcherName: "toBeNull", passed: false, message: "Expected 'a' to be null, but it was not"
116
+ });
117
+
118
+ spyOn(results, 'getItems').andReturn([expectationResult]);
119
+
120
+ trivialReporter.reportSpecResults(spec);
121
+
122
+ var divs = body.getElementsByTagName("div");
123
+ expect(divs[3].innerHTML).toEqual("Expected 'a' to be null, but it was not");
124
+ });
125
+
126
+ it("should add the failure message to the DOM (non-toEquals matchers)", function() {
127
+ expectationResult = new jasmine.ExpectationResult({
128
+ matcherName: "toBeNull", passed: false, message: "Expected '1 < 2' to <b>e null, & it was not"
129
+ });
130
+
131
+ spyOn(results, 'getItems').andReturn([expectationResult]);
132
+
133
+ trivialReporter.reportSpecResults(spec);
134
+
135
+ var divs = body.getElementsByTagName("div");
136
+ expect(divs[3].innerHTML).toEqual("Expected '1 &lt; 2' to &lt;b&gt;e null, &amp; it was not");
137
+ });
138
+ });
139
+
140
+ });
@@ -0,0 +1,23 @@
1
+ describe("jasmine.util", function() {
2
+ describe("extend", function () {
3
+ it("should add properies to a destination object ", function() {
4
+ var destination = {baz: 'baz'};
5
+ jasmine.util.extend(destination, {
6
+ foo: 'foo', bar: 'bar'
7
+ });
8
+ expect(destination).toEqual({foo: 'foo', bar: 'bar', baz: 'baz'});
9
+ });
10
+
11
+ it("should replace properies that already exist on a destination object", function() {
12
+ var destination = {foo: 'foo'};
13
+ jasmine.util.extend(destination, {
14
+ foo: 'bar'
15
+ });
16
+ expect(destination).toEqual({foo: 'bar'});
17
+ jasmine.util.extend(destination, {
18
+ foo: null
19
+ });
20
+ expect(destination).toEqual({foo: null});
21
+ });
22
+ });
23
+ });