mirror of
https://github.com/withastro/astro.git
synced 2024-12-23 21:53:55 -05:00
54 lines
1.9 KiB
JavaScript
54 lines
1.9 KiB
JavaScript
import { expect } from 'chai';
|
|
import { describe, it } from 'mocha';
|
|
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/config.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 oldCollections = { [TABLE_NAME]: userInitial };
|
|
const newCollections = { [TABLE_NAME]: userInitial };
|
|
const { queries } = await getMigrationQueries({
|
|
oldSnapshot: { schema: oldCollections, version: MIGRATION_VERSION },
|
|
newSnapshot: { schema: newCollections, version: MIGRATION_VERSION },
|
|
reset: true,
|
|
});
|
|
|
|
expect(queries).to.deep.equal([
|
|
`DROP TABLE "${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 oldCollections = {};
|
|
const newCollections = { [TABLE_NAME]: userInitial };
|
|
const { queries } = await getMigrationQueries({
|
|
oldSnapshot: { schema: oldCollections, version: MIGRATION_VERSION },
|
|
newSnapshot: { schema: newCollections, version: MIGRATION_VERSION },
|
|
reset: true,
|
|
});
|
|
|
|
expect(queries).to.deep.equal([
|
|
`CREATE TABLE "${TABLE_NAME}" (_id INTEGER PRIMARY KEY, "name" text NOT NULL, "age" integer NOT NULL, "email" text NOT NULL UNIQUE, "mi" text)`,
|
|
]);
|
|
});
|
|
});
|
|
});
|