binding.js
2.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
describe('Rivets.Binding', function() {
var model, el, view, binding;
beforeEach(function() {
rivets.configure({
adapter: {
subscribe: function() {},
unsubscribe: function() {},
read: function() {},
publish: function() {}
}
});
el = document.createElement('div');
el.setAttribute('data-text', 'obj.name');
view = rivets.bind(el, {obj: {}});
binding = view.bindings[0];
});
it('gets assigned the routine function matching the identifier', function() {
expect(binding.routine).toBe(rivets.routines.text);
});
describe('set()', function() {
it('performs the binding routine with the supplied value', function() {
spyOn(binding, 'routine');
binding.set('sweater');
expect(binding.routine).toHaveBeenCalledWith(el, 'sweater');
});
it('applies any formatters to the value before performing the routine', function() {
rivets.config.formatters = {
awesome: function(value) { return 'awesome ' + value }
};
binding.formatters.push('awesome');
spyOn(binding, 'routine');
binding.set('sweater');
expect(binding.routine).toHaveBeenCalledWith(el, 'awesome sweater');
});
describe('on an event binding', function() {
beforeEach(function() {
binding.bindType = 'event';
});
it('performs the binding routine with the supplied function and current listener', function() {
spyOn(binding, 'routine');
func = function() { return 1 + 2; }
binding.set(func);
expect(binding.routine).toHaveBeenCalledWith(el, func, undefined);
});
it('passes the previously set funcation as the current listener on subsequent calls', function() {
spyOn(binding, 'routine');
funca = function() { return 1 + 2; };
funcb = function() { return 2 + 5; };
binding.set(funca);
expect(binding.routine).toHaveBeenCalledWith(el, funca, undefined);
binding.set(funcb);
expect(binding.routine).toHaveBeenCalledWith(el, funcb, funca);
});
});
});
});