package pl.edu.icm.saos.persistence.enrichment;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static pl.edu.icm.saos.persistence.enrichment.TestInMemoryUploadEnrichmentTagFactory.createUploadEnrichmentTag;
import org.joda.time.DateTime;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataIntegrityViolationException;
import pl.edu.icm.saos.common.testcommon.category.SlowTest;
import pl.edu.icm.saos.persistence.PersistenceTestSupport;
import pl.edu.icm.saos.persistence.enrichment.model.EnrichmentTagTypes;
import pl.edu.icm.saos.persistence.enrichment.model.UploadEnrichmentTag;
/**
* @author Ćukasz Dumiszewski
*/
@Category(SlowTest.class)
public class UploadEnrichmentTagRepositoryTest extends PersistenceTestSupport {
@Autowired
private UploadEnrichmentTagRepository uploadEnrichmentTagRepository;
//------------------------ TESTS --------------------------
@Test
public void saveAndFind() {
// given
UploadEnrichmentTag uploadEnrichmentTag = createUploadEnrichmentTag(EnrichmentTagTypes.REFERENCED_COURT_CASES, "{\"caseNumbers\": [\"123\", \"234\"]}");
// execute
uploadEnrichmentTagRepository.save(uploadEnrichmentTag);
UploadEnrichmentTag dbUploadEnrichmentTag = uploadEnrichmentTagRepository.findOne(uploadEnrichmentTag.getId());
// assert
assertTrue(uploadEnrichmentTag != dbUploadEnrichmentTag);
assertEquals(uploadEnrichmentTag, dbUploadEnrichmentTag);
}
@Test(expected=DataIntegrityViolationException.class)
public void save_InvalidJsonValue() {
// given
UploadEnrichmentTag uploadEnrichmentTag = createUploadEnrichmentTag(EnrichmentTagTypes.REFERENCED_COURT_CASES, "{key:\"fff\"");
// execute
uploadEnrichmentTagRepository.save(uploadEnrichmentTag);
}
@Test
public void findMaxCreationDate() {
// given
UploadEnrichmentTag uploadEnrichmentTag1 = createUploadEnrichmentTag(EnrichmentTagTypes.REFERENCED_COURT_CASES, "{\"key\":\"fff\"}", 1, new DateTime(2015, 01, 01, 14, 35));
uploadEnrichmentTagRepository.save(uploadEnrichmentTag1);
UploadEnrichmentTag uploadEnrichmentTag2 = createUploadEnrichmentTag(EnrichmentTagTypes.REFERENCED_REGULATIONS, "{\"key\":\"fff\"}", 1, new DateTime(2015, 01, 01, 14, 36));
uploadEnrichmentTagRepository.save(uploadEnrichmentTag2);
UploadEnrichmentTag uploadEnrichmentTag3 = createUploadEnrichmentTag(EnrichmentTagTypes.REFERENCED_COURT_CASES, "{\"key\":\"fax\"}", 2, new DateTime(2014, 01, 01, 17, 36));
uploadEnrichmentTagRepository.save(uploadEnrichmentTag3);
// execute
DateTime maxCreationDate = uploadEnrichmentTagRepository.findMaxCreationDate();
// assert
assertEquals(maxCreationDate, uploadEnrichmentTag2.getCreationDate());
}
@Test
public void truncate() {
// given
UploadEnrichmentTag uploadEnrichmentTag1 = createUploadEnrichmentTag(EnrichmentTagTypes.REFERENCED_COURT_CASES, "{\"key\":\"fff\"}", 1, new DateTime(2015, 01, 01, 14, 35));
uploadEnrichmentTagRepository.save(uploadEnrichmentTag1);
UploadEnrichmentTag uploadEnrichmentTag2 = createUploadEnrichmentTag(EnrichmentTagTypes.REFERENCED_REGULATIONS, "{\"key\":\"fff\"}", 1, new DateTime(2015, 01, 01, 14, 36));
uploadEnrichmentTagRepository.save(uploadEnrichmentTag2);
UploadEnrichmentTag uploadEnrichmentTag3 = createUploadEnrichmentTag(EnrichmentTagTypes.REFERENCED_COURT_CASES, "{\"key\":\"fax\"}", 2, new DateTime(2014, 01, 01, 17, 36));
uploadEnrichmentTagRepository.save(uploadEnrichmentTag3);
assertEquals(3, uploadEnrichmentTagRepository.count());
// execute
uploadEnrichmentTagRepository.truncate();
// assert
assertEquals(0, uploadEnrichmentTagRepository.count());
}
//------------------------ PRIVATE --------------------------
}