Skip to content

Commit 10d5a92

Browse files
committed
Test for dop.action
1 parent 82814fd commit 10d5a92

File tree

2 files changed

+60
-4
lines changed

2 files changed

+60
-4
lines changed

src/api/action.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@ dop.action = function(f) {
44
'dop.action only accept one argument as function'
55
)
66
return function() {
7-
var collector = dop.core.createCollector(
8-
dop.data.collectors,
9-
dop.data.collectors.length
10-
)
7+
var collector = dop.core.createCollector(dop.data.collectors, 0)
118
var output = f.apply(this, arguments)
129
collector.emit()
1310
return output

test/action.js

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
var test = require('tape')
2+
// require('tabe').createStream( test );
3+
var dop = require('./.proxy').create()
4+
5+
test('basic collect', function(t) {
6+
var object = dop.register({
7+
a: true,
8+
b: true
9+
})
10+
var dopAction = dop.action(function(value) {
11+
dop.set(object, 'a', value)
12+
dop.set(object, 'b', value)
13+
return value
14+
})
15+
var observer = dop.createObserver(function(mutations) {
16+
t.equal(mutations.length, 2)
17+
})
18+
observer.observeObject(object)
19+
dopAction(false)
20+
t.end()
21+
})
22+
23+
test('two actions', function(t) {
24+
var object = dop.register({
25+
a: true,
26+
b: true
27+
})
28+
var dopAction1 = dop.action(function(value) {
29+
dop.set(object, 'a', value)
30+
dop.set(object, 'b', value)
31+
return value
32+
})
33+
var dopAction2 = dop.action(function(value) {
34+
dop.set(object, 'a', value)
35+
dop.set(object, 'b', value)
36+
return value
37+
})
38+
var timesObserved = 0
39+
var observer = dop.createObserver(function(mutations) {
40+
timesObserved += 1
41+
t.equal(mutations.length, 2)
42+
})
43+
observer.observeObject(object)
44+
dopAction1(111)
45+
dopAction2(222)
46+
t.equal(timesObserved, 2)
47+
t.end()
48+
})
49+
50+
test('same output', function(t) {
51+
var myAction = function(n) {
52+
return n
53+
}
54+
var dopAction = dop.action(myAction)
55+
var arg = 'argument1'
56+
t.equal(myAction(arg), arg)
57+
t.equal(myAction(arg), dopAction(arg))
58+
t.end()
59+
})

0 commit comments

Comments
 (0)