PublisherVersionViewTest.java 8.69 KB
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;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.platform.runner.JUnitPlatform;
import org.junit.runner.RunWith;
import org.legrog.entities.Country;
import org.legrog.entities.Publisher;
import org.legrog.entities.PublisherVersion;
import org.legrog.test.MockitoExtension;
import org.legrog.web.xyz.SharedService;
import org.mockito.Answers;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.List;

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

/**
 * Classe testant PublisherVersionView.
 */
@RunWith(JUnitPlatform.class)
@ExtendWith(MockitoExtension.class)
@DisplayName("Création et visualisation de version d'éditeur")
public class PublisherVersionViewTest {
    Logger logger = LoggerFactory.getLogger(getClass());

    private PublisherVersionView publisherVersionView;

    private PublisherVersion publisherVersion;

    // TODO tester add et update, mais je ne sais pas comment je suis censé faire

    @BeforeEach
    public void setUp(@Mock PublisherService publisherService, @Mock SharedService sharedService) throws Exception{
        publisherVersionView = new PublisherVersionView(publisherService, sharedService);
        publisherVersionView.setEditMode(false);
        publisherVersionView.setNewPublisher(false);

        publisherVersion = new PublisherVersion();
        publisherVersion.setPublisherName("A");
        publisherVersion.setPublisherStreetAddress("B");
        publisherVersion.setPublisherPostalCode("C");
        publisherVersion.setPublisherPostOfficeBoxNumber("D");
        publisherVersion.setPublisherAddressRegion("E");
        publisherVersion.setPublisherAddressLocality("F");
        publisherVersion.setPublisherAddressCountry(new Country());
        publisherVersion.setPublisherTelephone("G");
        publisherVersion.setPublisherEmail("H");
        publisherVersion.setPublisherURL("I");
        publisherVersion.setPublisherActive(true);
        publisherVersion.setPublisherHistory("J");
        publisherVersion.setPublisher(new Publisher());

        when(publisherService.getPublisherVersion(1)).thenReturn(publisherVersion);

    }

    @Test
    @DisplayName("depends on Shared Service and User Service")
    public void testDependencies() {
        assertThat(publisherVersionView).isNotNull();
    }

    @DisplayName("Passage en mode édition")
    @Test
    public void testEdit() {
        assertThat(publisherVersionView.isEditMode()).isFalse();
        publisherVersionView.edit();
        assertThat(publisherVersionView.isEditMode()).isTrue();
    }

    @DisplayName("Annulation des données saisie pour un nouvel éditeur")
    @Test
    public void testCancelNewPublisher() {
        publisherVersionView.setNewPublisher(true);

        publisherVersionView.setPublisherName("A");
        publisherVersionView.setPublisherStreetAddress("B");
        publisherVersionView.setPublisherPostalCode("C");
        publisherVersionView.setPublisherPostOfficeBoxNumber("D");
        publisherVersionView.setPublisherAddressRegion("E");
        publisherVersionView.setPublisherAddressLocality("F");
        publisherVersionView.setPublisherAddressCountry(new Country());
        publisherVersionView.setPublisherTelephone("G");
        publisherVersionView.setPublisherEmail("H");
        publisherVersionView.setPublisherURL("I");
        publisherVersionView.setPublisherActive(true);
        publisherVersionView.setPublisherHistory("J");

        publisherVersionView.cancel();

        assertThat(publisherVersionView.getPublisherName()).isNull();
        assertThat(publisherVersionView.getPublisherStreetAddress()).isNull();
        assertThat(publisherVersionView.getPublisherPostalCode()).isNull();
        assertThat(publisherVersionView.getPublisherPostOfficeBoxNumber()).isNull();
        assertThat(publisherVersionView.getPublisherAddressRegion()).isNull();
        assertThat(publisherVersionView.getPublisherAddressLocality()).isNull();
        assertThat(publisherVersionView.getPublisherTelephone()).isNull();
        assertThat(publisherVersionView.getPublisherEmail()).isNull();
        assertThat(publisherVersionView.getPublisherURL()).isNull();
        assertThat(publisherVersionView.getPublisherHistory()).isNull();
        assertThat(publisherVersionView.isPublisherActive()).isFalse();
        assertThat(publisherVersionView.isEditMode()).isTrue();
    }

