Skip to content

Commit bb3672a

Browse files
committed
More cleanup and coverage
1 parent 393d1d5 commit bb3672a

File tree

2 files changed

+33
-40
lines changed

2 files changed

+33
-40
lines changed

main.coffee

+10-21
Original file line numberDiff line numberDiff line change
@@ -122,12 +122,6 @@ module.exports = Observable = (value, context) ->
122122

123123
# Extra methods for array observables
124124
extend self,
125-
each: (callback) ->
126-
self.forEach (item, index) ->
127-
callback.call(item, item, index, self)
128-
129-
return self
130-
131125
# Remove an element from the array and notify observers of changes.
132126
remove: (object) ->
133127
index = value.indexOf(object)
@@ -200,16 +194,6 @@ tryCallWithFinallyPop = (observableDependencies, fn, context) ->
200194
global.OBSERVABLE_ROOT_HACK.pop()
201195

202196

203-
# Check if we can proxy function length property.
204-
try
205-
Object.defineProperty (->), 'length',
206-
get: ->
207-
set: ->
208-
209-
PROXY_LENGTH = true
210-
catch
211-
PROXY_LENGTH = false
212-
213197
remove = (array, value) ->
214198
index = array.indexOf(value)
215199

@@ -222,9 +206,14 @@ copy = (array) ->
222206
last = (array) ->
223207
array[array.length - 1]
224208

225-
flatten = (array) ->
226-
array.reduce (a, b) ->
227-
a.concat(b)
228-
, []
229-
230209
noop = ->
210+
211+
# Check if we can proxy function length property.
212+
try
213+
Object.defineProperty (->), 'length',
214+
get: noop
215+
set: noop
216+
217+
PROXY_LENGTH = true
218+
catch
219+
PROXY_LENGTH = false

test/observable.coffee

+23-19
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ describe 'Observable', ->
3030

3131
assert.equal o, Observable(o)
3232

33+
it "should have releaseDependencies as a noop because primitive observables don't have any dependencies", ->
34+
o = Observable(5)
35+
o.releaseDependencies()
36+
3337
it "should allow for stopping observation", ->
3438
observable = Observable("string")
3539

@@ -48,6 +52,10 @@ describe 'Observable', ->
4852

4953
assert.equal called, 1
5054

55+
it "should do nothing when removing a listener that's not present", ->
56+
observable = Observable("string")
57+
observable.stopObserving ->
58+
5159
it "should increment", ->
5260
observable = Observable 1
5361

@@ -120,16 +128,13 @@ describe "Observable Array", ->
120128

121129
assert.equal o.last(), 3
122130

123-
it "#remove", (done) ->
131+
it "#remove", ->
124132
o = Observable [0, 1, 2, 3]
125133

126-
o.observe (newValue) ->
127-
assert.equal newValue.length, 3
128-
setTimeout ->
129-
done()
130-
, 0
131-
132134
assert.equal o.remove(2), 2
135+
assert.equal o.length, 3
136+
assert.equal o.remove(-5), undefined
137+
assert.equal o.length, 3
133138

134139
it "#remove non-existent element", ->
135140
o = Observable [1, 2, 3]
@@ -393,19 +398,18 @@ describe "Observable functions", ->
393398

394399
assert.equal o(), "wat"
395400

396-
describe "Scoping", ->
397-
it "should be scoped to optional context", (done) ->
398-
model =
399-
firstName: Observable "Duder"
400-
lastName: Observable "Man"
401+
it "should be scoped to optional context", (done) ->
402+
model =
403+
firstName: Observable "Duder"
404+
lastName: Observable "Man"
401405

402-
model.name = Observable ->
403-
"#{@firstName()} #{@lastName()}"
404-
, model
406+
model.name = Observable ->
407+
"#{@firstName()} #{@lastName()}"
408+
, model
405409

406-
model.name.observe (newValue) ->
407-
assert.equal newValue, "Duder Bro"
410+
model.name.observe (newValue) ->
411+
assert.equal newValue, "Duder Bro"
408412

409-
done()
413+
done()
410414

411-
model.lastName "Bro"
415+
model.lastName "Bro"

0 commit comments

Comments
 (0)