Home Reference Source Repository

src/tests/testColumnRemoveOptimization.js

import test from 'tape';
import optimizer from '..';

test('when optimizing a column create, typechange and remove change', (t) => {
  var changes = [
    {
      change: 'column.create',
      projectId: '1',
      schemaId: '1',
      columnId: '1',
      column: {
        name: 'id',
        type: 'uuid'
      }
    },
    {
      change: 'column.typechange',
      projectId: '1',
      schemaId: '1',
      columnId: '1',
      columnName: 'id',
      type: 'integer',
      oldType: 'uuid'
    },
    {
      change: 'column.remove',
      projectId: '1',
      schemaId: '1',
      columnId: '1',
      oldColumn: {
        name: 'id',
        type: 'integer'
      }
    }
  ];
  var actual = optimizer.optimize(changes);
  console.log(actual);
  var expected = [
    {
      change: 'column.remove',
      projectId: '1',
      schemaId: '1',
      columnId: '1',
      oldColumn: {
        name: 'id',
        type: 'integer'
      }
    }
  ];
  t.deepEqual(actual, expected, 'non-agressive should only return the column.remove change');
  var actual = optimizer.optimize(changes, true);
  console.log(actual);
  var expected = [];
  t.deepEqual(actual, expected, 'agressive should only return no changes at all');
  t.end();
});