Commit 7f228573 authored by Matej Vavro's avatar Matej Vavro
Browse files

test: finished Facade tests, started Rest Controller tests

parent 190fa4c4
Loading
Loading
Loading
Loading
+6 −13
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ import org.mockito.junit.jupiter.MockitoExtension;
import java.util.List;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@@ -56,21 +57,13 @@ public class RecommendationsFacadeTest {
    void getRecommendedMovies_WithInvalidId_ThrowsException() {
        // Arrange
        long movieId = 154L;
        List<Movie> movies = TestDataFactory.createMovieList();
        List<MovieDTO> movieDTOs = TestDataFactory.createMovieDTOList(movies.size());

        Mockito.when(recommendationsService.getRecommendedMovies(movieId)).thenThrow(EntityNotFound);
        Mockito.when(movieMapper.mapToMovieDTOList(movies)).thenReturn(movieDTOs);

        // Act
        List<MovieDTO> result = recommendationsFacade.getRecommendedMovies(movieId);
        Mockito.when(recommendationsService.getRecommendedMovies(movieId)).thenThrow(RuntimeException.class);

        // Assert
        assertThat(result).isNotNull();
        assertThat(result.size()).isEqualTo(movieDTOs.size());
        assertThat(result).containsAll(movieDTOs);
        // Act & Assert
        assertThrows(RuntimeException.class, () -> recommendationsFacade.getRecommendedMovies(movieId),
            "Exception was not thrown");
        verify(recommendationsService, times(1)).getRecommendedMovies(movieId);
        verify(movieMapper, times(1)).mapToMovieDTOList(any(List.class));
        verify(movieMapper, times(0)).mapToMovieDTOList(any(List.class));
    }

    @Test
+52 −0
Original line number Diff line number Diff line
package cz.muni.fi.pa165.recommendations.rest;

import cz.muni.fi.pa165.recommendations.api.MovieDTO;
import cz.muni.fi.pa165.recommendations.facade.RecommendationsFacade;
import cz.muni.fi.pa165.recommendations.util.TestDataFactory;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.http.HttpStatusCode;
import org.springframework.http.ResponseEntity;

import java.util.List;

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

@ExtendWith(MockitoExtension.class)
public class RecommendationsRestControllerTest {

    @Mock
    private RecommendationsFacade recommendationsFacade;

    @InjectMocks
    private RecommendationsRestController restController;

    @Test
    void getRecommendedMovies_WithValidIdAndSpecificCount_Returns200StatusCodeAndValidDtoClassesAmount() {
        // Arrange
        long movieId = 1L;
        int count = 5;
        List<MovieDTO> movieDTOs = TestDataFactory.createMovieDTOList(count);

        Mockito.when(recommendationsFacade.getRecommendedMovies(movieId, count)).thenReturn(movieDTOs);

        // Act
        ResponseEntity<List<MovieDTO>> result = restController.getRecommendedMovies(movieId, count);

        // Assert
        assertThat(result).isNotNull();
        assertThat(result.getStatusCode()).isEqualTo(HttpStatusCode.valueOf(200));
        List<MovieDTO> resultMovies = result.getBody();
        assertThat(resultMovies).isNotNull();
        assertThat(resultMovies.size()).isEqualTo(movieDTOs.size());

        assertThat(resultMovies).containsAll(movieDTOs);
        verify(recommendationsFacade, times(1)).getRecommendedMovies(movieId, count);
    }
}