observer-ax
Version:
Patrón observable, event Bus.
49 lines (45 loc) • 1.67 kB
text/typescript
import {
ConcreteSubjectObserver,
NotifyObject,
Observer,
} from '../app';
describe("Test Case Observer", () => {
class Concrete implements Observer {
data: NotifyObject;
options?: any;
update(data: NotifyObject, options?: any) {
this.data = data;
this.options = options;
expect(data).toBeDefined();
}
subscribe(callback: (data: any, options?: any) => any) {
callback(this.data.data);
}
}
beforeEach(() => { });
it("test #1 => notify", async () => {
try {
const concretSubject = new ConcreteSubjectObserver();
let clazz: Observer = new Concrete();
concretSubject.asObserver().subscribe((data: any, options: any) => console.log("subscribe", data));
concretSubject.attach(clazz);
concretSubject.items = [{ data: { data: 'b' }, topic: "ALL", tries: 0 }];
concretSubject.items = [{ data: { data: 'a' }, topic: "ALL", tries: 0 }];
concretSubject.notify();
} catch (error) {
console.error(error);
expect(error).toBeDefined();
}
});
it("test #2 => notifyData", async () => {
try {
const concretSubject = new ConcreteSubjectObserver();
let clazz: Observer = new Concrete();
concretSubject.attach(clazz);
concretSubject.notifyNow({ data: { data: 'c' }, topic: "ALL", tries: 0 });
} catch (error) {
console.error(error);
expect(error).toBeDefined();
}
});
});