    @DisplayName("Annulation de saisie de nouvelle version de saisie d'un éditeur existant")
    @Test
    public void testCancelNewVersionOfPublisher() {
        publisherVersionView.setNewPublisher(false);
        publisherVersionView.setPublisherVersionId(1);

        publisherVersionView.setPublisherName("1");
        publisherVersionView.setPublisherStreetAddress("2");
        publisherVersionView.setPublisherPostalCode("3");
        publisherVersionView.setPublisherPostOfficeBoxNumber("4");
        publisherVersionView.setPublisherAddressRegion("5");
        publisherVersionView.setPublisherAddressLocality("6");
        publisherVersionView.setPublisherAddressCountry(new Country());
        publisherVersionView.setPublisherTelephone("7");
        publisherVersionView.setPublisherEmail("8");
        publisherVersionView.setPublisherURL("9");
        publisherVersionView.setPublisherActive(false);
        publisherVersionView.setPublisherHistory("10");

        publisherVersionView.cancel();

        assertThat(publisherVersionView.getPublisherName()).isEqualTo("A");
        assertThat(publisherVersionView.getPublisherStreetAddress()).isEqualTo("B");
        assertThat(publisherVersionView.getPublisherPostalCode()).isEqualTo("C");
        assertThat(publisherVersionView.getPublisherPostOfficeBoxNumber()).isEqualTo("D");
        assertThat(publisherVersionView.getPublisherAddressRegion()).isEqualTo("E");
        assertThat(publisherVersionView.getPublisherAddressLocality()).isEqualTo("F");
        assertThat(publisherVersionView.getPublisherTelephone()).isEqualTo("G");
        assertThat(publisherVersionView.getPublisherEmail()).isEqualTo("H");
        assertThat(publisherVersionView.getPublisherURL()).isEqualTo("I");
        assertThat(publisherVersionView.getPublisherHistory()).isEqualTo("J");
        assertThat(publisherVersionView.isEditMode()).isFalse();

    }

    @Test
    @DisplayName("Test de la fonction de chargement des valeurs initiales pour leur affichage")
    public void testLoadData() {
        publisherVersionView.setNewPublisher(true);
        publisherVersionView.setPublisherVersionId(1);
        publisherVersionView.loadData();
        assertThat(publisherVersionView.getPublisherName()).isEqualTo("A");
        assertThat(publisherVersionView.getPublisherStreetAddress()).isEqualTo("B");
        assertThat(publisherVersionView.getPublisherPostalCode()).isEqualTo("C");
        assertThat(publisherVersionView.getPublisherPostOfficeBoxNumber()).isEqualTo("D");
        assertThat(publisherVersionView.getPublisherAddressRegion()).isEqualTo("E");
        assertThat(publisherVersionView.getPublisherAddressLocality()).isEqualTo("F");
        assertThat(publisherVersionView.getPublisherTelephone()).isEqualTo("G");
        assertThat(publisherVersionView.getPublisherEmail()).isEqualTo("H");
        assertThat(publisherVersionView.getPublisherURL()).isEqualTo("I");
        assertThat(publisherVersionView.isPublisherActive()).isTrue();
        assertThat(publisherVersionView.getPublisherHistory()).isEqualTo("J");
        assertThat(publisherVersionView.isNewPublisher()).isFalse();
    }

    @Test
    @DisplayName("Test initialisation formulaire pour nouvel éditeur")
    public void testLoadDataEmpty() {
        publisherVersionView.setNewPublisher(false);
        publisherVersionView.setPublisherVersionId(0);
        publisherVersionView.loadData();
        assertThat(publisherVersionView.isNewPublisher()).isTrue();
        assertThat(publisherVersionView.isEditMode()).isTrue();
    }

    @Nested
    @DisplayName("post construct method")
    class init {

        private List<Country> countries;

        @BeforeEach
        public void setUp(@Mock SharedService sharedService) {
            when(sharedService.getAllCountries()).thenReturn(countries);
        }

        @Test
        @DisplayName("should set lists of available masks, user roles, and user properties from shared service")
        public void testList(@Mock SharedService sharedService) {
            publisherVersionView.init();
            assertThat(publisherVersionView.getAvailableCountries()).isEqualTo(countries);
        }
    }
}