Esempio n. 1
0
        public async Task AddScreening_sets_route_values_correctly(
            AddScreeningViewModel model,
            ISendAddScreeningCommandService serviceStub,
            IResourceAwaiter awaiterDummy,
            Success <ScreeningLocation> success,
            [NoAutoProperties] MoviesController sut)
        {
            // Arrange
            Mock.Get(serviceStub)
            .Setup(
                x =>
                x.SendAddScreeningCommand(It.IsAny <AddNewScreening>()))
            .ReturnsAsync(success);

            Guid movieId = model.MovieId;

            // Act
            dynamic result = await
                             sut.AddScreening(movieId, model, serviceStub, awaiterDummy);

            // Assert
            RouteValueDictionary actual = result.RouteValues;

            actual.Should().Contain("movieId", movieId);
        }
Esempio n. 2
0
        public async Task given_service_returns_error_then_AddScreening_sets_model(
            AddScreeningViewModel model,
            ISendAddScreeningCommandService serviceStub,
            IResourceAwaiter awaiterDummy,
            Error <ScreeningLocation> error,
            [NoAutoProperties] MoviesController sut)
        {
            // Arrange
            Mock.Get(serviceStub)
            .Setup(
                x =>
                x.SendAddScreeningCommand(It.IsAny <AddNewScreening>()))
            .ReturnsAsync(error);

            Guid movieId = model.MovieId;

            // Act
            dynamic result = await
                             sut.AddScreening(movieId, model, serviceStub, awaiterDummy);

            // Assert
            object actual = result.Model;

            actual.Should().BeSameAs(model);
        }
Esempio n. 3
0
        public async Task AddScreening_returns_RedirectToActionResult(
            AddScreeningViewModel model,
            ISendAddScreeningCommandService serviceStub,
            IResourceAwaiter awaiterDummy,
            Success <ScreeningLocation> success,
            [NoAutoProperties] MoviesController sut)
        {
            // Arrange
            Mock.Get(serviceStub)
            .Setup(
                x =>
                x.SendAddScreeningCommand(It.Is <AddNewScreening>(
                                              p =>
                                              p.MovieId == model.MovieId &&
                                              p.TheaterId == model.TheaterId &&
                                              p.ScreeningTime == model.ScreeningTime &&
                                              p.DefaultFee == model.DefaultFee &&
                                              p.ChildrenFee == model.ChildrenFee)))
            .ReturnsAsync(success);

            Guid movieId = model.MovieId;

            // Act
            ActionResult actual = await
                                  sut.AddScreening(movieId, model, serviceStub, awaiterDummy);

            // Assert
            actual.Should().BeOfType <RedirectToActionResult>();
        }
Esempio n. 4
0
        public async Task AddScreening_returns_ViewResult(
            TheaterDto[] theaters,
            IGetAllTheatersService serviceStub,
            Guid movieId,
            [NoAutoProperties] MoviesController sut)
        {
            Mock.Get(serviceStub)
            .Setup(x => x.GetAllTheaters())
            .ReturnsAsync(theaters);

            ActionResult actual = await sut.AddScreening(serviceStub, movieId);

            actual.Should().BeAssignableTo <ViewResult>();
        }
Esempio n. 5
0
        public async Task AddScreening_sets_model_correctly(
            TheaterDto[] theaters,
            IGetAllTheatersService serviceStub,
            Guid movieId,
            [NoAutoProperties] MoviesController sut)
        {
            // Arrange
            Mock.Get(serviceStub)
            .Setup(x => x.GetAllTheaters())
            .ReturnsAsync(theaters);

            // Act
            dynamic result = await sut.AddScreening(serviceStub, movieId);

            // Assert
            object actual = result.Model;

            actual.Should().BeOfType <AddScreeningViewModel>();
            actual.Should().BeEquivalentTo(new
            {
                MovieId     = movieId,
                TheaterId   = default(Guid),
                DefaultFee  = default(decimal),
                ChildrenFee = default(decimal),
            });
            DateTime screeningTime = ((dynamic)actual).ScreeningTime;

            screeningTime.Should().BeCloseTo(DateTime.Today.AddDays(2));
            actual.Should().BeEquivalentTo(new
            {
                Theaters = from t in theaters
                           select new SelectListItem
                {
                    Text  = t.Name,
                    Value = $"{t.Id}",
                },
            });
        }
Esempio n. 6
0
        public async Task given_service_returns_error_then_AddScreening_adds_model_error(
            AddScreeningViewModel model,
            ISendAddScreeningCommandService serviceStub,
            IResourceAwaiter awaiterDummy,
            Error <ScreeningLocation> error,
            [NoAutoProperties] MoviesController sut)
        {
            // Arrange
            Mock.Get(serviceStub)
            .Setup(
                x =>
                x.SendAddScreeningCommand(It.IsAny <AddNewScreening>()))
            .ReturnsAsync(error);

            Guid movieId = model.MovieId;

            // Act
            await sut.AddScreening(movieId, model, serviceStub, awaiterDummy);

            // Assert
            ModelStateEntry state = sut.ModelState[string.Empty];

            state.Errors.Should().Contain(e => e.ErrorMessage == error.Message);
        }
Esempio n. 7
0
        public async Task AddScreening_awaits_resource_creation(
            AddScreeningViewModel model,
            ISendAddScreeningCommandService serviceStub,
            IResourceAwaiter awaiterSpy,
            Success <ScreeningLocation> success,
            [NoAutoProperties] MoviesController sut)
        {
            // Arrange
            Mock.Get(serviceStub)
            .Setup(
                x =>
                x.SendAddScreeningCommand(It.IsAny <AddNewScreening>()))
            .ReturnsAsync(success);

            Guid movieId = model.MovieId;

            // Act
            await sut.AddScreening(movieId, model, serviceStub, awaiterSpy);

            // Assert
            Uri location = success.Value.Uri;

            Mock.Get(awaiterSpy).Verify(x => x.AwaitResource(location));
        }