summaryrefslogtreecommitdiff
path: root/packages/db/test/unit/reset-queries.test.js
diff options
context:
space:
mode:
Diffstat (limited to 'packages/db/test/unit/reset-queries.test.js')
-rw-r--r--packages/db/test/unit/reset-queries.test.js54
1 files changed, 54 insertions, 0 deletions
diff --git a/packages/db/test/unit/reset-queries.test.js b/packages/db/test/unit/reset-queries.test.js
new file mode 100644
index 000000000..9fb99f91e
--- /dev/null
+++ b/packages/db/test/unit/reset-queries.test.js
@@ -0,0 +1,54 @@
+import assert from 'node:assert/strict';
+import { describe, it } from 'node:test';
+import { getMigrationQueries } from '../../dist/core/cli/migration-queries.js';
+import { MIGRATION_VERSION } from '../../dist/core/consts.js';
+import { tableSchema } from '../../dist/core/schemas.js';
+import { column, defineTable } from '../../dist/runtime/virtual.js';
+
+const TABLE_NAME = 'Users';
+
+// `parse` to resolve schema transformations
+// ex. convert column.date() to ISO strings
+const userInitial = tableSchema.parse(
+ defineTable({
+ columns: {
+ name: column.text(),
+ age: column.number(),
+ email: column.text({ unique: true }),
+ mi: column.text({ optional: true }),
+ },
+ }),
+);
+
+describe('force reset', () => {
+ describe('getMigrationQueries', () => {
+ it('should drop table and create new version', async () => {
+ const oldTables = { [TABLE_NAME]: userInitial };
+ const newTables = { [TABLE_NAME]: userInitial };
+ const { queries } = await getMigrationQueries({
+ oldSnapshot: { schema: oldTables, version: MIGRATION_VERSION },
+ newSnapshot: { schema: newTables, version: MIGRATION_VERSION },
+ reset: true,
+ });
+
+ assert.deepEqual(queries, [
+ `DROP TABLE IF EXISTS "${TABLE_NAME}"`,
+ `CREATE TABLE "${TABLE_NAME}" (_id INTEGER PRIMARY KEY, "name" text NOT NULL, "age" integer NOT NULL, "email" text NOT NULL UNIQUE, "mi" text)`,
+ ]);
+ });
+
+ it('should not drop table when previous snapshot did not have it', async () => {
+ const oldTables = {};
+ const newTables = { [TABLE_NAME]: userInitial };
+ const { queries } = await getMigrationQueries({
+ oldSnapshot: { schema: oldTables, version: MIGRATION_VERSION },
+ newSnapshot: { schema: newTables, version: MIGRATION_VERSION },
+ reset: true,
+ });
+
+ assert.deepEqual(queries, [
+ `CREATE TABLE "${TABLE_NAME}" (_id INTEGER PRIMARY KEY, "name" text NOT NULL, "age" integer NOT NULL, "email" text NOT NULL UNIQUE, "mi" text)`,
+ ]);
+ });
+ });
+});