1 | import './setup';
|
2 | import {ObserverLocator} from 'aurelia-binding';
|
3 | import {Container} from 'aurelia-dependency-injection';
|
4 | import {metadata} from 'aurelia-metadata';
|
5 | import {TaskQueue} from 'aurelia-task-queue';
|
6 | import {MoreDerivedCustomElement, OverrideCustomElement} from './behaviors/derived-element';
|
7 |
|
8 | describe('Inheritance', () => {
|
9 | let container;
|
10 |
|
11 | beforeEach(() => {
|
12 | container = new Container();
|
13 | container.registerInstance(ObserverLocator, {});
|
14 | container.registerInstance(TaskQueue, {});
|
15 | });
|
16 |
|
17 | it('should inherit base bindable properties', () => {
|
18 | let behavior = getResource(MoreDerivedCustomElement);
|
19 | behavior.initialize(container, MoreDerivedCustomElement);
|
20 |
|
21 | expect(behavior.properties.length).toBe(3);
|
22 |
|
23 | expect(behavior.attributes['frob'].changeHandler).toBe('frobChanged');
|
24 |
|
25 | expect(behavior.attributes['foo'].changeHandler).toBe('fooChanged');
|
26 | expect(behavior.attributes['bar'].attribute).toBe('bar');
|
27 | });
|
28 |
|
29 | it('can override base properties', () => {
|
30 | let behavior = getResource(OverrideCustomElement);
|
31 | behavior.initialize(container, OverrideCustomElement);
|
32 |
|
33 | expect(behavior.attributes['foo'].changeHandler).toBe('handleFoo');
|
34 | });
|
35 | });
|
36 |
|
37 | function getResource(target) {
|
38 | return metadata.getOwn(metadata.resource, target);
|
39 | }
|