UNPKG

1.35 kBJavaScriptView Raw
1import './setup';
2import {ObserverLocator} from 'aurelia-binding';
3import {Container} from 'aurelia-dependency-injection';
4import {metadata} from 'aurelia-metadata';
5import {TaskQueue} from 'aurelia-task-queue';
6import {MoreDerivedCustomElement, OverrideCustomElement} from './behaviors/derived-element';
7
8describe('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 // On MoreDerivedCustomElement:
23 expect(behavior.attributes['frob'].changeHandler).toBe('frobChanged');
24 // On SimplElement:
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
37function getResource(target) {
38 return metadata.getOwn(metadata.resource, target);
39}