* feat(board): add mobile home board * fix: add missing translations * fix: mysql key reference with other datatype * fix: format issue * fix: missing trpc context arguments in tests * fix: missing trpc context arguments in tests
54 lines
1.6 KiB
TypeScript
54 lines
1.6 KiB
TypeScript
import { describe, expect, test, vi } from "vitest";
|
|
|
|
import type { Session } from "@homarr/auth";
|
|
import { createDb } from "@homarr/db/test";
|
|
import * as ping from "@homarr/ping";
|
|
|
|
import { appRouter } from "../../widgets/app";
|
|
|
|
// Mock the auth module to return an empty session
|
|
vi.mock("@homarr/auth", () => ({ auth: () => ({}) as Session }));
|
|
vi.mock("@homarr/ping", () => ({ sendPingRequestAsync: async () => await Promise.resolve(null) }));
|
|
|
|
describe("ping should call sendPingRequestAsync with url and return result", () => {
|
|
test("ping with error response should return error and url", async () => {
|
|
// Arrange
|
|
const spy = vi.spyOn(ping, "sendPingRequestAsync");
|
|
const url = "http://localhost";
|
|
const db = createDb();
|
|
const caller = appRouter.createCaller({
|
|
db,
|
|
deviceType: undefined,
|
|
session: null,
|
|
});
|
|
spy.mockImplementation(() => Promise.resolve({ error: "error" }));
|
|
|
|
// Act
|
|
const result = await caller.ping({ url });
|
|
|
|
// Assert
|
|
expect(result.url).toBe(url);
|
|
expect("error" in result).toBe(true);
|
|
});
|
|
|
|
test("ping with success response should return statusCode and url", async () => {
|
|
// Arrange
|
|
const spy = vi.spyOn(ping, "sendPingRequestAsync");
|
|
const url = "http://localhost";
|
|
const db = createDb();
|
|
const caller = appRouter.createCaller({
|
|
db,
|
|
deviceType: undefined,
|
|
session: null,
|
|
});
|
|
spy.mockImplementation(() => Promise.resolve({ statusCode: 200 }));
|
|
|
|
// Act
|
|
const result = await caller.ping({ url });
|
|
|
|
// Assert
|
|
expect(result.url).toBe(url);
|
|
expect("statusCode" in result).toBe(true);
|
|
});
|
|
});
|