mirror of
https://github.com/jakejarvis/sofa.git
synced 2026-07-14 18:15:56 -04:00
- Replace bun:test with Vitest across all 22 test files - Create @sofa/test package with shared setup and DB test helpers - setup.ts: vi.mock for @sofa/db/client, Bun.randomUUIDv7 polyfill - db.ts: in-memory SQLite via better-sqlite3, seed helpers - Add per-project vitest configs (packages/core, apps/web) - Add root vitest.config.ts with projects and v8 coverage - Set up @vitest/browser + Playwright for web component tests - Move validateBackupDatabase from core/backup.ts to @sofa/db/client - Derive required backup tables from schema instead of hard-coded list - Update CI workflow with Playwright install and Codecov upload - Update CLAUDE.md documentation for Vitest Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import { beforeEach, describe, expect, test, vi } from "vitest";
|
|
|
|
import { availabilityOffers } from "@sofa/db/schema";
|
|
import { clearAllTables, eq, insertAvailabilityOffer, insertTitle, testDb } from "@sofa/test/db";
|
|
|
|
const { getWatchProviders } = vi.hoisted(() => ({
|
|
getWatchProviders: vi.fn(async () => ({ results: {} as Record<string, unknown> })),
|
|
}));
|
|
|
|
vi.mock("@sofa/tmdb/client", () => ({
|
|
getWatchProviders,
|
|
}));
|
|
|
|
import { refreshAvailability } from "../src/availability";
|
|
|
|
beforeEach(() => {
|
|
clearAllTables();
|
|
getWatchProviders.mockImplementation(async () => ({ results: {} }));
|
|
});
|
|
|
|
describe("refreshAvailability", () => {
|
|
test("clears stale US offers when TMDB returns no US availability", async () => {
|
|
insertTitle({ id: "movie-1", tmdbId: 101, type: "movie", title: "Movie" });
|
|
insertAvailabilityOffer("movie-1");
|
|
|
|
await refreshAvailability("movie-1");
|
|
|
|
const offers = testDb
|
|
.select()
|
|
.from(availabilityOffers)
|
|
.where(eq(availabilityOffers.titleId, "movie-1"))
|
|
.all();
|
|
|
|
expect(offers).toHaveLength(0);
|
|
});
|
|
});
|