Jean-Francois Leveque

Réorganisation des tests (Nested)

package org.legrog.web.publisher;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
......@@ -57,84 +58,102 @@ public class PublisherServiceDefaultTest {
this.publisherRepository = publisherRepository;
}
@DisplayName("When a new publisher is added, both Publisher and PublisherVersion should be saved in the right state")
@Test
public void testAddNewPublisher(@Mock PublisherVersionRepository publisherVersionRepository) {
publisherServiceDefault.addNewPublisher(publisherVersion);
publisher = publisherVersion.getPublisher();
assertThat(publisher.getVersions()).containsExactly(publisherVersion);
assertThat(publisherVersion.getPublisher()).isEqualTo(publisher);
verify(publisherRepository).save(publisher);
verify(publisherVersionRepository).save(publisherVersion);
}
@Nested
@DisplayName("addNewPublisher method")
class AddNewPublisherTests {
@DisplayName("When a new publisher is added, both Publisher and PublisherVersion should be saved in the right state")
@Test
public void testAddNewPublisher(@Mock PublisherVersionRepository publisherVersionRepository) {
publisherServiceDefault.addNewPublisher(publisherVersion);
publisher = publisherVersion.getPublisher();
assertThat(publisher.getVersions()).containsExactly(publisherVersion);
assertThat(publisherVersion.getPublisher()).isEqualTo(publisher);
verify(publisherRepository).save(publisher);
verify(publisherVersionRepository).save(publisherVersion);
}
@DisplayName("When a new version of a publisher is added, setting it up, attaching it to publisher and saving both")
@Test
public void testAddVersionToPublisher(@Mock PublisherRepository publisherRepository,
@Mock PublisherVersionRepository publisherVersionRepository) {
publisherServiceDefault.addNewPublisher(publisherVersion);
publisher = publisherVersion.getPublisher();
publisherServiceDefault.addVersionToPublisher(publisher, publisherVersion1);
assertThat(publisherVersion1.getPublisher()).isEqualTo(publisher);
assertThat(publisher.getVersions()).contains(publisherVersion, publisherVersion1);
verify(publisherRepository, times(2)).save(publisher);
verify(publisherVersionRepository).save(publisherVersion1);
}
@DisplayName("When a PublisherVersion is validated, it should be the right one")
@Test
public void testValidateVersionRight() {
Set<PublisherVersion> publisherVersions;
@Nested
@DisplayName("addVersionToPublisher method")
class AddVersionToPublisherTests {
@DisplayName("When a new version of a publisher is added, setting it up, attaching it to publisher and saving both")
@Test
public void testAddVersionToPublisher(@Mock PublisherRepository publisherRepository,
@Mock PublisherVersionRepository publisherVersionRepository) {
publisherServiceDefault.addNewPublisher(publisherVersion);
publisher = publisherVersion.getPublisher();
publisherServiceDefault.addVersionToPublisher(publisher, publisherVersion1);
assertThat(publisherVersion1.getPublisher()).isEqualTo(publisher);
assertThat(publisher.getVersions()).contains(publisherVersion, publisherVersion1);
verify(publisherRepository, times(2)).save(publisher);
verify(publisherVersionRepository).save(publisherVersion1);
}
publisher = new Publisher();
publisherVersion = new PublisherVersion();
publisherVersions = new HashSet<>();
publisherVersions.add(publisherVersion);
publisherVersions.add(publisherVersionMock);
publisher.setVersions(publisherVersions);
when(publisherVersionMock.getPublisher()).thenReturn(publisher);
publisherServiceDefault.validatePublisherVersion(publisherVersionMock);
assertThat(publisher.getValidatedVersion()).isEqualTo(publisherVersionMock);
}
@DisplayName("When a publisherVersion is validated, the indexed IndexedPublisher should have all attributes right")
@Test
public void testValidateIndexPublisher(@Mock PublisherSearchRepository publisherSearchRepository) {
publisher = new Publisher();
publisher.setPublisherId(111);
when(publisherVersionMock.getPublisher()).thenReturn(publisher);
when(publisherVersionMock.getPublisherName()).thenReturn("nom");
when(publisherVersionMock.getPublisherHistory()).thenReturn("histoire");
publisherServiceDefault.validatePublisherVersion(publisherVersionMock);
try {
Mockito.verify(publisherSearchRepository).save(indexedPublisherArgumentCaptor.capture());
} catch (IndexingException e) {
logger.error("IndexingException {}", e);
@Nested
@DisplayName("addVersionToPublisher method")
class ValidatePublisherVersionTests {
@DisplayName("When a PublisherVersion is validated, it should be the right one")
@Test
public void testValidateVersionRight() {
Set<PublisherVersion> publisherVersions;
publisher = new Publisher();
publisherVersion = new PublisherVersion();
publisherVersions = new HashSet<>();
publisherVersions.add(publisherVersion);
publisherVersions.add(publisherVersionMock);
publisher.setVersions(publisherVersions);
when(publisherVersionMock.getPublisher()).thenReturn(publisher);
publisherServiceDefault.validatePublisherVersion(publisherVersionMock);
assertThat(publisher.getValidatedVersion()).isEqualTo(publisherVersionMock);
}
@DisplayName("When a publisherVersion is validated, the indexed IndexedPublisher should have all attributes right")
@Test
public void testValidateIndexPublisher(@Mock PublisherSearchRepository publisherSearchRepository) {
publisher = new Publisher();
publisher.setPublisherId(111);
when(publisherVersionMock.getPublisher()).thenReturn(publisher);
when(publisherVersionMock.getPublisherName()).thenReturn("nom");
when(publisherVersionMock.getPublisherHistory()).thenReturn("histoire");
publisherServiceDefault.validatePublisherVersion(publisherVersionMock);
try {
Mockito.verify(publisherSearchRepository).save(indexedPublisherArgumentCaptor.capture());
} catch (IndexingException e) {
logger.error("IndexingException {}", e);
}
IndexedPublisher indexedPublisher = indexedPublisherArgumentCaptor.getValue();
assertThat(indexedPublisher.getPublisherId()).isEqualTo(111);
assertThat(indexedPublisher.getPublisherName()).isEqualTo("nom");
assertThat(indexedPublisher.getPublisherHistory()).isEqualTo("histoire");
}
@DisplayName("When a validate creates a PublisherAction it should be saved and have all attributes right")
@Test
public void testValidateCreateAction(@Mock PublisherActionRepository publisherActionRepository) {
PublisherAction publisherAction;
ActionType actionType = ActionType.VALIDATE;
publisher = new Publisher();
when(publisherVersionMock.getPublisher()).thenReturn(publisher);
publisherAction = publisherServiceDefault.validatePublisherVersion(publisherVersionMock);
verify(publisherActionRepository).save(publisherAction);
assertThat(publisherAction.getPublisherVersion()).isEqualTo(publisherVersionMock);
assertThat(publisherAction.getPublisher()).isEqualTo(publisher);
assertThat(publisherAction.getPublisher().getValidatedVersion()).isEqualTo(publisherVersionMock);
assertThat(publisherAction.getActionType()).isEqualTo(actionType);
}
IndexedPublisher indexedPublisher = indexedPublisherArgumentCaptor.getValue();
assertThat(indexedPublisher.getPublisherId()).isEqualTo(111);
assertThat(indexedPublisher.getPublisherName()).isEqualTo("nom");
assertThat(indexedPublisher.getPublisherHistory()).isEqualTo("histoire");
}
@DisplayName("When a validate creates a PublisherAction it should be saved and have all attributes right")
@Test
public void testValidateCreateAction(@Mock PublisherActionRepository publisherActionRepository) {
PublisherAction publisherAction;
ActionType actionType = ActionType.VALIDATE;
publisher = new Publisher();
when(publisherVersionMock.getPublisher()).thenReturn(publisher);
publisherAction = publisherServiceDefault.validatePublisherVersion(publisherVersionMock);
verify(publisherActionRepository).save(publisherAction);
assertThat(publisherAction.getPublisherVersion()).isEqualTo(publisherVersionMock);
assertThat(publisherAction.getPublisher()).isEqualTo(publisher);
assertThat(publisherAction.getPublisher().getValidatedVersion()).isEqualTo(publisherVersionMock);
assertThat(publisherAction.getActionType()).isEqualTo(actionType);
}
}
......