166 lines
3.2 KiB
TypeScript
166 lines
3.2 KiB
TypeScript
import Database from '..';
|
|
import { getDatabase } from './';
|
|
|
|
|
|
|
|
let db: Database;
|
|
|
|
beforeEach(async () => {
|
|
db = getDatabase();
|
|
});
|
|
|
|
afterEach(async () => {
|
|
await db.close();
|
|
});
|
|
|
|
describe('db sync', () => {
|
|
describe('table.sync', () => {
|
|
it('shound be ok1', async () => {
|
|
const table = db.table({
|
|
name: 'foos',
|
|
});
|
|
await table.sync();
|
|
});
|
|
it('sync#belongsTo', async () => {
|
|
db.table({
|
|
name: 'foos',
|
|
tableName: 'foos1',
|
|
fields: [
|
|
{
|
|
type: 'belongsTo',
|
|
name: 'bar',
|
|
}
|
|
],
|
|
});
|
|
db.table({
|
|
name: 'bars',
|
|
tableName: 'bars1',
|
|
fields: [
|
|
{
|
|
type: 'hasMany',
|
|
name: 'foos',
|
|
}
|
|
],
|
|
});
|
|
await db.sequelize.drop();
|
|
await db.getTable('foos').sync({
|
|
force: false,
|
|
alter: {
|
|
drop: false,
|
|
}
|
|
});
|
|
});
|
|
it('sync#hasMany', async () => {
|
|
db.table({
|
|
name: 'foos',
|
|
tableName: 'foos2',
|
|
fields: [
|
|
{
|
|
type: 'belongsTo',
|
|
name: 'bar',
|
|
}
|
|
],
|
|
});
|
|
db.table({
|
|
name: 'bars',
|
|
tableName: 'bars2',
|
|
fields: [
|
|
{
|
|
type: 'hasMany',
|
|
name: 'foos',
|
|
}
|
|
],
|
|
});
|
|
await db.sequelize.drop();
|
|
await db.getTable('bars').sync({
|
|
force: false,
|
|
alter: {
|
|
drop: false,
|
|
}
|
|
});
|
|
});
|
|
it('sync#belongsToMany', async () => {
|
|
db.table({
|
|
name: 'foos',
|
|
fields: [
|
|
{
|
|
type: 'belongsToMany',
|
|
name: 'bars',
|
|
},
|
|
{
|
|
type: 'string',
|
|
name: 'name',
|
|
},
|
|
],
|
|
});
|
|
db.table({
|
|
name: 'bars',
|
|
fields: [
|
|
{
|
|
type: 'belongsToMany',
|
|
name: 'foos',
|
|
},
|
|
{
|
|
type: 'string',
|
|
name: 'name',
|
|
}
|
|
],
|
|
});
|
|
await db.sequelize.drop();
|
|
await db.getTable('foos').sync({
|
|
force: false,
|
|
alter: {
|
|
drop: false,
|
|
}
|
|
});
|
|
await db.getModel('bars').create({
|
|
name: 'aa',
|
|
});
|
|
expect(await db.getModel('bars').count()).toBe(1);
|
|
db.getTable('bars').addField({
|
|
type: 'string',
|
|
name: 'col1',
|
|
});
|
|
await db.getTable('bars').sync({
|
|
force: false,
|
|
alter: {
|
|
drop: false,
|
|
}
|
|
});
|
|
await db.getModel('bars').create({
|
|
name: 'bb',
|
|
col1: 'val1'
|
|
});
|
|
expect(await db.getModel('bars').count()).toBe(2);
|
|
});
|
|
it('shound be ok2', async () => {
|
|
const table = db.table({
|
|
name: 'goos',
|
|
});
|
|
await table.sync({
|
|
force: true,
|
|
});
|
|
table.addField({
|
|
type: 'string',
|
|
name: 'col1',
|
|
});
|
|
await table.sync({
|
|
force: false,
|
|
alter: {
|
|
drop: false,
|
|
}
|
|
});
|
|
table.addField({
|
|
type: 'string',
|
|
name: 'col2',
|
|
});
|
|
await table.sync({
|
|
force: false,
|
|
alter: {
|
|
drop: false,
|
|
}
|
|
});
|
|
});
|
|
});
|
|
});
|