ReindexViewTest.java 2.31 KB
package org.legrog.web.xyz;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
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.legrog.entities.IndexingException;
import org.legrog.test.MockitoExtension;
import org.legrog.web.account.AccountService;
import org.legrog.web.publisher.PublisherService;
import org.mockito.Mock;
import org.mockito.Mockito;

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

/**
 * Classe testing ReindexView
 */
@RunWith(JUnitPlatform.class)
@ExtendWith(MockitoExtension.class)
@DisplayName("Reindexes data")
public class ReindexViewTest {
    private ReindexView reindexView;
    private PublisherService publisherService;
    private AccountService accountService;

    @BeforeEach
    public void setUp(@Mock PublisherService publisherService, @Mock AccountService accountService) {
        this.publisherService = publisherService;
        this.accountService = accountService;
        this.reindexView = new ReindexView(publisherService, accountService);
    }

    @Nested
    @DisplayName("reindexAll method")
    class ReindexAllTests {

        @DisplayName("when called, should call for reindexing of publishers and accounts")
        @Test
        public void reindexAllTest(@Mock PublisherService publisherService, @Mock AccountService accountService) throws IndexingException {
            reindexView.reindexAll();
            Mockito.verify(publisherService).reindexAllPublishers();
            Mockito.verify(accountService).reindexAllAccounts();
        }

        @DisplayName("when called, should set its indexed numbers to values returned by reindexers")
        @Test
        public void setReturnIntegers(@Mock PublisherService publisherService, @Mock AccountService accountService) throws IndexingException {
            when(publisherService.reindexAllPublishers()).thenReturn(1);
            when(accountService.reindexAllAccounts()).thenReturn(2);
            reindexView.reindexAll();
            assertThat(reindexView.getIndexedPublishersNumber()).isEqualTo(1);
            assertThat(reindexView.getIndexedAccountsNumber()).isEqualTo(2);
        }

    }


}