src/tests/testSchemaRenameOptimization.js
import test from 'tape';
import optimizer from '..';
test('when optimizing a schema rename change', (t) => {
var changes = [
{
change: 'schema.create',
projectId: '1',
schemaId: '1',
schema: {
name: 'users',
columns: {
'1': {
name: 'id',
type: 'uuid'
}
}
}
},
{
change: 'schema.rename',
projectId: '1',
schemaId: '1',
name: 'user',
oldName: 'users'
}
];
var actual = optimizer.optimize(changes);
console.log(actual);
var expected = [
{
change: 'schema.create',
projectId: '1',
schemaId: '1',
schema: {
name: 'users',
columns: {
'1': {
name: 'id',
type: 'uuid'
}
}
}
},
{
change: 'schema.rename',
projectId: '1',
schemaId: '1',
name: 'user',
oldName: 'users'
}
];
t.deepEqual(actual, expected, 'non-agressive should return the original changes');
var actual = optimizer.optimize(changes, true);
console.log(actual);
var expected = [
{
change: 'schema.create',
projectId: '1',
schemaId: '1',
schema: {
name: 'user',
columns: {
'1': {
name: 'id',
type: 'uuid'
}
}
}
}
];
t.deepEqual(actual, expected, 'agressive should the merge the rename change into the schema.create change');
t.end();
});