Home Reference Source Repository

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();
});