@Test
public void shouldMigrateDataCorrectly() {

    setPreferencesToPreMigrationValues();
    displayAffectedPreferences("Before calling migrate");
    migrate(sharedPreferences);
    displayAffectedPreferences("After calling migrate");
    checkPostMigrationValues();
    setPreferencesToValues(modifiedMetadataValuePairs);
    displayAffectedPreferences("After changing metadata");
    migrate(sharedPreferences);
    displayAffectedPreferences("After calling migrate again");
    ensureSecondMigrationCallPreservesMetadata();
}