@difizen/mana-observable
Version:
42 lines (37 loc) • 1.21 kB
text/typescript
import assert from 'assert';
import 'reflect-metadata';
import { prop, ObservableProperties, Observability, origin } from './index';
describe('decorator', () => {
it('#prop', () => {
class Foo {
name?: string;
}
class FooExt extends Foo {
info?: string;
}
class FooExtExt extends FooExt {}
const foo = new Foo();
const properties = ObservableProperties.getOwn(Foo);
assert(properties?.length === 1 && properties.includes('name'));
const extProperties = ObservableProperties.getOwn(FooExt);
assert(extProperties?.length === 2 && extProperties.includes('info'));
const extextProperties = ObservableProperties.get(FooExtExt);
assert(extextProperties?.length === 2);
const instanceProperties = ObservableProperties.find(foo);
assert(instanceProperties?.length === 1 && instanceProperties.includes('name'));
});
it('#origin', () => {
class Foo {
a?: string;
b?: string;
}
class Bar extends Foo {}
const foo = new Foo();
const bar = new Bar();
assert(Observability.shouldKeepOrigin(foo, 'a'));
assert(Observability.shouldKeepOrigin(bar, 'a'));
});
});