Files
sofa/packages/core/test/update-check.test.ts
T
jakeandClaude Opus 4.6 5f3e14b415 feat: migrate test runner from Bun to Vitest
- 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>
2026-03-22 12:03:06 -04:00

46 lines
1.2 KiB
TypeScript

import { describe, expect, test } from "vitest";
import { isNewerVersion } from "../src/update-check";
describe("isNewerVersion", () => {
test("newer major version", () => {
expect(isNewerVersion("2.0.0", "1.0.0")).toBe(true);
});
test("older major version", () => {
expect(isNewerVersion("1.0.0", "2.0.0")).toBe(false);
});
test("newer minor version", () => {
expect(isNewerVersion("1.2.0", "1.1.0")).toBe(true);
});
test("older minor version", () => {
expect(isNewerVersion("1.1.0", "1.2.0")).toBe(false);
});
test("newer patch version", () => {
expect(isNewerVersion("1.0.2", "1.0.1")).toBe(true);
});
test("older patch version", () => {
expect(isNewerVersion("1.0.1", "1.0.2")).toBe(false);
});
test("equal versions return false", () => {
expect(isNewerVersion("1.2.3", "1.2.3")).toBe(false);
});
test("handles 'v' prefix on latest", () => {
expect(isNewerVersion("v2.0.0", "1.0.0")).toBe(true);
});
test("handles 'v' prefix on current", () => {
expect(isNewerVersion("2.0.0", "v1.0.0")).toBe(true);
});
test("handles 'v' prefix on both", () => {
expect(isNewerVersion("v1.0.0", "v1.0.0")).toBe(false);
});
});