@Test
  public void testCustomMigrationPreUpgrade() {
    srcSchemas.setSchemas(new ArrayList<DbSchema>());
    tgtSchemas.setSchemas(new ArrayList<DbSchema>());

    srcSchema = new DataObjectSchema(CustomMigrationExistingField.class);
    srcSchema.setType(srcSchema.getType());
    srcSchemas.addSchema(srcSchema);

    tgtSchema = new DataObjectSchema(CustomMigrationExistingAndNewField.class);
    tgtSchema.setType(tgtSchema.getType());
    tgtSchemas.addSchema(tgtSchema);

    diff = new DbSchemasDiff(srcSchemas, tgtSchemas);

    Assert.assertTrue(diff.isUpgradable());
    Assert.assertTrue(diff.isChanged());
  }
  @Test
  public void testCustomMigrationExistingField() {

    tgtSchema = new DataObjectSchema(CustomMigrationExistingField.class);
    tgtSchema.setType(tgtSchema.getType());
    tgtSchemas.addSchema(tgtSchema);

    diff = new DbSchemasDiff(srcSchemas, tgtSchemas);

    Assert.assertTrue(diff.isUpgradable());
    Assert.assertFalse(diff.isChanged());
  }
  @Test
  public void testMoveFieldToBaseClass() {
    srcSchemas.setSchemas(new ArrayList<DbSchema>());
    tgtSchemas.setSchemas(new ArrayList<DbSchema>());

    srcSchema = new DataObjectSchema(ChildClassUTBefore.class);
    srcSchema.setType(srcSchema.getType());
    srcSchemas.addSchema(srcSchema);

    tgtSchema = new DataObjectSchema(ChildClassUTAfter1.class);
    tgtSchema.setType(tgtSchema.getType());
    tgtSchemas.addSchema(tgtSchema);

    tgtSchema = new DataObjectSchema(ChildClassUTAfter2.class);
    tgtSchema.setType(tgtSchema.getType());
    tgtSchemas.addSchema(tgtSchema);

    diff = new DbSchemasDiff(srcSchemas, tgtSchemas);

    Assert.assertTrue(diff.isUpgradable());
    Assert.assertTrue(diff.isChanged());
  }