visionmedia-jspec 2.9.1 → 2.10.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,9 @@
1
1
 
2
+ === 2.10.0 / 2009-08-27
3
+
4
+ * Added Async support via mock timers (lib/jspec.timers.js) [#19]
5
+ * IRC channel up and running! irc://irc.freenode.net#jspec
6
+
2
7
  === 2.9.1 / 2009-08-21
3
8
 
4
9
  * Added module support for formatters
data/Manifest CHANGED
@@ -10,6 +10,7 @@ lib/images/vr.png
10
10
  lib/jspec.css
11
11
  lib/jspec.jquery.js
12
12
  lib/jspec.js
13
+ lib/jspec.timers.js
13
14
  lib/jspec.xhr.js
14
15
  Manifest
15
16
  Rakefile
@@ -189,6 +189,44 @@ JSpec.options.failuresOnly = true, and ?failuresOnly=1 will both work.
189
189
  - be_disabled
190
190
  - be_selected
191
191
  - be_checked
192
+
193
+ == Async Support With Mock Timers
194
+
195
+ The javascript mock timers library is available at http://github.com/visionmedia/js-mock-timers
196
+ although it is already bundled with JSpec at lib/jspec.timers.js
197
+
198
+ Timers return ids and may be passed to clearInterval(), however
199
+ they do not execute in threads, they must be manually scheduled and
200
+ controlled via the tick() function.
201
+
202
+ setTimeout(function(){
203
+ alert('Wahoo!')
204
+ }, 400)
205
+
206
+ tick(200) // Nothing happens
207
+ tick(400) // Wahoo!
208
+
209
+ setInterval() works as expected, although it persists, where as setTimeout()
210
+ is destroyed after a single call. As conveyed by the last tick() call below,
211
+ a large increment in milliseconds may cause the callbacks to be called several times
212
+ to 'catch up'.
213
+
214
+ progress = ''
215
+ var id = setInterval(function(){
216
+ progress += '.'
217
+ }, 100)
218
+
219
+ tick(50), print(progress) // ''
220
+ tick(50), print(progress) // '.'
221
+ tick(100), print(progress) // '..'
222
+ tick(100), print(progress) // '...'
223
+ tick(300), print(progress) // '......'
224
+
225
+ clearInterval(id)
226
+
227
+ tick(800) // Nothing happens
228
+
229
+ You may also reset at any time using resetTimers()
192
230
 
193
231
  == Proxy Assertions
194
232
 
@@ -531,11 +569,13 @@ example view lib/jspec.jquery.js.
531
569
 
532
570
  The following methods or properties are utilized by JSpec:
533
571
 
534
- - init : called to initialize a module
535
- - utilities : hash of utility functions merged with JSpec.defaultContext
536
- - matchers : hash of matchers merged with JSpec's core matchers via JSpec.addMatchers()
537
- - DSLs : hash of DSL methods; for example DSLs.snake contains before_each, after_each, etc.
538
- Where as DSLs.camel may contain beforeEach, afterEach, etc.
572
+ - name : module name string
573
+ - init : called to initialize a module
574
+ - formatters : hash of formatters merged with JSpec.formatters
575
+ - utilities : hash of utility functions merged with JSpec.defaultContext
576
+ - matchers : hash of matchers merged with JSpec's core matchers via JSpec.addMatchers()
577
+ - DSLs : hash of DSL methods; for example DSLs.snake contains before_each, after_each, etc.
578
+ Where as DSLs.camel may contain beforeEach, afterEach, etc.
539
579
 
540
580
  Below is a list of hooks, descriptions, and valid return values which
541
581
  may simply be implemented as module methods. beforeSuite, afterSuite, beforeSpec, and afterSpec have lower
@@ -705,6 +745,7 @@ Or run via the terminal using Rhino:
705
745
 
706
746
  == More Information
707
747
 
748
+ * IRC Channel irc://irc.freenode.net#jspec
708
749
  * Featured article in JSMag: http://www.jsmag.com/main.issues.description/id=21/
709
750
  * Syntax comparison with other frameworks http://gist.github.com/92283
710
751
  * Get the TextMate bundle at https://github.com/visionmedia/jspec.tmbundle/tree
data/bin/jspec CHANGED
@@ -12,7 +12,7 @@ require 'server/server'
12
12
  RHINO = 'java org.mozilla.javascript.tools.shell.Main'
13
13
 
14
14
  program :name, 'JSpec'
15
- program :version, '2.9.1'
15
+ program :version, '2.10.0'
16
16
  program :description, 'JavaScript BDD Testing Framework'
17
17
  default_command :bind
18
18
 
@@ -2,17 +2,17 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{jspec}
5
- s.version = "2.9.1"
5
+ s.version = "2.10.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["TJ Holowaychuk"]
9
- s.date = %q{2009-08-21}
9
+ s.date = %q{2009-08-27}
10
10
  s.default_executable = %q{jspec}
11
11
  s.description = %q{JavaScript BDD Testing Framework}
12
12
  s.email = %q{tj@vision-media.ca}
13
13
  s.executables = ["jspec"]
14
- s.extra_rdoc_files = ["bin/jspec", "lib/images/bg.png", "lib/images/hr.png", "lib/images/loading.gif", "lib/images/sprites.bg.png", "lib/images/sprites.png", "lib/images/vr.png", "lib/jspec.css", "lib/jspec.jquery.js", "lib/jspec.js", "lib/jspec.xhr.js", "README.rdoc"]
15
- s.files = ["bin/jspec", "History.rdoc", "jspec.gemspec", "lib/images/bg.png", "lib/images/hr.png", "lib/images/loading.gif", "lib/images/sprites.bg.png", "lib/images/sprites.png", "lib/images/vr.png", "lib/jspec.css", "lib/jspec.jquery.js", "lib/jspec.js", "lib/jspec.xhr.js", "Manifest", "Rakefile", "README.rdoc", "server/browsers.rb", "server/helpers.rb", "server/routes.rb", "server/server.rb", "spec/async", "spec/env.js", "spec/fixtures/test.html", "spec/fixtures/test.json", "spec/fixtures/test.xml", "spec/modules.js", "spec/server.rb", "spec/spec.dom.html", "spec/spec.fixtures.js", "spec/spec.grammar-less.js", "spec/spec.grammar.js", "spec/spec.jquery.js", "spec/spec.jquery.xhr.js", "spec/spec.js", "spec/spec.matchers.js", "spec/spec.modules.js", "spec/spec.node.js", "spec/spec.rhino.js", "spec/spec.server.html", "spec/spec.shared-behaviors.js", "spec/spec.utils.js", "spec/spec.xhr.js", "templates/default/History.rdoc", "templates/default/lib/yourlib.core.js", "templates/default/README.rdoc", "templates/default/spec/server.rb", "templates/default/spec/spec.core.js", "templates/default/spec/spec.dom.html", "templates/default/spec/spec.rhino.js", "templates/default/spec/spec.server.html", "templates/rails/server.rb", "templates/rails/spec.application.js", "templates/rails/spec.dom.html", "templates/rails/spec.rhino.js", "templates/rails/spec.server.html"]
14
+ s.extra_rdoc_files = ["bin/jspec", "lib/images/bg.png", "lib/images/hr.png", "lib/images/loading.gif", "lib/images/sprites.bg.png", "lib/images/sprites.png", "lib/images/vr.png", "lib/jspec.css", "lib/jspec.jquery.js", "lib/jspec.js", "lib/jspec.timers.js", "lib/jspec.xhr.js", "README.rdoc"]
15
+ s.files = ["bin/jspec", "History.rdoc", "jspec.gemspec", "lib/images/bg.png", "lib/images/hr.png", "lib/images/loading.gif", "lib/images/sprites.bg.png", "lib/images/sprites.png", "lib/images/vr.png", "lib/jspec.css", "lib/jspec.jquery.js", "lib/jspec.js", "lib/jspec.timers.js", "lib/jspec.xhr.js", "Manifest", "Rakefile", "README.rdoc", "server/browsers.rb", "server/helpers.rb", "server/routes.rb", "server/server.rb", "spec/async", "spec/env.js", "spec/fixtures/test.html", "spec/fixtures/test.json", "spec/fixtures/test.xml", "spec/modules.js", "spec/server.rb", "spec/spec.dom.html", "spec/spec.fixtures.js", "spec/spec.grammar-less.js", "spec/spec.grammar.js", "spec/spec.jquery.js", "spec/spec.jquery.xhr.js", "spec/spec.js", "spec/spec.matchers.js", "spec/spec.modules.js", "spec/spec.node.js", "spec/spec.rhino.js", "spec/spec.server.html", "spec/spec.shared-behaviors.js", "spec/spec.utils.js", "spec/spec.xhr.js", "templates/default/History.rdoc", "templates/default/lib/yourlib.core.js", "templates/default/README.rdoc", "templates/default/spec/server.rb", "templates/default/spec/spec.core.js", "templates/default/spec/spec.dom.html", "templates/default/spec/spec.rhino.js", "templates/default/spec/spec.server.html", "templates/rails/server.rb", "templates/rails/spec.application.js", "templates/rails/spec.dom.html", "templates/rails/spec.rhino.js", "templates/rails/spec.server.html"]
16
16
  s.homepage = %q{http://visionmedia.github.com/jspec}
17
17
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Jspec", "--main", "README.rdoc"]
18
18
  s.require_paths = ["lib"]
@@ -4,6 +4,7 @@
4
4
  JSpec
5
5
  .requires('jQuery', 'when using jspec.jquery.js')
6
6
  .include({
7
+ name: 'jQuery',
7
8
 
8
9
  // --- Initialize
9
10
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  JSpec = {
7
7
 
8
- version : '2.9.1',
8
+ version : '2.10.0',
9
9
  cache : {},
10
10
  suites : [],
11
11
  modules : [],
@@ -0,0 +1,84 @@
1
+
2
+ // Mock Timers - 1.0.0 - Copyright TJ Holowaychuk <tj@vision-media.ca> (MIT Licensed)
3
+
4
+ ;(function(){
5
+
6
+ /**
7
+ * Localized timer stack.
8
+ */
9
+
10
+ var timers = []
11
+
12
+ /**
13
+ * Set mock timeout with _callback_ and timeout of _ms_.
14
+ *
15
+ * @param {function} callback
16
+ * @param {int} ms
17
+ * @return {int}
18
+ * @api public
19
+ */
20
+
21
+ setTimeout = function(callback, ms) {
22
+ var id
23
+ return id = setInterval(function(){
24
+ callback()
25
+ clearInterval(id)
26
+ }, ms)
27
+ }
28
+
29
+ /**
30
+ * Set mock interval with _callback_ and interval of _ms_.
31
+ *
32
+ * @param {function} callback
33
+ * @param {int} ms
34
+ * @return {int}
35
+ * @api public
36
+ */
37
+
38
+ setInterval = function(callback, ms) {
39
+ callback.step = ms, callback.current = callback.last = 0
40
+ return timers[timers.length] = callback, timers.length
41
+ }
42
+
43
+ /**
44
+ * Destroy timer with _id_.
45
+ *
46
+ * @param {int} id
47
+ * @return {bool}
48
+ * @api public
49
+ */
50
+
51
+ clearInterval = function(id) {
52
+ return delete timers[--id]
53
+ }
54
+
55
+ /**
56
+ * Reset timers.
57
+ *
58
+ * @return {array}
59
+ * @api public
60
+ */
61
+
62
+ resetTimers = function() {
63
+ return timers = []
64
+ }
65
+
66
+ /**
67
+ * Increment each timers internal clock by _ms_.
68
+ *
69
+ * @param {int} ms
70
+ * @api public
71
+ */
72
+
73
+ tick = function(ms) {
74
+ for (var i = 0, len = timers.length; i < len; ++i)
75
+ if (timers[i] && (timers[i].current += ms))
76
+ if (timers[i].current - timers[i].last >= timers[i].step) {
77
+ var times = Math.floor((timers[i].current - timers[i].last) / timers[i].step)
78
+ var remainder = (timers[i].current - timers[i].last) % timers[i].step
79
+ timers[i].last = timers[i].current - remainder
80
+ while (times--) timers[i]()
81
+ }
82
+ }
83
+
84
+ })()
@@ -155,6 +155,7 @@
155
155
  }
156
156
 
157
157
  JSpec.include({
158
+ name: 'Mock XHR',
158
159
 
159
160
  // --- Utilities
160
161
 
@@ -5,6 +5,7 @@
5
5
  <script src="../lib/jspec.js"></script>
6
6
  <script src="../lib/jspec.jquery.js"></script>
7
7
  <script src="../lib/jspec.xhr.js"></script>
8
+ <script src="../lib/jspec.timers.js"></script>
8
9
  <script src="modules.js"></script>
9
10
  <script src="spec.grammar-less.js"></script>
10
11
  <script>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: visionmedia-jspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.9.1
4
+ version: 2.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - TJ Holowaychuk
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-08-21 00:00:00 -07:00
12
+ date: 2009-08-27 00:00:00 -07:00
13
13
  default_executable: jspec
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -69,6 +69,7 @@ extra_rdoc_files:
69
69
  - lib/jspec.css
70
70
  - lib/jspec.jquery.js
71
71
  - lib/jspec.js
72
+ - lib/jspec.timers.js
72
73
  - lib/jspec.xhr.js
73
74
  - README.rdoc
74
75
  files:
@@ -84,6 +85,7 @@ files:
84
85
  - lib/jspec.css
85
86
  - lib/jspec.jquery.js
86
87
  - lib/jspec.js
88
+ - lib/jspec.timers.js
87
89
  - lib/jspec.xhr.js
88
90
  - Manifest
89
91
  - Rakefile