chai-backbone-rails 0.1.1 → 0.1.2

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.
data/README.md CHANGED
@@ -41,7 +41,8 @@ this can also be chained further:
41
41
 
42
42
  ### Changes
43
43
 
44
- (-> view.$('p').length).should.change.by(4).when -> collection.add 1, 2, 3, 4
44
+ expect(-> view.$('p').length).to.change.by(4).when -> collection.add [{}, {}, {}, {}]
45
+ expect(-> result).to.not.change.when -> somethingElse()
45
46
 
46
47
  Using Sinon Chai Matchers
47
48
  -------------------------
@@ -1,7 +1,7 @@
1
1
  module Chai
2
2
  module Backbone
3
3
  module Rails
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.2"
5
5
  end
6
6
  end
7
7
  end
@@ -104,14 +104,14 @@
104
104
 
105
105
  # now assert if everything went according to spec
106
106
  @assert spy.calledOnce,
107
- "expected '#{route}' to route to #{methodName}",
108
- "expected '#{route}' not to route to #{methodName}"
107
+ "expected `#{route}` to route to #{methodName}",
108
+ "expected `#{route}` not to route to #{methodName}"
109
109
 
110
110
  # verify arguments if they were provided
111
111
  if options.arguments?
112
112
  @assert spy.calledWith(options.arguments...),
113
- "expected '#{methodName}' to be called with #{inspect options.arguments}, but was called with #{inspect spy.args[0]} instead",
114
- "expected '#{methodName}' not to be called with #{inspect options.arguments}, but was"
113
+ "expected `#{methodName}` to be called with #{inspect options.arguments}, but was called with #{inspect spy.args[0]} instead",
114
+ "expected `#{methodName}` not to be called with #{inspect options.arguments}, but was"
115
115
 
116
116
  chai.Assertion.addChainableMethod 'to', routeTo, -> this
117
117
 
@@ -123,10 +123,6 @@
123
123
  chai.Assertion.addProperty 'change', ->
124
124
  flag(this, 'change', true)
125
125
 
126
- formatFunction = (func) ->
127
- func.toString().replace(/^\s*function \(\) {\s*/, '').replace(/\s+}$/, '').replace(/\s*return\s*/, '')
128
-
129
- changeBy = (delta) ->
130
126
  definedActions = flag(this, 'whenActions') || []
131
127
 
132
128
  # Add a around filter to the when actions
@@ -137,19 +133,35 @@
137
133
  before: (context) ->
138
134
  @startValue = flag(context, 'object')()
139
135
 
136
+ expectedChange: 0
137
+
140
138
  # verify if our callback is triggered
141
139
  after: (context) ->
142
140
  negate = flag(context, 'negate')
143
141
  flag(context, 'negate', @negate)
144
142
  object = flag(context, 'object')
145
143
  @endValue = object()
146
- context.assert (@startValue + delta is @endValue),
147
- "expected \"#{formatFunction object}\" to change by #{delta} but it was changed by #{@endValue - @startValue}",
148
- "expected \"#{formatFunction object}\" not change"
144
+ actualChange = @endValue - @startValue
145
+
146
+ result = (@expectedChange is actualChange)
147
+ result = !result if negate
148
+ context.assert result,
149
+ "expected `#{formatFunction object}` to change by #{@expectedChange} but it changed by #{actualChange}",
150
+ "expected `#{formatFunction object}` not to change, but it changed by #{actualChange}",
149
151
 
150
152
  flag(context, 'negate', negate)
151
153
  flag(this, 'whenActions', definedActions)
152
154
 
155
+ formatFunction = (func) ->
156
+ func.toString().replace(/^\s*function \(\) {\s*/, '').replace(/\s+}$/, '').replace(/\s*return\s*/, '')
157
+
158
+ changeBy = (delta) ->
159
+ definedActions = flag(this, 'whenActions') || []
160
+ if definedActions.length > 0
161
+ action = definedActions[definedActions.length - 1]
162
+ action.expectedChange = delta
163
+ flag(this, 'whenActions', definedActions)
164
+
153
165
  chai.Assertion.addChainableMethod 'by', changeBy, -> this
154
166
 
155
167
  )
@@ -42,3 +42,23 @@ describe 'Chai-Backbone', ->
42
42
  it 'leaves the `to` keyword working properly', ->
43
43
  expect('1').to.be.equal '1'
44
44
 
45
+ describe 'change', ->
46
+
47
+ it 'asserts the delta of a change', ->
48
+ result = 1
49
+ expect(-> result).to.change.by(3).when -> result += 3
50
+
51
+ it 'reports the contents of the subject method', ->
52
+ result = 1
53
+ expect(->
54
+ (-> 1 + 3; result).should.change.by(3).when -> result += 2
55
+ ).to.throw 'expected `1 + 3;result;` to change by 3 but it changed by 2'
56
+
57
+ it 'can be negated to not.change', ->
58
+ result = 1
59
+ expect(->
60
+ expect(-> result).to.not.change.when -> result += 2
61
+ ).to.throw 'expected `result;` not to change, but it changed by 2'
62
+ expect(-> result).to.not.change.when -> 1 + 3
63
+
64
+
metadata CHANGED
@@ -1,23 +1,33 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: chai-backbone-rails
3
- version: !ruby/object:Gem::Version
4
- version: 0.1.1
3
+ version: !ruby/object:Gem::Version
4
+ hash: 31
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 2
10
+ version: 0.1.2
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Matthijs Groen
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2012-09-26 00:00:00.000000000 Z
17
+
18
+ date: 2012-09-26 00:00:00 Z
13
19
  dependencies: []
20
+
14
21
  description: Chai.js matchers for Backbone.js framework
15
- email:
22
+ email:
16
23
  - matthijs.groen@gmail.com
17
24
  executables: []
25
+
18
26
  extensions: []
27
+
19
28
  extra_rdoc_files: []
20
- files:
29
+
30
+ files:
21
31
  - .gitignore
22
32
  - Gemfile
23
33
  - LICENSE
@@ -34,28 +44,38 @@ files:
34
44
  - vendor/assets/javascripts/spec/chai-backbone_spec.js.coffee
35
45
  - vendor/assets/javascripts/spec/chai-sinon_spec.js.coffee
36
46
  - vendor/assets/javascripts/spec/factory_spec.js.coffee
37
- homepage: ''
47
+ homepage: ""
38
48
  licenses: []
49
+
39
50
  post_install_message:
40
51
  rdoc_options: []
41
- require_paths:
52
+
53
+ require_paths:
42
54
  - lib
43
- required_ruby_version: !ruby/object:Gem::Requirement
55
+ required_ruby_version: !ruby/object:Gem::Requirement
44
56
  none: false
45
- requirements:
46
- - - ! '>='
47
- - !ruby/object:Gem::Version
48
- version: '0'
49
- required_rubygems_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ hash: 3
61
+ segments:
62
+ - 0
63
+ version: "0"
64
+ required_rubygems_version: !ruby/object:Gem::Requirement
50
65
  none: false
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ hash: 3
70
+ segments:
71
+ - 0
72
+ version: "0"
55
73
  requirements: []
74
+
56
75
  rubyforge_project:
57
- rubygems_version: 1.8.24
76
+ rubygems_version: 1.8.15
58
77
  signing_key:
59
78
  specification_version: 3
60
79
  summary: A set of assertion matchers to test Backbone code using Konacha in Rails
61
80
  test_files: []
81
+