Added a Dependency injection model to load the DB asynchronously during the constructor

This commit is contained in:
Amaury
2021-07-05 15:11:22 +02:00
parent 8608e79859
commit b4e04b8f21
3 changed files with 4482 additions and 85 deletions

View File

@ -29,20 +29,20 @@ describe("test class ManageListener", function () {
it("should save the inserted objects", async function () {
await withFile(async ({ path }) => {
// given
const ml = new ListenerRssAggregator(path);
await ml.load();
const ml = new ListenerRssAggregator(
await ListenerRssAggregator.instantiateAggregator(path)
);
for (const item of dataWithoutHistory) await ml.registerListener(item);
await ml.saveOverride(dataWithoutHistory);
// when
ml.save();
const ml_bis = new ListenerRssAggregator(path);
await ml_bis.load();
const ml_bis = new ListenerRssAggregator(
await ListenerRssAggregator.instantiateAggregator(path)
);
// expect
expect(
ml_bis.listenerArray.map((listener) => listener.getProperty())
).to.be.eql(dataWithoutHistory);
expect(await ml_bis.getAllConfigs()).to.have.deep.members(
dataWithoutHistory
);
});
});
});
@ -60,8 +60,9 @@ describe("test class ManageListener", function () {
await withFile(async ({ path }) => {
// given
const clock = sinon.useFakeTimers();
const ml = new ListenerRssAggregator(path);
await ml.load();
const ml = new ListenerRssAggregator(
await ListenerRssAggregator.instantiateAggregator(path)
);
for (const item of dataWithoutHistory) await ml.registerListener(item);
const updateSpy = sinon.spy();
@ -89,12 +90,9 @@ describe("test class ManageListener", function () {
// here we're testing the first call
// when
await Promise.all([
events.once(ml.listenerArray[0], "update"),
events.once(ml.listenerArray[1], "update"),
events.once(ml.listenerArray[2], "update"),
]);
await events.once(ml, "update");
await events.once(ml, "update");
await events.once(ml, "update");
//expect
expect(updateSpy).to.have.been.calledThrice;
expect(newEntriesSpy).to.have.been.calledThrice;
@ -106,7 +104,7 @@ describe("test class ManageListener", function () {
// when
await clock.tickAsync(10000);
await events.once(ml.listenerArray[0], "update");
await events.once(ml, "update");
//expect
expect(updateSpy).to.have.been.calledOnce;
@ -118,10 +116,8 @@ describe("test class ManageListener", function () {
// when
await clock.tickAsync(10000);
await Promise.all([
events.once(ml.listenerArray[0], "update"),
events.once(ml.listenerArray[1], "update"),
]);
await events.once(ml, "update");
await events.once(ml, "update");
//expect
expect(updateSpy).to.have.been.calledTwice;
@ -133,10 +129,8 @@ describe("test class ManageListener", function () {
// when
await clock.tickAsync(10000);
await Promise.all([
events.once(ml.listenerArray[0], "update"),
events.once(ml.listenerArray[2], "update"),
]);
await events.once(ml, "update");
await events.once(ml, "update");
//expect
expect(updateSpy).to.have.been.calledTwice;
@ -150,8 +144,9 @@ describe("test class ManageListener", function () {
await withFile(async ({ path }) => {
// given
const clock = sinon.useFakeTimers();
const ml = new ListenerRssAggregator(path);
await ml.load();
const ml = new ListenerRssAggregator(
await ListenerRssAggregator.instantiateAggregator(path)
);
for (const item of dataWithHistory) await ml.registerListener(item);
const updateSpy = sinon.spy();
@ -179,11 +174,9 @@ describe("test class ManageListener", function () {
// here we're testing the first call
// when
await Promise.all([
events.once(ml.listenerArray[0], "update"),
events.once(ml.listenerArray[1], "update"),
events.once(ml.listenerArray[2], "update"),
]);
await events.once(ml, "update");
await events.once(ml, "update");
await events.once(ml, "update");
//expect
expect(updateSpy).to.have.been.calledThrice;
@ -210,7 +203,7 @@ describe("test class ManageListener", function () {
// when
await clock.tickAsync(10000);
await events.once(ml.listenerArray[0], "update");
await events.once(ml, "update");
//expect
expect(updateSpy).to.have.been.calledOnce;
@ -223,10 +216,8 @@ describe("test class ManageListener", function () {
// when
await clock.tickAsync(10000);
await Promise.all([
events.once(ml.listenerArray[0], "update"),
events.once(ml.listenerArray[1], "update"),
]);
await events.once(ml, "update");
await events.once(ml, "update");
//expect
expect(updateSpy).to.have.been.calledTwice;
@ -239,10 +230,8 @@ describe("test class ManageListener", function () {
// when
await clock.tickAsync(10000);
await Promise.all([
events.once(ml.listenerArray[0], "update"),
events.once(ml.listenerArray[2], "update"),
]);
await events.once(ml, "update");
await events.once(ml, "update");
//expect
expect(updateSpy).to.have.been.calledTwice;