PublisherServiceSpringTest.java 4.38 KB
package org.legrog.web.publisher;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.platform.runner.JUnitPlatform;
import org.junit.runner.RunWith;
import org.legrog.entities.*;
import org.legrog.test.MockitoExtension;
import org.legrog.web.xyz.SharedService;
import org.mockito.Mock;

import javax.inject.Inject;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.*;

/**
 * Classe testant PublisherServiceSpring.
 */
@RunWith(JUnitPlatform.class)
@ExtendWith(MockitoExtension.class)
@DisplayName("Couche service de gestion d'éditeur")
public class PublisherServiceSpringTest {

    PublisherServiceSpring publisherServiceSpring;
    PublisherVersion publisherVersion;
    PublisherVersion publisherVersion1;
    Publisher publisher;
    PublisherRepository publisherRepository;
    PublisherVersionRepository publisherVersionRepository;

    @Inject
    ActionTypeRepository actionTypeRepository;

    @Mock
    PublisherVersion publisherVersionMock;

    @BeforeEach
    public void setUp(@Mock PublisherRepository publisherRepository,
                      @Mock PublisherVersionRepository publisherVersionRepository,
                      @Mock PublisherActionRepository publisherActionRepository,
                      @Mock ActionTypeRepository actionTypeRepository,
                      @Mock SharedService sharedService) throws Exception {
        publisherServiceSpring = new PublisherServiceSpring(publisherRepository,
                publisherVersionRepository, publisherActionRepository, actionTypeRepository, sharedService);
        publisherVersion = new PublisherVersion();
        publisherVersion1 = new PublisherVersion();
        this.publisherRepository = publisherRepository;
    }

    @DisplayName("Test ajout nouvel éditeur")
    @Test
    public void testAddNewPublisher(@Mock PublisherVersionRepository publisherVersionRepository) {
        publisherServiceSpring.addNewPublisher(publisherVersion);
        publisher = publisherVersion.getPublisher();
        assertThat(publisher.getVersions()).containsExactly(publisherVersion);
        assertThat(publisherVersion.getPublisher()).isEqualTo(publisher);
        verify(publisherRepository).save(publisher);
        verify(publisherVersionRepository).save(publisherVersion);
    }

    @DisplayName("Test ajout nouvelle version éditeur")
    @Test
    public void testAddVersionToPublisher(@Mock PublisherRepository publisherRepository,
                                          @Mock PublisherVersionRepository publisherVersionRepository) {
        publisherServiceSpring.addNewPublisher(publisherVersion);
        publisher = publisherVersion.getPublisher();
        publisherServiceSpring.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("Test validation version éditeur")
    @Test
    public void testValidateVersion(@Mock PublisherActionRepository publisherActionRepository) {
        Set<PublisherVersion> publisherVersions;

        publisher = new Publisher();
        publisherVersion = new PublisherVersion();

        publisherVersions = new HashSet<PublisherVersion>();
        publisherVersions.add(publisherVersion);
        publisherVersions.add(publisherVersionMock);

        when(publisherVersionMock.getPublisher()).thenReturn(publisher);
        PublisherAction publisherAction;
        publisherAction = publisherServiceSpring.validatePublisherVersion(publisherVersionMock);
        verify(publisherActionRepository).save(publisherAction);
        assertThat(publisherAction.getPublisherVersion()).isEqualTo(publisherVersionMock);
        assertThat(publisherAction.getPublisher()).isEqualTo(publisher);
        assertThat(publisherAction.getPublisher().getValidatedVersion()).isEqualTo(publisherVersionMock);
// TODO Régler ce problème de NPE
//        assertThat(publisherAction.getActionType()).isEqualTo(actionTypeRepository.findByActionTypeName("Validate"));
    }
}