package com.softwaremill.common.dbtest;
import org.testng.annotations.Test;
import static org.mockito.Matchers.isA;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.testng.Assert.*;
import static com.softwaremill.common.dbtest.MockitoPersistence.*;
/**
* @author Maciej Bilas
* @since 15/12/11 11:57
*/
public class MockitoPersistenceTest {
@Test
public void persistAnswerShouldRunValidations() {
try {
EntityDAO mock = mock(EntityDAO.class);
when(mock.persist(isA(Entity.class))).thenAnswer(persistAnswer());
mock.persist(new Entity());
} catch (AssertionError e) {
return;
}
fail("Validations did not run successfully.");
}
@Test
public void persistAnswerShouldReturnTheSameObjectWhenValidationsSucceed() {
// Given
EntityDAO mock = mock(EntityDAO.class);
when(mock.persist(isA(Entity.class))).thenAnswer(persistAnswer());
Entity prePersist = new Entity("foo");
// When
Entity postPersist = mock.persist(prePersist);
// Then
assertSame(postPersist, prePersist);
}
@Test
public void reloadAnswerShouldReturnTheSameObject() {
// Given
EntityDAO mock = mock(EntityDAO.class);
when(mock.reload(isA(Entity.class))).thenAnswer(reloadAnswer());
Entity preReload = new Entity();
// When
Entity postReload = mock.reload(preReload);
// Then
assertSame(postReload, preReload);
}
}