jasnode 0.2.0.0

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.
Files changed (129) hide show
  1. data/.gitignore +1 -0
  2. data/.gitmodules +3 -0
  3. data/MIT.LICENSE +20 -0
  4. data/README.md +28 -0
  5. data/Rakefile +34 -0
  6. data/VERSION.yml +5 -0
  7. data/bin/jasnode +52 -0
  8. data/features/jasnode.feature +24 -0
  9. data/features/step_definitions/jasnode-steps.rb +39 -0
  10. data/jasmine/MIT.LICENSE +20 -0
  11. data/jasmine/README.markdown +502 -0
  12. data/jasmine/Rakefile +158 -0
  13. data/jasmine/cruise_config.rb +21 -0
  14. data/jasmine/doc/files.html +460 -0
  15. data/jasmine/doc/index.html +322 -0
  16. data/jasmine/doc/symbols/_global_.html +918 -0
  17. data/jasmine/doc/symbols/jasmine.Block.html +417 -0
  18. data/jasmine/doc/symbols/jasmine.Clock.html +678 -0
  19. data/jasmine/doc/symbols/jasmine.Env.html +1169 -0
  20. data/jasmine/doc/symbols/jasmine.JsApiReporter.html +822 -0
  21. data/jasmine/doc/symbols/jasmine.Matchers.html +1474 -0
  22. data/jasmine/doc/symbols/jasmine.MultiReporter.html +394 -0
  23. data/jasmine/doc/symbols/jasmine.NestedResults.html +710 -0
  24. data/jasmine/doc/symbols/jasmine.Reporter.html +574 -0
  25. data/jasmine/doc/symbols/jasmine.Runner.html +710 -0
  26. data/jasmine/doc/symbols/jasmine.Spec.html +1253 -0
  27. data/jasmine/doc/symbols/jasmine.Spy.html +855 -0
  28. data/jasmine/doc/symbols/jasmine.Suite.html +705 -0
  29. data/jasmine/doc/symbols/jasmine.html +1345 -0
  30. data/jasmine/doc/symbols/jasmine.util.html +535 -0
  31. data/jasmine/doc/symbols/src/lib_TrivialReporter.js.html +124 -0
  32. data/jasmine/doc/symbols/src/src_Block.js.html +29 -0
  33. data/jasmine/doc/symbols/src/src_Env.js.html +248 -0
  34. data/jasmine/doc/symbols/src/src_JsApiReporter.js.html +111 -0
  35. data/jasmine/doc/symbols/src/src_Matchers.js.html +344 -0
  36. data/jasmine/doc/symbols/src/src_MultiReporter.js.html +36 -0
  37. data/jasmine/doc/symbols/src/src_NestedResults.js.html +88 -0
  38. data/jasmine/doc/symbols/src/src_PrettyPrinter.js.html +130 -0
  39. data/jasmine/doc/symbols/src/src_Queue.js.html +102 -0
  40. data/jasmine/doc/symbols/src/src_Reporter.js.html +35 -0
  41. data/jasmine/doc/symbols/src/src_Reporters.js.html +51 -0
  42. data/jasmine/doc/symbols/src/src_Runner.js.html +75 -0
  43. data/jasmine/doc/symbols/src/src_Spec.js.html +214 -0
  44. data/jasmine/doc/symbols/src/src_Suite.js.html +77 -0
  45. data/jasmine/doc/symbols/src/src_WaitsBlock.js.html +21 -0
  46. data/jasmine/doc/symbols/src/src_WaitsForBlock.js.html +45 -0
  47. data/jasmine/doc/symbols/src/src_base.js.html +585 -0
  48. data/jasmine/doc/symbols/src/src_mock-timeout.js.html +185 -0
  49. data/jasmine/doc/symbols/src/src_util.js.html +75 -0
  50. data/jasmine/examples/html/example_runner.html +27 -0
  51. data/jasmine/examples/html/spec/example_suite.js +11 -0
  52. data/jasmine/examples/ruby/Rakefile +33 -0
  53. data/jasmine/examples/ruby/spec/example/example_spec.js +11 -0
  54. data/jasmine/examples/ruby/spec/jasmine_helper.rb +41 -0
  55. data/jasmine/examples/ruby/spec/jasmine_spec.rb +31 -0
  56. data/jasmine/examples/ruby/spec/saucelabs.yml +24 -0
  57. data/jasmine/geminstaller.yml +25 -0
  58. data/jasmine/images/fail-16.png +0 -0
  59. data/jasmine/images/fail.png +0 -0
  60. data/jasmine/images/go-16.png +0 -0
  61. data/jasmine/images/go.png +0 -0
  62. data/jasmine/images/pending-16.png +0 -0
  63. data/jasmine/images/pending.png +0 -0
  64. data/jasmine/images/question-bk.png +0 -0
  65. data/jasmine/images/questionbk-16.png +0 -0
  66. data/jasmine/images/spinner.gif +0 -0
  67. data/jasmine/lib/TrivialReporter.js +117 -0
  68. data/jasmine/lib/consolex.js +28 -0
  69. data/jasmine/lib/jasmine-0.10.2.js +2318 -0
  70. data/jasmine/lib/jasmine.css +86 -0
  71. data/jasmine/lib/json2.js +478 -0
  72. data/jasmine/spec/jasmine_helper.rb +44 -0
  73. data/jasmine/spec/jasmine_spec.rb +31 -0
  74. data/jasmine/spec/runner.html +79 -0
  75. data/jasmine/spec/saucelabs.yml +24 -0
  76. data/jasmine/spec/suites/CustomMatchersSpec.js +112 -0
  77. data/jasmine/spec/suites/EnvSpec.js +141 -0
  78. data/jasmine/spec/suites/ExceptionsSpec.js +107 -0
  79. data/jasmine/spec/suites/JsApiReporterSpec.js +82 -0
  80. data/jasmine/spec/suites/MatchersSpec.js +709 -0
  81. data/jasmine/spec/suites/MockClockSpec.js +34 -0
  82. data/jasmine/spec/suites/MultiReporterSpec.js +30 -0
  83. data/jasmine/spec/suites/NestedResultsSpec.js +54 -0
  84. data/jasmine/spec/suites/PrettyPrintSpec.js +93 -0
  85. data/jasmine/spec/suites/QueueSpec.js +23 -0
  86. data/jasmine/spec/suites/ReporterSpec.js +60 -0
  87. data/jasmine/spec/suites/RunnerSpec.js +252 -0
  88. data/jasmine/spec/suites/SpecRunningSpec.js +1086 -0
  89. data/jasmine/spec/suites/SpecSpec.js +110 -0
  90. data/jasmine/spec/suites/SpySpec.js +201 -0
  91. data/jasmine/spec/suites/SuiteSpec.js +101 -0
  92. data/jasmine/spec/suites/TrivialReporterSpec.js +140 -0
  93. data/jasmine/spec/suites/UtilSpec.js +40 -0
  94. data/jasmine/src/Block.js +22 -0
  95. data/jasmine/src/Env.js +240 -0
  96. data/jasmine/src/JsApiReporter.js +103 -0
  97. data/jasmine/src/Matchers.js +336 -0
  98. data/jasmine/src/MultiReporter.js +28 -0
  99. data/jasmine/src/NestedResults.js +80 -0
  100. data/jasmine/src/PrettyPrinter.js +122 -0
  101. data/jasmine/src/Queue.js +94 -0
  102. data/jasmine/src/Reporter.js +27 -0
  103. data/jasmine/src/Reporters.js +43 -0
  104. data/jasmine/src/Runner.js +68 -0
  105. data/jasmine/src/Spec.js +206 -0
  106. data/jasmine/src/Suite.js +70 -0
  107. data/jasmine/src/WaitsBlock.js +13 -0
  108. data/jasmine/src/WaitsForBlock.js +38 -0
  109. data/jasmine/src/base.js +578 -0
  110. data/jasmine/src/mock-timeout.js +177 -0
  111. data/jasmine/src/util.js +67 -0
  112. data/jasmine/src/version.json +5 -0
  113. data/jasnode.gemspec +171 -0
  114. data/lib/jasnode/core.rb +180 -0
  115. data/lib/jasnode.js +135 -0
  116. data/lib/jasnode.rb +4 -0
  117. data/pkg/jasnode-0.1.0.0.gem +0 -0
  118. data/spec/jasnode/jasnode_spec.rb +40 -0
  119. data/spec/rspec_suite.rb +8 -0
  120. data/spec/spec_helper.rb +6 -0
  121. data/templates/Rakefile +9 -0
  122. data/templates/bin/hello_world +5 -0
  123. data/templates/lib/server.js +25 -0
  124. data/templates/spec/README.md +3 -0
  125. data/templates/spec/runner.js +16 -0
  126. data/templates/spec/server/server_spec.js +45 -0
  127. data/templates/spec/server/spec_server.js +45 -0
  128. data/templates/spec/spec.js +45 -0
  129. metadata +184 -0
