saleor-apps-redis_apl/apps/taxes/src/modules/logs/client-logs-metadata-repository.test.ts
Adrian Pilarczyk a32fe7caf4
feat: taxes client logs (#944)
* feat: 🚧 add skeleton logs page

* feat:  add ClientLogsMetadataRepository

* feat:  add AvataxClientLogger and router

* feat:  implement avatax client logs in order confirmed

* feat: 🚧 add skeleton ui for logs

* feat:  add avatax client logger

* refactor: ♻️ move breadcrumbs to page lvl

* feat:  logger per config

* feat:  add logs to remaining events

* refactor: ♻️ pass clientLogger from webhook service

* feat:  add taxjar logger

* test:  add tests for logs push

* feat:  add getAll test

* feat:  add missing taxjar page

* refactor: ♻️ move unshiftItemToLimitedArray to log-utils and test

* fix: 🐛 label

* refactor: 💄 styles

* build: 👷 changeset

* fix: 🐛 typo

* refactor: ♻️ address feedback on backend side

* refactor: ♻️ adjust UI to merging of avatax & taxjar logs

* feat:  make client logs table box scrollable

* fix: 🐛 size of container

* fix: 🐛 loading on isRefetching, not isFetching

* fix: 🐛 no lines early error
2023-09-07 10:42:54 +02:00

115 lines
2.7 KiB
TypeScript

import { EncryptedMetadataManager } from "@saleor/app-sdk/settings-manager";
import { vi, expect, it, describe } from "vitest";
import { z } from "zod";
import { ClientLogsMetadataRepository } from "./client-logs-metadata-repository";
const logSchema = z.object({
date: z.string(),
});
let mockSettingsManager = {
set: vi.fn(),
get: vi.fn(),
delete: vi.fn(),
} as unknown as EncryptedMetadataManager;
const logsRepository = new ClientLogsMetadataRepository({
metadataKey: `test-logs`,
schema: logSchema,
settingsManager: mockSettingsManager,
options: {
limit: 2,
},
});
describe("ClientLogsMetadataRepository", () => {
it("should push logs", async () => {
const log = {
date: "2021-09-02",
};
await logsRepository.push(log);
expect(mockSettingsManager.set).toHaveBeenCalledWith({
key: "test-logs",
value: JSON.stringify([log]),
});
});
it("should upsert logs", async () => {
const log = {
date: "2021-09-02",
};
logsRepository.push(log);
expect(mockSettingsManager.set).toHaveBeenCalledWith({
key: "test-logs",
value: JSON.stringify([log]),
});
const nextLog = {
date: "2021-09-03",
};
await logsRepository.push(nextLog);
expect(mockSettingsManager.set).toHaveBeenCalledWith({
key: "test-logs",
value: JSON.stringify([nextLog, log]),
});
});
it("should remove last log when pushed log exceeds limit", async () => {
const log = {
date: "2021-09-02",
};
logsRepository.push(log);
expect(mockSettingsManager.set).toHaveBeenCalledWith({
key: "test-logs",
value: JSON.stringify([log]),
});
const nextLog = {
date: "2021-09-03",
};
logsRepository.push(nextLog);
expect(mockSettingsManager.set).toHaveBeenCalledWith({
key: "test-logs",
value: JSON.stringify([nextLog, log]),
});
const lastLog = {
date: "2021-09-04",
};
await logsRepository.push(lastLog);
expect(mockSettingsManager.set).toHaveBeenCalledWith({
key: "test-logs",
value: JSON.stringify([lastLog, nextLog]),
});
});
it("should return all logs", async () => {
mockSettingsManager = {
set: vi.fn(),
get: vi.fn().mockReturnValueOnce(JSON.stringify([{ date: "2021-09-02" }])),
delete: vi.fn(),
} as unknown as EncryptedMetadataManager;
const logsRepository = new ClientLogsMetadataRepository({
metadataKey: `test-logs`,
schema: logSchema,
settingsManager: mockSettingsManager,
options: {
limit: 2,
},
});
const logs = await logsRepository.getAll();
expect(logs).toEqual([{ date: "2021-09-02" }]);
});
});