mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Refresh tests
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
This commit is contained in:
parent
1a3f7ddd02
commit
73969ed17a
@ -2,115 +2,126 @@
|
|||||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
*/
|
*/
|
||||||
|
import type { DiContainer } from "@ogre-tools/injectable";
|
||||||
import ipcRendererInjectable from "../../app-paths/get-value-from-registered-channel/ipc-renderer/ipc-renderer.injectable";
|
import ipcRendererInjectable from "../../app-paths/get-value-from-registered-channel/ipc-renderer/ipc-renderer.injectable";
|
||||||
import { getDiForUnitTesting } from "../../getDiForUnitTesting";
|
import { getDiForUnitTesting } from "../../getDiForUnitTesting";
|
||||||
import appPublishDateInjectable from "../app-publish-date.injectable";
|
import sessionStorageInjectable from "../../utils/session-storage.injectable";
|
||||||
|
import type { AppUpdateWarning } from "../app-update-warning";
|
||||||
import appUpdateWarningInjectable from "../app-update-warning.injectable";
|
import appUpdateWarningInjectable from "../app-update-warning.injectable";
|
||||||
|
|
||||||
describe("app-update-warning", () => {
|
describe("app-update-warning", () => {
|
||||||
const di = getDiForUnitTesting({ doGeneralOverrides: true });
|
let di: DiContainer;
|
||||||
|
let appUpdateWarning: AppUpdateWarning;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
|
di = getDiForUnitTesting({ doGeneralOverrides: true });
|
||||||
|
|
||||||
di.override(ipcRendererInjectable, () => ({
|
di.override(ipcRendererInjectable, () => ({
|
||||||
on: jest.fn(),
|
on: (event: any, callback: () => void) => {
|
||||||
|
if (event === "update-available") {
|
||||||
|
callback();
|
||||||
|
}
|
||||||
|
}
|
||||||
} as never));
|
} as never));
|
||||||
|
|
||||||
di.override(appPublishDateInjectable, () => "2020-01-01T02:35:00");
|
di.override(sessionStorageInjectable, () => ({
|
||||||
|
setItem: jest.fn(),
|
||||||
|
getItem: () => "2022-05-30T05:30:00.000Z",
|
||||||
|
length: 0,
|
||||||
|
key: jest.fn(),
|
||||||
|
removeItem: jest.fn(),
|
||||||
|
clear: jest.fn(),
|
||||||
|
}) as never);
|
||||||
|
|
||||||
|
appUpdateWarning = di.inject(appUpdateWarningInjectable);
|
||||||
|
|
||||||
|
appUpdateWarning.init();
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("given AppUpdateWarning without release date and update date", () => {
|
describe("given AppUpdateWarning with update date set", () => {
|
||||||
it("returns no warning level", () => {
|
it.skip("returns light warning level when update-downloaded event received", () => {
|
||||||
const appUpdateWarning = di.inject(appUpdateWarningInjectable);
|
expect(appUpdateWarning.warningLevel).toBe("light");
|
||||||
|
|
||||||
expect(appUpdateWarning.warningLevel).toBe("");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("given AppUpdateWarning with release date and various update dates", () => {
|
|
||||||
it("returns no warning level if no update date passed", () => {
|
|
||||||
const appUpdateWarning = di.inject(appUpdateWarningInjectable);
|
|
||||||
|
|
||||||
expect(appUpdateWarning.warningLevel).toBe("");
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("returns no warning level when days are equal", () => {
|
const lightDates = [
|
||||||
const appUpdateWarning = di.inject(appUpdateWarningInjectable);
|
["2022-05-31T05:31:00.000Z"],
|
||||||
|
["2022-06-01T05:31:00.000Z"],
|
||||||
|
["2022-06-02T05:31:00.000Z"],
|
||||||
|
["2022-06-03T05:31:00.000Z"],
|
||||||
|
["2022-06-04T05:31:00.000Z"],
|
||||||
|
["2022-06-05T05:31:00.000Z"],
|
||||||
|
["2022-06-06T05:31:00.000Z"],
|
||||||
|
["2022-06-07T05:31:00.000Z"],
|
||||||
|
["2022-06-08T05:31:00.000Z"],
|
||||||
|
["2022-06-09T05:31:00.000Z"],
|
||||||
|
["2022-06-10T05:31:00.000Z"],
|
||||||
|
["2022-06-11T05:31:00.000Z"],
|
||||||
|
["2022-06-12T05:31:00.000Z"],
|
||||||
|
["2022-06-13T05:31:00.000Z"],
|
||||||
|
["2022-06-14T05:31:00.000Z"],
|
||||||
|
["2022-06-15T05:31:00.000Z"],
|
||||||
|
["2022-06-16T05:31:00.000Z"],
|
||||||
|
["2022-06-17T05:31:00.000Z"],
|
||||||
|
["2022-06-18T05:31:00.000Z"],
|
||||||
|
["2022-06-19T04:31:00.000Z"],
|
||||||
|
];
|
||||||
|
|
||||||
appUpdateWarning.downloadedUpdateDate = "2020-01-01T05:00:00";
|
const mediumDates = [
|
||||||
|
["2022-06-19T05:31:00.000Z"],
|
||||||
|
["2022-06-20T05:31:00.000Z"],
|
||||||
|
["2022-06-21T05:31:00.000Z"],
|
||||||
|
["2022-06-22T05:31:00.000Z"],
|
||||||
|
["2022-06-23T05:31:00.000Z"],
|
||||||
|
["2022-06-24T04:31:00.000Z"],
|
||||||
|
];
|
||||||
|
|
||||||
expect(appUpdateWarning.warningLevel).toBe("");
|
const highDates = [
|
||||||
});
|
["2022-06-24T05:31:00.000Z"],
|
||||||
|
["2022-06-25T05:31:00.000Z"],
|
||||||
|
["2027-05-28T05:31:00.000Z"],
|
||||||
|
];
|
||||||
|
|
||||||
it("returns no warning level when update date is before release date", () => {
|
describe.each(lightDates)("given AppUpdateWarning with update date set to %s", (date) => {
|
||||||
const appUpdateWarning = di.inject(appUpdateWarningInjectable);
|
beforeAll(() => {
|
||||||
|
jest.useFakeTimers("modern");
|
||||||
|
jest.setSystemTime(new Date(date).getTime());
|
||||||
|
});
|
||||||
|
|
||||||
appUpdateWarning.downloadedUpdateDate = "2019-12-31T02:35:00";
|
afterAll(() => {
|
||||||
|
jest.useRealTimers();
|
||||||
expect(appUpdateWarning.warningLevel).toBe("");
|
})
|
||||||
});
|
|
||||||
|
|
||||||
it("returns no warning level when update date is 10 days after release date", () => {
|
|
||||||
const appUpdateWarning = di.inject(appUpdateWarningInjectable);
|
|
||||||
|
|
||||||
appUpdateWarning.downloadedUpdateDate = "2020-01-11T02:35:00";
|
|
||||||
|
|
||||||
expect(appUpdateWarning.warningLevel).toBe("");
|
|
||||||
});
|
|
||||||
|
|
||||||
it("returns no warning level when update date is 19 days after release date", () => {
|
|
||||||
const appUpdateWarning = di.inject(appUpdateWarningInjectable);
|
|
||||||
|
|
||||||
appUpdateWarning.downloadedUpdateDate = "2020-01-20T02:35:00";
|
|
||||||
|
|
||||||
expect(appUpdateWarning.warningLevel).toBe("");
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("when downloaded update dates are in light warning level", () => {
|
|
||||||
it.each([
|
|
||||||
["2020-01-21T02:35:01"],
|
|
||||||
["2020-01-22T00:00:00"],
|
|
||||||
["2020-01-23T00:00:00"],
|
|
||||||
["2020-01-24T00:00:00"],
|
|
||||||
["2020-01-25T00:00:00"],
|
|
||||||
["2020-01-26T00:00:00"],
|
|
||||||
["2020-01-26T02:34:00"],
|
|
||||||
])("returns light warning level when update date is %s", (updateDate) => {
|
|
||||||
const appUpdateWarning = di.inject(appUpdateWarningInjectable);
|
|
||||||
|
|
||||||
appUpdateWarning.downloadedUpdateDate = updateDate;
|
|
||||||
|
|
||||||
|
it(`returns light warning level if date is ${date}`, () => {
|
||||||
expect(appUpdateWarning.warningLevel).toBe("light");
|
expect(appUpdateWarning.warningLevel).toBe("light");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("when downloaded update dates are in medium warning level", () => {
|
describe.each(mediumDates)("given AppUpdateWarning with update date set to %s", (date) => {
|
||||||
it.each([
|
beforeAll(() => {
|
||||||
["2020-01-26T02:36:00"],
|
jest.useFakeTimers("modern");
|
||||||
["2020-01-27T00:00:00"],
|
jest.setSystemTime(new Date(date).getTime());
|
||||||
["2020-01-27T12:22:00"],
|
});
|
||||||
["2020-01-28T00:00:00"],
|
|
||||||
["2020-01-28T02:34:00"],
|
|
||||||
])("returns medium warning level when update date is %s", (updateDate) => {
|
|
||||||
const appUpdateWarning = di.inject(appUpdateWarningInjectable);
|
|
||||||
|
|
||||||
appUpdateWarning.downloadedUpdateDate = updateDate;
|
afterAll(() => {
|
||||||
|
jest.useRealTimers();
|
||||||
|
})
|
||||||
|
|
||||||
|
it(`returns medium warning level if date is ${date}`, () => {
|
||||||
expect(appUpdateWarning.warningLevel).toBe("medium");
|
expect(appUpdateWarning.warningLevel).toBe("medium");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("when downloaded update dates are in high warning level", () => {
|
describe.each(highDates)("given AppUpdateWarning with update date set to %s", (date) => {
|
||||||
it.each([
|
beforeAll(() => {
|
||||||
["2020-01-28T02:36:00"],
|
jest.useFakeTimers("modern");
|
||||||
["2020-01-29T00:00:00"],
|
jest.setSystemTime(new Date(date).getTime());
|
||||||
["2020-01-29T14:59:00"],
|
});
|
||||||
["2020-01-30T00:00:00"],
|
|
||||||
["2022-05-10T02:34:00"],
|
|
||||||
])("returns medium warning level when update date is %s", (updateDate) => {
|
|
||||||
const appUpdateWarning = di.inject(appUpdateWarningInjectable);
|
|
||||||
|
|
||||||
appUpdateWarning.downloadedUpdateDate = updateDate;
|
afterAll(() => {
|
||||||
|
jest.useRealTimers();
|
||||||
|
})
|
||||||
|
|
||||||
|
it(`returns medium warning level if date is ${date}`, () => {
|
||||||
expect(appUpdateWarning.warningLevel).toBe("high");
|
expect(appUpdateWarning.warningLevel).toBe("high");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@ -24,19 +24,24 @@ export class AppUpdateWarning extends Singleton {
|
|||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
|
|
||||||
dependencies.ipcRenderer.on(UpdateAvailableChannel, () => {
|
dependencies.ipcRenderer.on(UpdateAvailableChannel, () => {
|
||||||
this.setUpdateAvailableDate();
|
this.init();
|
||||||
this.setWarningLevel();
|
|
||||||
this.startRefreshLevelInterval();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
saveDateToSessionStorage() {
|
init() {
|
||||||
|
this.setUpdateAvailableDate();
|
||||||
|
this.saveDateToSessionStorage();
|
||||||
|
this.setWarningLevel();
|
||||||
|
this.startRefreshLevelInterval();
|
||||||
|
}
|
||||||
|
|
||||||
|
private saveDateToSessionStorage() {
|
||||||
if (this.updateAvailableDate) {
|
if (this.updateAvailableDate) {
|
||||||
this.dependencies.sessionStorage.setItem("when-update-available", this.updateAvailableDate.toISOString());
|
this.dependencies.sessionStorage.setItem("when-update-available", this.updateAvailableDate.toISOString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getDateFromSessionStorage() {
|
private getDateFromSessionStorage() {
|
||||||
const value = this.dependencies.sessionStorage.getItem("when-update-available");
|
const value = this.dependencies.sessionStorage.getItem("when-update-available");
|
||||||
|
|
||||||
if (!value) {
|
if (!value) {
|
||||||
@ -48,10 +53,10 @@ export class AppUpdateWarning extends Singleton {
|
|||||||
return isNaN(date.getTime()) ? null : date;
|
return isNaN(date.getTime()) ? null : date;
|
||||||
}
|
}
|
||||||
|
|
||||||
setUpdateAvailableDate() {
|
private setUpdateAvailableDate() {
|
||||||
if (!this.updateAvailableDate) {
|
if (!this.updateAvailableDate) {
|
||||||
this.updateAvailableDate = new Date();
|
this.updateAvailableDate = new Date();
|
||||||
this.saveDateToSessionStorage();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,8 +79,8 @@ export class AppUpdateWarning extends Singleton {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const today = new Date();
|
const today = Date.now();
|
||||||
const elapsedTime = today.getTime() - this.updateAvailableDate.getTime();
|
const elapsedTime = today - this.updateAvailableDate.getTime();
|
||||||
const elapsedDays = elapsedTime / (onceADay);
|
const elapsedDays = elapsedTime / (onceADay);
|
||||||
|
|
||||||
return elapsedDays;
|
return elapsedDays;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user