diff --git a/packages/backends/backend/src/sql-backend.test.ts b/packages/backends/backend/src/sql-backend.test.ts new file mode 100644 index 0000000..629f482 --- /dev/null +++ b/packages/backends/backend/src/sql-backend.test.ts @@ -0,0 +1,35 @@ +import type { Knex } from "knex"; +import { describe, expect, it, vi } from "vitest"; +import { SQLBackend } from "./sql-backend"; + +class TestSQLBackend extends SQLBackend { + truncDate(): string { + return ""; + } +} + +describe("SQLBackend migrations", () => { + it("propagates migration failures", async () => { + const migrationError = new Error("migration failed"); + const knex = { + migrate: { + latest: vi.fn().mockRejectedValue(migrationError), + }, + } as unknown as Knex; + const backend = new TestSQLBackend(knex); + + await expect(backend.migrate()).rejects.toBe(migrationError); + }); + + it("propagates rollback failures", async () => { + const rollbackError = new Error("rollback failed"); + const knex = { + migrate: { + rollback: vi.fn().mockRejectedValue(rollbackError), + }, + } as unknown as Knex; + const backend = new TestSQLBackend(knex); + + await expect(backend.rollbackMigration()).rejects.toBe(rollbackError); + }); +}); diff --git a/packages/backends/backend/src/sql-backend.ts b/packages/backends/backend/src/sql-backend.ts index f486060..a4eae75 100644 --- a/packages/backends/backend/src/sql-backend.ts +++ b/packages/backends/backend/src/sql-backend.ts @@ -45,6 +45,7 @@ export abstract class SQLBackend implements Backend { } } catch (err) { logger("Backend").error("Migration failed:", err); + throw err; } } @@ -60,6 +61,7 @@ export abstract class SQLBackend implements Backend { } } catch (err) { logger("Backend").error("Rollback failed:", err); + throw err; } }