mirror of
https://github.com/bitwarden/browser
synced 2025-12-13 14:53:33 +00:00
This change updates every import of StorageServiceProvider, AbstractStorageService, and ObservableStorageService throughout the common state code (including spec files) to pull from the new @bitwarden/storage-core package instead of their old relative paths. The cuts out one of the issues that needs to be resolved before state can hold its own as a library without importing common.
74 lines
2.6 KiB
TypeScript
74 lines
2.6 KiB
TypeScript
import { mock } from "jest-mock-extended";
|
|
|
|
import {
|
|
AbstractStorageService,
|
|
ObservableStorageService,
|
|
StorageServiceProvider,
|
|
} from "@bitwarden/storage-core";
|
|
|
|
import { FakeGlobalStateProvider } from "../../../spec";
|
|
import { UserId } from "../../types/guid";
|
|
|
|
import { STATE_LOCK_EVENT } from "./state-event-registrar.service";
|
|
import { StateEventRunnerService } from "./state-event-runner.service";
|
|
|
|
describe("EventRunnerService", () => {
|
|
const fakeGlobalStateProvider = new FakeGlobalStateProvider();
|
|
const lockState = fakeGlobalStateProvider.getFake(STATE_LOCK_EVENT);
|
|
|
|
const storageServiceProvider = mock<StorageServiceProvider>();
|
|
|
|
const sut = new StateEventRunnerService(fakeGlobalStateProvider, storageServiceProvider);
|
|
|
|
describe("handleEvent", () => {
|
|
it("does nothing if there are no events in state", async () => {
|
|
const mockStorageService = mock<AbstractStorageService & ObservableStorageService>();
|
|
storageServiceProvider.get.mockReturnValue(["disk", mockStorageService]);
|
|
|
|
await sut.handleEvent("lock", "bff09d3c-762a-4551-9275-45b137b2f073" as UserId);
|
|
|
|
expect(lockState.nextMock).not.toHaveBeenCalled();
|
|
});
|
|
|
|
it("loops through and acts on all events", async () => {
|
|
const mockDiskStorageService = mock<AbstractStorageService & ObservableStorageService>();
|
|
const mockMemoryStorageService = mock<AbstractStorageService & ObservableStorageService>();
|
|
|
|
lockState.stateSubject.next([
|
|
{
|
|
state: "fakeState1",
|
|
key: "fakeKey1",
|
|
location: "disk",
|
|
},
|
|
{
|
|
state: "fakeState2",
|
|
key: "fakeKey2",
|
|
location: "memory",
|
|
},
|
|
]);
|
|
|
|
storageServiceProvider.get.mockImplementation((defaultLocation, overrides) => {
|
|
if (defaultLocation === "disk") {
|
|
return [defaultLocation, mockDiskStorageService];
|
|
} else if (defaultLocation === "memory") {
|
|
return [defaultLocation, mockMemoryStorageService];
|
|
}
|
|
});
|
|
|
|
mockMemoryStorageService.get.mockResolvedValue("something");
|
|
|
|
await sut.handleEvent("lock", "bff09d3c-762a-4551-9275-45b137b2f073" as UserId);
|
|
|
|
expect(mockDiskStorageService.get).toHaveBeenCalledTimes(1);
|
|
expect(mockDiskStorageService.get).toHaveBeenCalledWith(
|
|
"user_bff09d3c-762a-4551-9275-45b137b2f073_fakeState1_fakeKey1",
|
|
);
|
|
expect(mockMemoryStorageService.get).toHaveBeenCalledTimes(1);
|
|
expect(mockMemoryStorageService.get).toHaveBeenCalledWith(
|
|
"user_bff09d3c-762a-4551-9275-45b137b2f073_fakeState2_fakeKey2",
|
|
);
|
|
expect(mockMemoryStorageService.remove).toHaveBeenCalledTimes(1);
|
|
});
|
|
});
|
|
});
|