156 lines
3.6 KiB
TypeScript
156 lines
3.6 KiB
TypeScript
import { singlestoreSchema, singlestoreTable } from 'drizzle-orm/singlestore-core';
|
|
import { expect, test } from 'vitest';
|
|
import { diffTestSchemasSingleStore } from './schemaDiffer';
|
|
|
|
// We don't manage databases(schemas) in MySQL with Drizzle Kit
|
|
test('add schema #1', async () => {
|
|
const to = {
|
|
devSchema: singlestoreSchema('dev'),
|
|
};
|
|
|
|
const { statements } = await diffTestSchemasSingleStore({}, to, []);
|
|
|
|
expect(statements.length).toBe(0);
|
|
});
|
|
|
|
test('add schema #2', async () => {
|
|
const from = {
|
|
devSchema: singlestoreSchema('dev'),
|
|
};
|
|
const to = {
|
|
devSchema: singlestoreSchema('dev'),
|
|
devSchema2: singlestoreSchema('dev2'),
|
|
};
|
|
|
|
const { statements } = await diffTestSchemasSingleStore(from, to, []);
|
|
|
|
expect(statements.length).toBe(0);
|
|
});
|
|
|
|
test('delete schema #1', async () => {
|
|
const from = {
|
|
devSchema: singlestoreSchema('dev'),
|
|
};
|
|
|
|
const { statements } = await diffTestSchemasSingleStore(from, {}, []);
|
|
|
|
expect(statements.length).toBe(0);
|
|
});
|
|
|
|
test('delete schema #2', async () => {
|
|
const from = {
|
|
devSchema: singlestoreSchema('dev'),
|
|
devSchema2: singlestoreSchema('dev2'),
|
|
};
|
|
const to = {
|
|
devSchema: singlestoreSchema('dev'),
|
|
};
|
|
|
|
const { statements } = await diffTestSchemasSingleStore(from, to, []);
|
|
|
|
expect(statements.length).toBe(0);
|
|
});
|
|
|
|
test('rename schema #1', async () => {
|
|
const from = {
|
|
devSchema: singlestoreSchema('dev'),
|
|
};
|
|
const to = {
|
|
devSchema2: singlestoreSchema('dev2'),
|
|
};
|
|
|
|
const { statements } = await diffTestSchemasSingleStore(from, to, ['dev->dev2']);
|
|
|
|
expect(statements.length).toBe(0);
|
|
});
|
|
|
|
test('rename schema #2', async () => {
|
|
const from = {
|
|
devSchema: singlestoreSchema('dev'),
|
|
devSchema1: singlestoreSchema('dev1'),
|
|
};
|
|
const to = {
|
|
devSchema: singlestoreSchema('dev'),
|
|
devSchema2: singlestoreSchema('dev2'),
|
|
};
|
|
|
|
const { statements } = await diffTestSchemasSingleStore(from, to, ['dev1->dev2']);
|
|
|
|
expect(statements.length).toBe(0);
|
|
});
|
|
|
|
test('add table to schema #1', async () => {
|
|
const dev = singlestoreSchema('dev');
|
|
const from = {};
|
|
const to = {
|
|
dev,
|
|
users: dev.table('users', {}),
|
|
};
|
|
|
|
const { statements } = await diffTestSchemasSingleStore(from, to, ['dev1->dev2']);
|
|
|
|
expect(statements.length).toBe(0);
|
|
});
|
|
|
|
test('add table to schema #2', async () => {
|
|
const dev = singlestoreSchema('dev');
|
|
const from = { dev };
|
|
const to = {
|
|
dev,
|
|
users: dev.table('users', {}),
|
|
};
|
|
|
|
const { statements } = await diffTestSchemasSingleStore(from, to, ['dev1->dev2']);
|
|
|
|
expect(statements.length).toBe(0);
|
|
});
|
|
|
|
test('add table to schema #3', async () => {
|
|
const dev = singlestoreSchema('dev');
|
|
const from = { dev };
|
|
const to = {
|
|
dev,
|
|
usersInDev: dev.table('users', {}),
|
|
users: singlestoreTable('users', {}),
|
|
};
|
|
|
|
const { statements } = await diffTestSchemasSingleStore(from, to, ['dev1->dev2']);
|
|
|
|
expect(statements.length).toBe(1);
|
|
expect(statements[0]).toStrictEqual({
|
|
type: 'create_table',
|
|
tableName: 'users',
|
|
schema: undefined,
|
|
columns: [],
|
|
uniqueConstraints: [],
|
|
internals: {
|
|
tables: {},
|
|
indexes: {},
|
|
},
|
|
compositePkName: '',
|
|
compositePKs: [],
|
|
});
|
|
});
|
|
|
|
test('remove table from schema #1', async () => {
|
|
const dev = singlestoreSchema('dev');
|
|
const from = { dev, users: dev.table('users', {}) };
|
|
const to = {
|
|
dev,
|
|
};
|
|
|
|
const { statements } = await diffTestSchemasSingleStore(from, to, ['dev1->dev2']);
|
|
|
|
expect(statements.length).toBe(0);
|
|
});
|
|
|
|
test('remove table from schema #2', async () => {
|
|
const dev = singlestoreSchema('dev');
|
|
const from = { dev, users: dev.table('users', {}) };
|
|
const to = {};
|
|
|
|
const { statements } = await diffTestSchemasSingleStore(from, to, ['dev1->dev2']);
|
|
|
|
expect(statements.length).toBe(0);
|
|
});
|