doSetHarvesterDataTest(_metadataRepository, _dataManager, metadataId);
}
static void doSetHarvesterDataTest(MetadataRepository metadataRepository, DataManager dataManager, int metadataId) throws Exception {
Metadata metadata = metadataRepository.findOne(metadataId);
assertNull(metadata.getHarvestInfo().getUuid());
assertNull(metadata.getHarvestInfo().getUri());
assertFalse(metadata.getHarvestInfo().isHarvested());
final String harvesterUuid = "harvesterUuid";
dataManager.setHarvestedExt(metadataId, harvesterUuid);
metadata = metadataRepository.findOne(metadataId);
assertEquals(harvesterUuid, metadata.getHarvestInfo().getUuid());
assertTrue(metadata.getHarvestInfo().isHarvested());
assertNull(metadata.getHarvestInfo().getUri());
final String newSource = "newSource";
// check that another update doesn't break the last setting
// there used to a bug where this was the case because entity manager wasn't being flushed
metadataRepository.update(metadataId, new Updater<Metadata>() {
@Override
public void apply(@Nonnull Metadata entity) {
entity.getSourceInfo().setSourceId(newSource);
}
});
assertEquals(newSource, metadata.getSourceInfo().getSourceId());
assertEquals(harvesterUuid, metadata.getHarvestInfo().getUuid());
assertTrue(metadata.getHarvestInfo().isHarvested());
assertNull(metadata.getHarvestInfo().getUri());
final String harvesterUuid2 = "harvesterUuid2";
final String harvesterUri = "harvesterUri";
dataManager.setHarvestedExt(metadataId, harvesterUuid2, Optional.of(harvesterUri));
metadata = metadataRepository.findOne(metadataId);
assertEquals(harvesterUuid2, metadata.getHarvestInfo().getUuid());
assertTrue(metadata.getHarvestInfo().isHarvested());
assertEquals(harvesterUri, metadata.getHarvestInfo().getUri());
dataManager.setHarvestedExt(metadataId, null);
metadata = metadataRepository.findOne(metadataId);
assertNull(metadata.getHarvestInfo().getUuid());
assertNull(metadata.getHarvestInfo().getUri());
assertFalse(metadata.getHarvestInfo().isHarvested());
}