/
class-observer.spec.js
57 lines (52 loc) · 2.02 KB
/
class-observer.spec.js
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
import {
createObserverLocator,
createElement
} from './shared';
import {ClassObserver} from '../src/class-observer';
import {initialize} from 'aurelia-pal-browser';
describe('ClassObserver', () => {
var element, observerA, observerB;
beforeAll(() => {
initialize();
var locator = createObserverLocator();
element = createElement('<div class="foo bar"></div>');
observerA = locator.getObserver(element, 'class');
observerB = locator.getObserver(element, 'class');
});
it('is used', () => {
expect(observerA instanceof ClassObserver).toBe(true);
expect(observerB instanceof ClassObserver).toBe(true);
});
it('does not share StyleObservers', () => {
expect(observerA === observerB).toBe(false);
});
it('adds and removes own classes', () => {
var contains = element.classList.contains.bind(element.classList);
expect(contains('foo') && contains('bar')).toBe(true);
observerA.setValue(' xxx \t\r\n\v\f yyy ');
expect(contains('foo') && contains('bar')).toBe(true);
expect(contains('xxx') && contains('yyy')).toBe(true);
expect(observerA.getValue()).toBe(' xxx \t\r\n\v\f yyy ');
observerA.setValue('');
expect(contains('foo') && contains('bar')).toBe(true);
expect(contains('xxx') || contains('yyy')).toBe(false);
observerB.setValue('bbb');
expect(contains('foo') && contains('bar')).toBe(true);
expect(contains('bbb')).toBe(true);
observerB.setValue('aaa');
expect(contains('foo') && contains('bar')).toBe(true);
expect(contains('aaa') && !contains('bbb')).toBe(true);
observerA.setValue('foo bar');
expect(contains('foo') && contains('bar')).toBe(true);
observerA.setValue('');
expect(contains('foo') || contains('bar')).toBe(false);
observerA.setValue('foo');
expect(contains('foo')).toBe(true);
observerA.setValue(null);
expect(contains('foo')).toBe(false);
observerA.setValue('foo');
expect(contains('foo')).toBe(true);
observerA.setValue(undefined);
expect(contains('foo')).toBe(false);
});
});