use of com.airbnb.spinaltap.mysql.event.BinlogEvent in project SpinalTap by airbnb.
the class MysqlMutationMapperTest method testUpdateMutationWithNullPK.
@Test
public void testUpdateMutationWithNullPK() throws Exception {
Serializable[] old = new Serializable[4];
old[0] = null;
old[1] = "test_user";
old[2] = 25;
old[3] = 0;
Serializable[] current = new Serializable[4];
current[0] = null;
current[1] = old[1];
current[2] = 26;
current[3] = old[3];
Map.Entry<Serializable[], Serializable[]> change = new AbstractMap.SimpleEntry<>(old, current);
BinlogEvent event = new UpdateEvent(TABLE_ID, SERVER_ID, TIMESTAMP, BINLOG_FILE_POS, ImmutableList.of(change));
List<? extends Mutation> mutations = eventMapper.map(event);
assertEquals(1, mutations.size());
assertTrue(mutations.get(0) instanceof MysqlUpdateMutation);
MysqlUpdateMutation mutation = (MysqlUpdateMutation) mutations.get(0);
validateMetadata(mutation, 0);
Row oldRow = mutation.getPreviousRow();
Row newRow = mutation.getRow();
assertEquals(null, oldRow.getColumns().get("id").getValue());
assertEquals("test_user", oldRow.getColumns().get("name").getValue());
assertEquals(25, oldRow.getColumns().get("age").getValue());
assertEquals(0, oldRow.getColumns().get("sex").getValue());
assertEquals(null, newRow.getColumns().get("id").getValue());
assertEquals("test_user", newRow.getColumns().get("name").getValue());
assertEquals(26, newRow.getColumns().get("age").getValue());
assertEquals(0, newRow.getColumns().get("sex").getValue());
}
Aggregations