157 lines
3.4 KiB
TypeScript
157 lines
3.4 KiB
TypeScript
import { mysqlSchema, mysqlTable } from 'drizzle-orm/mysql-core';
|
|
import { expect, test } from 'vitest';
|
|
import { diffTestSchemasMysql } from './schemaDiffer';
|
|
|
|
// We don't manage databases(schemas) in MySQL with Drizzle Kit
|
|
test('add schema #1', async () => {
|
|
const to = {
|
|
devSchema: mysqlSchema('dev'),
|
|
};
|
|
|
|
const { statements } = await diffTestSchemasMysql({}, to, []);
|
|
|
|
expect(statements.length).toBe(0);
|
|
});
|
|
|
|
test('add schema #2', async () => {
|
|
const from = {
|
|
devSchema: mysqlSchema('dev'),
|
|
};
|
|
const to = {
|
|
devSchema: mysqlSchema('dev'),
|
|
devSchema2: mysqlSchema('dev2'),
|
|
};
|
|
|
|
const { statements } = await diffTestSchemasMysql(from, to, []);
|
|
|
|
expect(statements.length).toBe(0);
|
|
});
|
|
|
|
test('delete schema #1', async () => {
|
|
const from = {
|
|
devSchema: mysqlSchema('dev'),
|
|
};
|
|
|
|
const { statements } = await diffTestSchemasMysql(from, {}, []);
|
|
|
|
expect(statements.length).toBe(0);
|
|
});
|
|
|
|
test('delete schema #2', async () => {
|
|
const from = {
|
|
devSchema: mysqlSchema('dev'),
|
|
devSchema2: mysqlSchema('dev2'),
|
|
};
|
|
const to = {
|
|
devSchema: mysqlSchema('dev'),
|
|
};
|
|
|
|
const { statements } = await diffTestSchemasMysql(from, to, []);
|
|
|
|
expect(statements.length).toBe(0);
|
|
});
|
|
|
|
test('rename schema #1', async () => {
|
|
const from = {
|
|
devSchema: mysqlSchema('dev'),
|
|
};
|
|
const to = {
|
|
devSchema2: mysqlSchema('dev2'),
|
|
};
|
|
|
|
const { statements } = await diffTestSchemasMysql(from, to, ['dev->dev2']);
|
|
|
|
expect(statements.length).toBe(0);
|
|
});
|
|
|
|
test('rename schema #2', async () => {
|
|
const from = {
|
|
devSchema: mysqlSchema('dev'),
|
|
devSchema1: mysqlSchema('dev1'),
|
|
};
|
|
const to = {
|
|
devSchema: mysqlSchema('dev'),
|
|
devSchema2: mysqlSchema('dev2'),
|
|
};
|
|
|
|
const { statements } = await diffTestSchemasMysql(from, to, ['dev1->dev2']);
|
|
|
|
expect(statements.length).toBe(0);
|
|
});
|
|
|
|
test('add table to schema #1', async () => {
|
|
const dev = mysqlSchema('dev');
|
|
const from = {};
|
|
const to = {
|
|
dev,
|
|
users: dev.table('users', {}),
|
|
};
|
|
|
|
const { statements } = await diffTestSchemasMysql(from, to, ['dev1->dev2']);
|
|
|
|
expect(statements.length).toBe(0);
|
|
});
|
|
|
|
test('add table to schema #2', async () => {
|
|
const dev = mysqlSchema('dev');
|
|
const from = { dev };
|
|
const to = {
|
|
dev,
|
|
users: dev.table('users', {}),
|
|
};
|
|
|
|
const { statements } = await diffTestSchemasMysql(from, to, ['dev1->dev2']);
|
|
|
|
expect(statements.length).toBe(0);
|
|
});
|
|
|
|
test('add table to schema #3', async () => {
|
|
const dev = mysqlSchema('dev');
|
|
const from = { dev };
|
|
const to = {
|
|
dev,
|
|
usersInDev: dev.table('users', {}),
|
|
users: mysqlTable('users', {}),
|
|
};
|
|
|
|
const { statements } = await diffTestSchemasMysql(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: [],
|
|
checkConstraints: [],
|
|
});
|
|
});
|
|
|
|
test('remove table from schema #1', async () => {
|
|
const dev = mysqlSchema('dev');
|
|
const from = { dev, users: dev.table('users', {}) };
|
|
const to = {
|
|
dev,
|
|
};
|
|
|
|
const { statements } = await diffTestSchemasMysql(from, to, ['dev1->dev2']);
|
|
|
|
expect(statements.length).toBe(0);
|
|
});
|
|
|
|
test('remove table from schema #2', async () => {
|
|
const dev = mysqlSchema('dev');
|
|
const from = { dev, users: dev.table('users', {}) };
|
|
const to = {};
|
|
|
|
const { statements } = await diffTestSchemasMysql(from, to, ['dev1->dev2']);
|
|
|
|
expect(statements.length).toBe(0);
|
|
});
|