package pl.edu.icm.saos.enrichment.hash;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import pl.edu.icm.saos.persistence.enrichment.JudgmentEnrichmentHashRepository;
import pl.edu.icm.saos.persistence.enrichment.model.JudgmentEnrichmentHash;
/**
* @author madryk
*/
@RunWith(MockitoJUnitRunner.class)
public class UpdateEnrichmentHashProcessorTest {
@InjectMocks
private UpdateEnrichmentHashProcessor updateEnrichmentHashProcessor;
@Mock
private JudgmentEnrichmentTagsHashCalculator judgmentEnrichmentTagsHashCalculator;
@Mock
private JudgmentEnrichmentHashRepository judgmentEnrichmentHashRepository;
//------------------------ TESTS --------------------------
@Test
public void process_NEW_HASH() throws Exception {
// given
JudgmentEnrichmentTags judgmentEnrichmentTags = new JudgmentEnrichmentTags(2L);
when(judgmentEnrichmentTagsHashCalculator.calculateHash(judgmentEnrichmentTags)).thenReturn("hash");
when(judgmentEnrichmentHashRepository.findByJudgmentId(2L)).thenReturn(null);
// execute
JudgmentEnrichmentHash retJudgmentEnrichmentHash = updateEnrichmentHashProcessor.process(judgmentEnrichmentTags);
// assert
assertEquals(2L, retJudgmentEnrichmentHash.getJudgmentId());
assertEquals(null, retJudgmentEnrichmentHash.getOldHash());
assertEquals("hash", retJudgmentEnrichmentHash.getHash());
assertFalse(retJudgmentEnrichmentHash.isProcessed());
}
@Test
public void process_UPDATE_EXISTING_HASH() throws Exception {
// given
JudgmentEnrichmentTags judgmentEnrichmentTags = new JudgmentEnrichmentTags(2L);
JudgmentEnrichmentHash judgmentEnrichmentHash = mock(JudgmentEnrichmentHash.class);
when(judgmentEnrichmentTagsHashCalculator.calculateHash(judgmentEnrichmentTags)).thenReturn("hash");
when(judgmentEnrichmentHashRepository.findByJudgmentId(2L)).thenReturn(judgmentEnrichmentHash);
// execute
JudgmentEnrichmentHash retJudgmentEnrichmentHash = updateEnrichmentHashProcessor.process(judgmentEnrichmentTags);
// assert
assertTrue(retJudgmentEnrichmentHash == judgmentEnrichmentHash);
verify(judgmentEnrichmentHash).updateHash("hash");
verifyNoMoreInteractions(judgmentEnrichmentHash);
}
}