예제 #1
0
        public async Task AoSolicitarAListagemDeFilmesDeveRetornarUmaColecaoDeFilmes()
        {
            //ARRANGE
            var  valorEsperado        = Task.FromResult(new List <Filme>().AsEnumerable());
            byte quantidadeEsperada   = 8;
            var  mockFilmeRepositorio = new Mock <IFilmeRepositorio>();
            var  mockRegraQuantidadeMaximaParticipantes = new Mock <IRegraQuantidadeParticipantes>();

            mockFilmeRepositorio
            .Setup(r => r.ListarFilmesAsync())
            .Returns(valorEsperado);
            mockRegraQuantidadeMaximaParticipantes
            .Setup(r => r.ObterQuantidadeMaxima())
            .Returns(quantidadeEsperada);
            var controller = new FilmeController(mockFilmeRepositorio.Object, mockRegraQuantidadeMaximaParticipantes.Object);

            //ACT
            var filmesResponse = await controller.GetFilmesAsync();

            //ASSERT
            mockFilmeRepositorio.Verify(r => r.ListarFilmesAsync(), Times.Once);
            Assert.IsType <ActionResult <FilmesDisponiveisViewModel> >(filmesResponse);
            var filmeDisponivelViewModel = (FilmesDisponiveisViewModel)((OkObjectResult)filmesResponse.Result).Value;

            Assert.Equal(quantidadeEsperada, filmeDisponivelViewModel.QuantidadeMaximaParticipantes);
            Assert.Same(valorEsperado.Result, filmeDisponivelViewModel.Filmes);
        }