ListPublisherVersionsViewTest.java 4.57 KB
package org.legrog.web.publisher;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.platform.runner.JUnitPlatform;
import org.junit.runner.RunWith;
import org.junit.jupiter.api.DisplayName;
import org.legrog.entities.Publisher;
import org.legrog.entities.PublisherAction;
import org.legrog.entities.PublisherVersion;
import org.legrog.test.MockitoExtension;
import org.mockito.Answers;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.List;

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

/**
 * Classe testant ListPublisherVersionsView.
 */
@RunWith(JUnitPlatform.class)
@ExtendWith(MockitoExtension.class)
@DisplayName("Shows lists of publisher versions, permits validation of one and retrieves last validation of one")
public class ListPublisherVersionsViewTest {
    Logger logger = LoggerFactory.getLogger(getClass());

    private ListPublisherVersionsView listPublisherVersionsView;
    private List<PublisherVersion> publisherVersions;
    private PublisherVersion publisherVersion;
    private PublisherVersion publisherVersion1;
    private PublisherVersion publisherVersion2;
    private Publisher publisher;
    private Publisher publisher1;
    PublisherAction publisherAction;

    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
    private PublisherService publisherService;

    @BeforeEach
    public void setUp() {

        // Données
        publisherVersion = new PublisherVersion();
        publisherVersion1 = new PublisherVersion();
        publisherVersion2 = new PublisherVersion();
        publisherVersion.setPublisherVersionId(0);
        publisherVersion1.setPublisherVersionId(1);
        publisherVersion2.setPublisherVersionId(2);
        publisher = new Publisher();
        publisher1 = new Publisher();
        publisher.setPublisherId(0);
        publisher1.setPublisherId(1);
        publisherVersion.setPublisher(publisher);
        publisherVersion1.setPublisher(publisher1);
        publisherVersion2.setPublisher(publisher);
        publisher.setValidatedVersion(publisherVersion);
        publisherVersions = new ArrayList<PublisherVersion>();
        publisherVersions.add(publisherVersion);
        publisherVersions.add(publisherVersion1);
        publisherAction = new PublisherAction();

        // Mock
        when(publisherService.getAllPublisherVersions()).thenReturn(publisherVersions);
        listPublisherVersionsView = new ListPublisherVersionsView(publisherService);
        when(publisherService.getLastValidate(publisher)).thenReturn(publisherAction);
        when(publisherService.getLastValidate(publisher1)).thenReturn(null);

    }

    @Test
    @DisplayName("when publisher is not set, should list all versions")
    public void testSetViewAll() {
        listPublisherVersionsView.setPublisherId(null);
        listPublisherVersionsView.setView();
        Mockito.verify(publisherService).getAllPublisherVersions();
        assertThat(listPublisherVersionsView.isViewAll()).isTrue();
        assertThat(listPublisherVersionsView.getPublisherVersions()).isEqualTo(publisherVersions);
    }

    @Test
    @DisplayName("when publisher is set, should list pulisher's versions")
    public void testSetViewNotAllAlsoTestingFilterOnId() {
        listPublisherVersionsView.setPublisherId(1);
        listPublisherVersionsView.setView();
        Mockito.verify(publisherService).getAllPublisherVersions();
        assertThat(listPublisherVersionsView.isViewAll()).isFalse();
        assertThat(listPublisherVersionsView.getPublisherVersions()).containsExactly(publisherVersion1);
    }

    @Test
    @DisplayName("when validating a publisher version, should call service method")
    public void testValidate() {
        listPublisherVersionsView.setPublisherId(0);
        listPublisherVersionsView.validate(publisherVersion2);
        Mockito.verify(publisherService).validatePublisherVersion(publisherVersion2);
    }

    @Test
    @DisplayName("when requested the last validate for a publisher, should call service method")
    public void testGetLastValidate() {
        assertThat(listPublisherVersionsView.getLastValidate(publisher)).isEqualTo(publisherAction);
    }

    @Test
    @DisplayName("when requested the last validate for a publisher that has none, should get null")
    public void testGetLastValidateNull() {
        assertThat(listPublisherVersionsView.getLastValidate(publisher1)).isNull();
    }
}