@@ -0,0 +1,79 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2
+ "http://www.w3.org/TR/html4/loose.dtd">
3
+ <html>
4
+ <head>
5
+ <title>Jasmine Test Runner</title>
6
+
7
+ <script type="text/javascript">
8
+ // yes, really keep this here to keep us honest, but only for jasmine's own runner! [xw]
9
+ undefined = "diz be undefined yo";
10
+ </script>
11
+
12
+ <script type="text/javascript" src="../src/base.js"></script>
13
+ <script type="text/javascript" src="../src/util.js"></script>
14
+ <script type="text/javascript" src="../src/Env.js"></script>
15
+ <script type="text/javascript" src="../src/Reporter.js"></script>
16
+ <script type="text/javascript" src="../src/Block.js"></script>
17
+
18
+ <script type="text/javascript" src="../src/JsApiReporter.js"></script>
19
+ <script type="text/javascript" src="../src/Matchers.js"></script>
20
+ <script type="text/javascript" src="../src/mock-timeout.js"></script>
21
+ <script type="text/javascript" src="../src/MultiReporter.js"></script>
22
+ <script type="text/javascript" src="../src/NestedResults.js"></script>
23
+ <script type="text/javascript" src="../src/PrettyPrinter.js"></script>
24
+ <script type="text/javascript" src="../src/Queue.js"></script>
25
+ <script type="text/javascript" src="../src/Reporters.js"></script>
26
+ <script type="text/javascript" src="../src/Runner.js"></script>
27
+ <script type="text/javascript" src="../src/Spec.js"></script>
28
+ <script type="text/javascript" src="../src/Suite.js"></script>
29
+ <script type="text/javascript" src="../src/WaitsBlock.js"></script>
30
+ <script type="text/javascript" src="../src/WaitsForBlock.js"></script>
31
+
32
+ <script type="text/javascript" src="../lib/TrivialReporter.js"></script>
33
+ <script type="text/javascript" src="../lib/consolex.js"></script>
34
+
35
+
36
+
37
+ <script type="text/javascript" src="suites/CustomMatchersSpec.js"></script>
38
+ <script type="text/javascript" src="suites/EnvSpec.js"></script>
39
+ <script type="text/javascript" src="suites/ExceptionsSpec.js"></script>
40
+ <script type="text/javascript" src="suites/JsApiReporterSpec.js"></script>
41
+ <script type="text/javascript" src="suites/MatchersSpec.js"></script>
42
+ <script type="text/javascript" src="suites/MultiReporterSpec.js"></script>
43
+ <script type="text/javascript" src="suites/NestedResultsSpec.js"></script>
44
+ <script type="text/javascript" src="suites/PrettyPrintSpec.js"></script>
45
+ <script type="text/javascript" src="suites/ReporterSpec.js"></script>
46
+ <script type="text/javascript" src="suites/RunnerSpec.js"></script>
47
+ <script type="text/javascript" src="suites/QueueSpec.js"></script>
48
+ <script type="text/javascript" src="suites/SpecSpec.js"></script>
49
+ <script type="text/javascript" src="suites/SpecRunningSpec.js"></script>
50
+ <script type="text/javascript" src="suites/SpySpec.js"></script>
51
+ <script type="text/javascript" src="suites/SuiteSpec.js"></script>
52
+ <script type="text/javascript" src="suites/TrivialReporterSpec.js"></script>
53
+
54
+
55
+ <script type="text/javascript">
56
+ (function() {
57
+ var jasmineEnv = jasmine.getEnv();
58
+ jasmineEnv.updateInterval = 1000;
59
+
60
+ var trivialReporter = new jasmine.TrivialReporter();
61
+
62
+ jasmineEnv.addReporter(trivialReporter);
63
+
64
+ jasmineEnv.specFilter = function(spec) {
65
+ return trivialReporter.specFilter(spec);
66
+ };
67
+
68
+ window.onload = function() {
69
+ jasmineEnv.execute();
70
+ };
71
+ })();
72
+ </script>
73
+
74
+ <link href="../lib/jasmine.css" rel="stylesheet"/>
75
+ </head>
76
+
77
+ <body>
78
+ </body>
79
+ </html>
@@ -0,0 +1,24 @@
1
+ local:
2
+ application_framework: :selenium
3
+ #
4
+ # Possible Sauce Labs configurations as of 2009/11/19
5
+ # From: http://saucelabs.com/products/docs/sauce-ondemand/browsers
6
+ # os: "Windows 2003"
7
+ # browser: "iexplore"
8
+ # browser-version: "6.", "7.", "8."
9
+ # browser: "firefox"
10
+ # browser-version: "2.", "3.0", "3.5"
11
+ # browser: "safari"
12
+ # browser-version: "3.", "4."
13
+ # browser: "opera"
14
+ # browser-version: "9."
15
+ # browser: "googlechrome"
16
+ # browser-version: ""
17
+ # os: "Linux"
18
+ # browser: "firefox"
19
+ # browser-version: "3."
20
+ saucelabs:
21
+ application_framework: :external
22
+ selenium_server_address: "saucelabs.com"
23
+ selenium_browser_key: '{"username": "--YOUR-SAUCELABS-USERNAME--", "access-key": "--YOUR-SAUCELABS-ACCESS-KEY--", "os": "Linux", "browser": "firefox", "browser-version": "3."}'
24
+ application_port: "80"
@@ -0,0 +1,112 @@
1
+ describe("Custom Matchers", function() {
2
+ var env;
3
+ var fakeTimer;
4
+
5
+ beforeEach(function() {
6
+ env = new jasmine.Env();
7
+ env.updateInterval = 0;
8
+ });
9
+
10
+ it("should be easy to add more matchers local to a spec, suite, etc.", function() {
11
+ var spec1, spec2, spec1Matcher, spec2Matcher;
12
+ var suite = env.describe('some suite', function() {
13
+ env.beforeEach(function() {
14
+ this.addMatchers({ matcherForSuite: function(expected) {
15
+ return "matcherForSuite: actual: " + this.actual + "; expected: " + expected;
16
+ } });
17
+ });
18
+
19
+ spec1 = env.it('spec with an expectation').runs(function () {
20
+ this.addMatchers({ matcherForSpec: function(expected) {
21
+ return "matcherForSpec: actual: " + this.actual + "; expected: " + expected;
22
+ } });
23
+ spec1Matcher = this.expect("xxx");
24
+ });
25
+
26
+ spec2 = env.it('spec with failing expectation').runs(function () {
27
+ spec2Matcher = this.expect("yyy");
28
+ });
29
+ });
30
+
31
+ suite.execute();
32
+
33
+ expect(spec1Matcher.matcherForSuite("expected")).toEqual("matcherForSuite: actual: xxx; expected: expected");
34
+ expect(spec1Matcher.matcherForSpec("expected")).toEqual("matcherForSpec: actual: xxx; expected: expected");
35
+
36
+ expect(spec2Matcher.matcherForSuite("expected")).toEqual("matcherForSuite: actual: yyy; expected: expected");
37
+ expect(spec2Matcher.matcherForSpec).toBe(jasmine.undefined);
38
+ });
39
+
40
+ it("should generate messages with the same rules as for regular matchers when this.report() is not called", function() {
41
+ var spec;
42
+ var suite = env.describe('some suite', function() {
43
+ spec = env.it('spec with an expectation').runs(function () {
44
+ this.addMatchers({
45
+ toBeTrue: function() {
46
+ return this.actual === true;
47
+ }
48
+ });
49
+ this.expect(true).toBeTrue();
50
+ this.expect(false).toBeTrue();
51
+ });
52
+ });
53
+
54
+ suite.execute();
55
+ var passResult = new jasmine.ExpectationResult({passed: true, matcherName: 'toBeTrue',
56
+ actual: true, expected: jasmine.undefined, message: "Passed." });
57
+ var failResult = new jasmine.ExpectationResult({passed: false, matcherName: 'toBeTrue',
58
+ actual: false, expected: jasmine.undefined, message: "Expected false to be true." });
59
+ failResult.trace = jasmine.any(Object);
60
+ expect(spec.results().getItems()).toEqual([passResult, failResult]);
61
+ });
62
+
63
+ it("should pass args", function() {
64
+ var matcherCallArgs = [];
65
+ var spec;
66
+ var suite = env.describe('some suite', function() {
67
+ spec = env.it('spec with an expectation').runs(function () {
68
+ this.addMatchers({
69
+ toBeTrue: function() {
70
+ matcherCallArgs.push(jasmine.util.argsToArray(arguments));
71
+ return this.actual === true;
72
+ }
73
+ });
74
+ this.expect(true).toBeTrue();
75
+ this.expect(false).toBeTrue('arg');
76
+ this.expect(true).toBeTrue('arg1', 'arg2');
77
+ });
78
+ });
79
+
80
+ suite.execute();
81
+ var results = spec.results().getItems();
82
+ expect(results[0].expected).toEqual(jasmine.undefined);
83
+ expect(results[1].expected).toEqual('arg');
84
+ expect(results[2].expected).toEqual(['arg1', 'arg2']);
85
+
86
+ expect(matcherCallArgs).toEqual([[], ['arg'], ['arg1', 'arg2']]);
87
+ });
88
+
89
+ describe("in the old style", function() {
90
+ it("should report a deprecation error", function() {
91
+ var spec;
92
+ var suite = env.describe('some suite', function() {
93
+ spec = env.it('spec with an expectation').runs(function () {
94
+ this.addMatchers({
95
+ toBeTrue: function() {
96
+ this.report(this.actual === true, this.actual + " was not true.", "details");
97
+ }
98
+ });
99
+ this.expect(true).toBeTrue();
100
+ this.expect(false).toBeTrue();
101
+ });
102
+ });
103
+
104
+ suite.execute();
105
+ var passResult = new jasmine.ExpectationResult({passed: true, message: "Passed.", details: "details"});
106
+ var failResult = new jasmine.ExpectationResult({passed: false, message: "false was not true.", details: "details"});
107
+ failResult.trace = jasmine.any(Object);
108
+ expect(spec.results().getItems()).toEqual([passResult, failResult]);
109
+ });
110
+ });
111
+
112
+ });
@@ -0,0 +1,141 @@
1
+ describe("jasmine.Env", function() {
2
+ var env;
3
+ beforeEach(function() {
4
+ env = new jasmine.Env();
5
+ env.updateInterval = 0;
6
+ });
7
+
8
+ describe('ids', function () {
9
+ it('nextSpecId should return consecutive integers, starting at 0', function () {
10
+ expect(env.nextSpecId()).toEqual(0);
11
+ expect(env.nextSpecId()).toEqual(1);
12
+ expect(env.nextSpecId()).toEqual(2);
13
+ });
14
+ });
15
+
16
+ describe("reporting", function() {
17
+ var fakeReporter;
18
+
19
+ beforeEach(function() {
20
+ fakeReporter = jasmine.createSpyObj("fakeReporter", ["log"]);
21
+ });
22
+
23
+ describe('version', function () {
24
+ var oldVersion;
25
+
26
+ beforeEach(function () {
27
+ oldVersion = jasmine.version_;
28
+ });
29
+
30
+ afterEach(function () {
31
+ jasmine.version_ = oldVersion;
32
+ });
33
+
34
+ it('should raise an error if version is not set', function () {
35
+ jasmine.version_ = null;
36
+ var exception;
37
+ try {
38
+ env.version();
39
+ }
40
+ catch (e) {
41
+ exception = e;
42
+ }
43
+ expect(exception.message).toEqual('Version not set');
44
+ });
45
+
46
+ it("version should return the current version as an int", function() {
47
+ jasmine.version_ = {
48
+ "major": 1,
49
+ "minor": 9,
50
+ "build": 7,
51
+ "revision": 8
52
+ };
53
+ expect(env.version()).toEqual({
54
+ "major": 1,
55
+ "minor": 9,
56
+ "build": 7,
57
+ "revision": 8
58
+ });
59
+ });
60
+ });
61
+
62
+ it("should allow reporters to be registered", function() {
63
+ env.addReporter(fakeReporter);
64
+ env.reporter.log("message");
65
+ expect(fakeReporter.log).wasCalledWith("message");
66
+ });
67
+ });
68
+
69
+ describe("equality testing", function() {
70
+ describe("with custom equality testers", function() {
71
+ var aObj, bObj, isEqual;
72
+
73
+ beforeEach(function() {
74
+ env.addEqualityTester(function(a, b) {
75
+ aObj = a;
76
+ bObj = b;
77
+ return isEqual;
78
+ });
79
+ });
80
+
81
+ it("should call the custom equality tester with two objects for comparison", function() {
82
+ env.equals_("1", "2");
83
+ expect(aObj).toEqual("1");
84
+ expect(bObj).toEqual("2");
85
+ });
86
+
87
+ describe("when the custom equality tester returns false", function() {
88
+ beforeEach(function() {
89
+ isEqual = false;
90
+ });
91
+
92
+ it("should give custom equality testers precedence", function() {
93
+ expect(env.equals_('abc', 'abc')).toBeFalsy();
94
+ var o = new Object();
95
+ expect(env.equals_(o, o)).toBeFalsy();
96
+ });
97
+ });
98
+
99
+
100
+ describe("when the custom equality tester returns true", function() {
101
+ beforeEach(function() {
102
+ isEqual = true;
103
+ });
104
+
105
+ it("should give custom equality testers precedence", function() {
106
+ expect(env.equals_('abc', 'def')).toBeTruthy();
107
+ expect(env.equals_(true, false)).toBeTruthy();
108
+ });
109
+ });
110
+
111
+ describe("when the custom equality tester returns undefined", function() {
112
+ beforeEach(function() {
113
+ isEqual = jasmine.undefined;
114
+ });
115
+
116
+ it("should use normal equality rules", function() {
117
+ expect(env.equals_('abc', 'abc')).toBeTruthy();
118
+ expect(env.equals_('abc', 'def')).toBeFalsy();
119
+ });
120
+
121
+ describe("even if there are several", function() {
122
+ beforeEach(function() {
123
+ env.addEqualityTester(function(a, b) { return jasmine.undefined; });
124
+ env.addEqualityTester(function(a, b) { return jasmine.undefined; });
125
+ });
126
+
127
+ it("should use normal equality rules", function() {
128
+ expect(env.equals_('abc', 'abc')).toBeTruthy();
129
+ expect(env.equals_('abc', 'def')).toBeFalsy();
130
+ });
131
+ });
132
+ });
133
+
134
+ it("should evaluate custom equality testers in the order they are declared", function() {
135
+ isEqual = false;
136
+ env.addEqualityTester(function(a, b) { return true; });
137
+ expect(env.equals_('abc', 'abc')).toBeFalsy();
138
+ });
139
+ });
140
+ });
141
+ });
@@ -0,0 +1,107 @@
1
+ describe('Exceptions:', function() {
2
+ var env;
3
+
4
+ beforeEach(function() {
5
+ env = new jasmine.Env();
6
+ env.updateInterval = 0;
7
+ });
8
+
9
+ it('jasmine.formatException formats Firefox exception messages as expected', function() {
10
+ var sampleFirefoxException = {
11
+ fileName: 'foo.js',
12
+ line: '1978',
13
+ message: 'you got your foo in my bar',
14
+ name: 'A Classic Mistake'
15
+ };
16
+
17
+ var expected = 'A Classic Mistake: you got your foo in my bar in foo.js (line 1978)';
18
+
19
+ expect(jasmine.util.formatException(sampleFirefoxException)).toEqual(expected);
20
+ });
21
+
22
+ it('jasmine.formatException formats Webkit exception messages as expected', function() {
23
+ var sampleWebkitException = {
24
+ sourceURL: 'foo.js',
25
+ lineNumber: '1978',
26
+ message: 'you got your foo in my bar',
27
+ name: 'A Classic Mistake'
28
+ };
29
+
30
+ var expected = 'A Classic Mistake: you got your foo in my bar in foo.js (line 1978)';
31
+
32
+ expect(jasmine.util.formatException(sampleWebkitException)).toEqual(expected);
33
+ });
34
+
35
+ it('should handle exceptions thrown, but continue', function() {
36
+ var fakeTimer = new jasmine.FakeTimer();
37
+ env.setTimeout = fakeTimer.setTimeout;
38
+ env.clearTimeout = fakeTimer.clearTimeout;
39
+ env.setInterval = fakeTimer.setInterval;
40
+ env.clearInterval = fakeTimer.clearInterval;
41
+
42
+ //we run two exception tests to make sure we continue after throwing an exception
43
+ var suite = env.describe('Suite for handles exceptions', function () {
44
+ env.it('should be a test that fails because it throws an exception', function() {
45
+ throw new Error('fake error 1');
46
+ });
47
+
48
+ env.it('should be another test that fails because it throws an exception', function() {
49
+ this.runs(function () {
50
+ throw new Error('fake error 2');
51
+ });
52
+ this.runs(function () {
53
+ this.expect(true).toEqual(true);
54
+ });
55
+ });
56
+
57
+ env.it('should be a passing test that runs after exceptions are thrown', function() {
58
+ this.expect(true).toEqual(true);
59
+ });
60
+
61
+ env.it('should be another test that fails because it throws an exception after a wait', function() {
62
+ this.runs(function () {
63
+ var foo = 'foo';
64
+ });
65
+ this.waits(250);
66
+ this.runs(function () {
67
+ throw new Error('fake error 3');
68
+ });
69
+ });
70
+
71
+ env.it('should be a passing test that runs after exceptions are thrown from a async test', function() {
72
+ this.expect(true).toEqual(true);
73
+ });
74
+ });
75
+
76
+ var runner = env.currentRunner();
77
+ suite.execute();
78
+ fakeTimer.tick(2500);
79
+
80
+ var suiteResults = suite.results();
81
+ var specResults = suiteResults.getItems();
82
+
83
+ expect(suiteResults.passed()).toEqual(false);
84
+ //
85
+ expect(specResults.length).toEqual(5);
86
+ expect(specResults[0].passed()).toMatch(false);
87
+ var blockResults = specResults[0].getItems();
88
+ expect(blockResults[0].passed()).toEqual(false);
89
+ expect(blockResults[0].message).toMatch(/fake error 1/);
90
+
91
+ expect(specResults[1].passed()).toEqual(false);
92
+ var blockResults = specResults[1].getItems();
93
+ expect(blockResults[0].passed()).toEqual(false);
94
+ expect(blockResults[0].message).toMatch(/fake error 2/),
95
+ expect(blockResults[1].passed()).toEqual(true);
96
+
97
+ expect(specResults[2].passed()).toEqual(true);
98
+
99
+ expect(specResults[3].passed()).toEqual(false);
100
+ blockResults = specResults[3].getItems();
101
+ expect(blockResults[0].message).toMatch(/fake error 3/);
102
+
103
+ expect(specResults[4].passed()).toEqual(true);
104
+
105
+ });
106
+
107
+ });
@@ -0,0 +1,82 @@
1
+ describe('jasmine.jsApiReporter', function() {
2
+
3
+
4
+ describe('results', function () {
5
+ var reporter, spec1, spec2, spec3, expectedSpec1Results, expectedSpec2Results;
6
+
7
+ beforeEach(function() {
8
+ var env = new jasmine.Env();
9
+ env.updateInterval = 0;
10
+ var suite = new jasmine.Suite(env);
11
+ spec1 = new jasmine.Spec(env, suite, 'spec 1');
12
+ spec1.runs(function () {
13
+ this.expect(true).toEqual(true);
14
+ });
15
+ expectedSpec1Results = {
16
+ messages: spec1.results().getItems(),
17
+ result: "passed"
18
+ };
19
+ spec2 = new jasmine.Spec(env, suite, 'spec 2');
20
+ spec2.runs(function () {
21
+ this.expect(true).toEqual(false);
22
+ });
23
+ expectedSpec2Results = {
24
+ messages: spec2.results().getItems(),
25
+ result: "failed"
26
+ };
27
+
28
+ spec3 = new jasmine.Spec(env, suite, 'spec 3');
29
+ spec3.runs(function () {
30
+ this.log('some debug message')
31
+ });
32
+
33
+ spec1.execute();
34
+ spec2.execute();
35
+ spec3.execute();
36
+
37
+ reporter = new jasmine.JsApiReporter();
38
+ reporter.reportSpecResults(spec1);
39
+ reporter.reportSpecResults(spec2);
40
+ reporter.reportSpecResults(spec3);
41
+ });
42
+
43
+ it('resultForSpec() should return the result for the given spec', function () {
44
+ expect(reporter.resultsForSpec(spec1.id)).toEqual(expectedSpec1Results);
45
+ expect(reporter.resultsForSpec(spec2.id)).toEqual(expectedSpec2Results);
46
+
47
+ });
48
+
49
+ it('results() should return a hash of all results, indexed by spec id', function () {
50
+ expect(reporter.results()[spec1.id]).toEqual(expectedSpec1Results);
51
+ expect(reporter.results()[spec2.id]).toEqual(expectedSpec2Results);
52
+ });
53
+
54
+ describe("#summarizeResult_", function() {
55
+ it("should summarize a passing result", function() {
56
+ var result = reporter.results()[spec1.id];
57
+ var summarizedResult = reporter.summarizeResult_(result);
58
+ expect(summarizedResult.result).toEqual('passed');
59
+ expect(summarizedResult.messages.length).toEqual(1);
60
+ expect(summarizedResult.messages[0].message).toEqual(result.messages[0].message);
61
+ expect(summarizedResult.messages[0].passed).toBeTruthy();
62
+ expect(summarizedResult.messages[0].type).toEqual('ExpectationResult');
63
+ expect(summarizedResult.messages[0].text).toEqual(jasmine.undefined);
64
+ expect(summarizedResult.messages[0].trace.stack).toEqual(jasmine.undefined);
65
+ });
66
+
67
+ it("should have a stack trace for failing specs", function() {
68
+ var result = reporter.results()[spec2.id];
69
+ var summarizedResult = reporter.summarizeResult_(result);
70
+ expect(summarizedResult.result).toEqual('failed');
71
+ expect(summarizedResult.messages[0].trace.stack).toEqual(result.messages[0].trace.stack);
72
+ });
73
+
74
+ it("should have messages for specs with messages", function() {
75
+ var result = reporter.results()[spec3.id];
76
+ var summarizedResult = reporter.summarizeResult_(result);
77
+ expect(summarizedResult.result).toEqual('passed');
78
+ expect(summarizedResult.messages[0].text).toEqual('some debug message');
79
+ });
80
+ });
81
+ });
82
+ });