Example #1
0
        public void Setup()
        {
            // Организация - создание имитированного хранилища данных
            Mock <IDiscountRepository> mock = new Mock <IDiscountRepository>();

            mock.Setup(m => m.GetDiscounts).Returns(new List <Discount> {
                new Discount {
                    ID = 1, Title = "Скидка 1"
                },
                new Discount {
                    ID = 2, Title = "Скидка 2"
                },
                new Discount {
                    ID = 3, Title = "Скидка 3"
                },
                new Discount {
                    ID = 4, Title = "Скидка 4"
                },
                new Discount {
                    ID = 5, Title = "Скидка 5"
                }
            });

            // Организация - создание контроллера
            controller          = new DiscountsController(mock.Object);
            controller.pageSize = 3;
        }
        public void BuyTicketTest()
        {
            // Arrange
            var  data = unitOfFactory.CreateTransactionalUnitOfWork();
            User user = new User()
            {
                Login    = "******",
                Password = "******",
                Tickets  = "1,2,3:1-14,15,16;1,1,3,3:1-24,25,26,27"
            };

            data.Users.Add(user);
            data.SaveChanges();
            DiscountsController discountController = new DiscountsController(unitOfFactory);
            var discountResult = discountController.GetDiscount(1);
            var discount       = (discountResult.Result as OkNegotiatedContentResult <DiscountDTO>).Content;
            Dictionary <DiscountDTO, int> dict = new Dictionary <DiscountDTO, int>();

            dict.Add(discount, 2);

            ConnectionPathDTO conPath = new ConnectionPathDTO();
            Connection        con     = data.Connections.Find(1);
            ConnectionDTO     conDTO  = Mapper.Map <Connection, ConnectionDTO>(con);
            ConnectionPart    conPart = new ConnectionPart
            {
                Connection = con,
                Id         = 9999999,
                Seats      = "1;2;3",
                FreeSeats  = 3,
                Route      = data.Routes.Find(1),
                StartTime  = DateTime.Now,
                EndTime    = DateTime.Now.AddMinutes(30)
            };

            data.ConnectionParts.Add(conPart);
            data.SaveChanges();
            conPath.ConnectionsParts = new List <ConnectionPartDTO> {
                Mapper.Map <ConnectionPart, ConnectionPartDTO>(conPart)
            };
            UserDTO   userDTO   = Mapper.Map <User, UserDTO>(data.Users.Where(u => u.Login == user.Login).First());
            TicketDTO ticketDTO = new TicketDTO()
            {
                Discounts      = dict,
                User           = userDTO,
                ConnectionPath = conPath,
                Seats          = new List <int[]> {
                    new int[] { 1, 3 }
                }
            };
            TicketsModel ticketsModel = new TicketsModel();

            data.SaveChanges();

            // Act
            ticketsModel.BuyTicket(ticketDTO, data);

            // Assert
            Assert.AreEqual("2", conPart.Seats);
            Assert.AreEqual(string.Format("1,2,3:1-14,15,16;1,1,3,3:1-24,25,26,27;1,1:{0}-1,3", conPart.Id), user.Tickets);
        }
        public async Task DeleteDiscountAsync__An_unexpected_internal_error_occurred__Should_throw_Exception()
        {
            _discountDbServiceMock.Setup(x => x.DeleteAsync(It.IsAny <string>())).ThrowsAsync(new Exception());
            var controller = new DiscountsController(_discountDbServiceMock.Object, _logger, _mapperMock.Object);

            Func <Task> result = async() => await controller.DeleteDiscountAsync("1");

            await result.Should().ThrowExactlyAsync <Exception>();
        }
        public async Task DeleteDiscountAsync__Argument_id_is_null_or_empty__Should_return_400BadRequest_response([Values(null, "")] string id)
        {
            _discountDbServiceMock.Setup(x => x.DeleteAsync(id)).ThrowsAsync(new ArgumentException());
            var controller = new DiscountsController(_discountDbServiceMock.Object, _logger, _mapperMock.Object);

            var result = await controller.DeleteDiscountAsync(id);

            (result as ObjectResult).StatusCode.Should().Be(400);
            ((result as ObjectResult).Value as ResponseWrapper).Error.Should().NotBeNull();
        }
        public async Task GetDiscountAsync__Element_not_found__Should_return_404NotFound_response_with_error()
        {
            _discountDbServiceMock.Setup(x => x.GetAsync(It.IsNotNull <string>())).ThrowsAsync(new InvalidOperationException());
            var controller = new DiscountsController(_discountDbServiceMock.Object, _logger, _mapperMock.Object);

            var result = await controller.GetDiscountAsync("1");

            (result as ObjectResult).StatusCode.Should().Be(404);
            ((result as ObjectResult).Value as ResponseWrapper).Error.Should().NotBeNull();
        }
        public async Task DeleteDiscountAsync__Delete_succeeded__Should_return_200OK_response()
        {
            _discountDbServiceMock.Setup(x => x.DeleteAsync(It.IsNotNull <string>()));
            var controller = new DiscountsController(_discountDbServiceMock.Object, _logger, _mapperMock.Object);

            var result = await controller.DeleteDiscountAsync("1");

            (result as ObjectResult).StatusCode.Should().Be(200);
            ((result as ObjectResult).Value as ResponseWrapper).Error.Should().BeEquivalentTo(new ApiError());
        }
        public async Task GetAllDiscountAsync__At_least_one_element_found__Should_return_200OK_response_with_not_empty_IEnumerable()
        {
            _discountDbServiceMock.Setup(x => x.GetAllAsync()).ReturnsAsync(_discounts);
            _mapperMock.Setup(x => x.Map <IEnumerable <DiscountDto> >(It.IsNotNull <IEnumerable <Discount> >())).Returns(_discountDtos.AsEnumerable());
            var controller = new DiscountsController(_discountDbServiceMock.Object, _logger, _mapperMock.Object);

            var result = await controller.GetAllDiscountsAsync();

            (result as ObjectResult).StatusCode.Should().Be(200);
            (((result as ObjectResult).Value as ResponseWrapper).Data as IEnumerable <DiscountDto>).Should().NotBeEmpty();
        }
        public async Task UpdateDiscountAsync__An_unexpected_internal_error_occurred__Should_throw_Exception()
        {
            _discountDbServiceMock.Setup(x => x.UpdateAsync(It.IsAny <Discount>())).ThrowsAsync(new Exception());
            _discountDbServiceMock.Setup(x => x.RestrictedUpdateAsync(It.IsAny <Discount>())).ThrowsAsync(new Exception());
            _mapperMock.Setup(x => x.Map <Discount>(It.IsNotNull <Discount>())).Returns(_validDiscount);
            var controller = new DiscountsController(_discountDbServiceMock.Object, _logger, _mapperMock.Object);

            Func <Task> result = async() => await controller.UpdateDiscountAsync(_discountDtos[0].Id, _discountDtos[0]);

            await result.Should().ThrowExactlyAsync <Exception>();
        }
        public async Task DeleteDiscountAsync__An_internal_error_reffered_to_the_database_occurred__Should_throw_InternalDbServiceException()
        {
            // Example of these errors: database does not exist, table does not exist etc.

            _discountDbServiceMock.Setup(x => x.DeleteAsync(It.IsAny <string>())).ThrowsAsync(new InternalDbServiceException());
            var controller = new DiscountsController(_discountDbServiceMock.Object, _logger, _mapperMock.Object);

            Func <Task> result = async() => await controller.DeleteDiscountAsync("1");

            await result.Should().ThrowExactlyAsync <InternalDbServiceException>();
        }
        public async Task UpdateDiscountAsync__Argument_id_is_null_or_empty__Should_return_400BadRequest_response([Values(null, "")] string id)
        {
            var discountDto = new DiscountDto {
                Id = id, Description = "Test dto description"
            };
            var controller = new DiscountsController(_discountDbServiceMock.Object, _logger, _mapperMock.Object);

            var result = await controller.UpdateDiscountAsync(id, discountDto);

            (result as ObjectResult).StatusCode.Should().Be(400);
            ((result as ObjectResult).Value as ResponseWrapper).Error.Should().NotBeNull();
        }
Example #11
0
        public void Configure_DateTestParsed()
        {
            var controller = new DiscountsController();

            controller.Configure(DateTime.ParseExact("01-01-2018", "dd-MM-yyyy", CultureInfo.InvariantCulture));

            var date = DiscountsContants.DiscountDateToBeParsed;

            if (date != "1-1-2018")
            {
                Assert.Fail();
            }
        }
        public async Task UpdateDiscountAsync__Argument_id_and_id_property_in_element_to_be_updated_mismatches__Should_return_400BadRequest_response()
        {
            var discountDto = new DiscountDto {
                Id = "1", Description = "Test dto description"
            };
            string id         = discountDto.Id + "_mismatched_id";
            var    controller = new DiscountsController(_discountDbServiceMock.Object, _logger, _mapperMock.Object);

            var result = await controller.UpdateDiscountAsync(id, discountDto);

            (result as ObjectResult).StatusCode.Should().Be(400);
            ((result as ObjectResult).Value as ResponseWrapper).Error.Should().NotBeNull();
        }
        public async Task AddDiscountAsync__An_unexpected_internal_error_occurred__Should_throw_Exception()
        {
            _discountDbServiceMock.Setup(x => x.AddAsync(It.IsAny <Discount>())).ThrowsAsync(new Exception());
            _discountDbServiceMock.Setup(x => x.RestrictedAddAsync(It.IsAny <Discount>())).ThrowsAsync(new Exception());
            var controller = new DiscountsController(_discountDbServiceMock.Object, _logger, _mapperMock.Object);
            var discount   = new DiscountDto {
                Id = "1", Description = "test"
            };

            Func <Task> result = async() => await controller.AddDiscountAsync(discount);

            await result.Should().ThrowExactlyAsync <Exception>();
        }
        public async Task UpdateDiscountAsync__An_internal_error_reffered_to_the_database_occurred__Should_throw_InternalDbServiceException()
        {
            // Example of these errors: database does not exist, table does not exist etc.

            _discountDbServiceMock.Setup(x => x.UpdateAsync(It.IsAny <Discount>())).ThrowsAsync(new InternalDbServiceException());
            _discountDbServiceMock.Setup(x => x.RestrictedUpdateAsync(It.IsAny <Discount>())).ThrowsAsync(new InternalDbServiceException());
            _mapperMock.Setup(x => x.Map <Discount>(It.IsNotNull <Discount>())).Returns(_validDiscount);
            var controller = new DiscountsController(_discountDbServiceMock.Object, _logger, _mapperMock.Object);

            Func <Task> result = async() => await controller.UpdateDiscountAsync(_discountDtos[0].Id, _discountDtos[0]);

            await result.Should().ThrowExactlyAsync <InternalDbServiceException>();
        }
        public async Task AddDiscountAsync__Already_there_is_the_same_element_in_database__Should_return_400BadRequest_response()
        {
            var discountDto = CreateDiscountDto(_discounts[0]);

            _mapperMock.Setup(x => x.Map <Discount>(discountDto)).Returns(_discounts[0]);
            _discountDbServiceMock.Setup(x => x.AddAsync(It.IsNotNull <Discount>())).ThrowsAsync(new InvalidOperationException());
            _discountDbServiceMock.Setup(x => x.RestrictedAddAsync(It.IsNotNull <Discount>())).ThrowsAsync(new InvalidOperationException());
            var controller = new DiscountsController(_discountDbServiceMock.Object, _logger, _mapperMock.Object);

            var result = await controller.AddDiscountAsync(discountDto);

            (result as ObjectResult).StatusCode.Should().Be(400);
            ((result as ObjectResult).Value as ResponseWrapper).Error.Should().NotBeNull();
        }
        public async Task GetDiscountAsync__Data_retrieve_succeeded__Should_return_200Ok_response_with_data()
        {
            string id = "15891fb0-faec-43c6-9e83-04a4a17c3660";

            _discountDbServiceMock.Setup(x => x.GetAsync(It.IsNotNull <string>())).ReturnsAsync(_validDiscount);
            _mapperMock.Setup(x => x.Map <DiscountDto>(It.IsNotNull <Discount>())).Returns(new DiscountDto {
                Id = id, Description = "new mapped discount"
            });
            var controller = new DiscountsController(_discountDbServiceMock.Object, _logger, _mapperMock.Object);

            var result = await controller.GetDiscountAsync(id);

            (result as ObjectResult).StatusCode.Should().Be(200);
            ((result as ObjectResult).Value as ResponseWrapper).Data.Should().NotBeNull();
        }
        public async Task AddDiscountAsync__An_internal_error_reffered_to_the_database_occurred__Should_throw_InternalDbServiceException()
        {
            // Example of these errors: database does not exist, table does not exist etc.

            _discountDbServiceMock.Setup(x => x.AddAsync(It.IsAny <Discount>())).ThrowsAsync(new InternalDbServiceException());
            _discountDbServiceMock.Setup(x => x.RestrictedAddAsync(It.IsAny <Discount>())).ThrowsAsync(new InternalDbServiceException());
            var discount = new DiscountDto {
                Id = "1", Description = "test"
            };
            var controller = new DiscountsController(_discountDbServiceMock.Object, _logger, _mapperMock.Object);

            Func <Task> result = async() => await controller.AddDiscountAsync(discount);

            await result.Should().ThrowExactlyAsync <InternalDbServiceException>();
        }
Example #18
0
        public void Index_IsInAdminRole()
        {
            var controller = new DiscountsController()
            {
                ControllerContext = new ControllerContext()
                {
                    HttpContext = new DefaultHttpContext()
                    {
                        User = new ClaimsPrincipal(new ClaimsIdentity(new[]
                        {
                            new Claim(ClaimTypes.Role, "Admin")
                        }))
                    }
                }
            };

            Assert.IsTrue(controller.User.IsInRole("Admin"));
        }
        public async Task UpdateDiscountAsync__Update_succeeded__Should_return_200OK_response_with_updated_element()
        {
            var validDiscount = new Discount {
                Id = "12312321321321", Description = "Valid description"
            };
            var validDiscountDto = CreateDiscountDto(validDiscount);

            _mapperMock.Setup(x => x.Map <Discount>(It.IsNotNull <DiscountDto>())).Returns(validDiscount);
            _mapperMock.Setup(x => x.Map <DiscountDto>(It.IsNotNull <Discount>())).Returns(validDiscountDto);
            _discountDbServiceMock.Setup(x => x.UpdateAsync(validDiscount)).ReturnsAsync(validDiscount);
            _discountDbServiceMock.Setup(x => x.RestrictedUpdateAsync(validDiscount)).ReturnsAsync(validDiscount);
            var controller = new DiscountsController(_discountDbServiceMock.Object, _logger, _mapperMock.Object);

            var result = await controller.UpdateDiscountAsync(validDiscountDto.Id, validDiscountDto);

            (result as ObjectResult).StatusCode.Should().Be(200);
            ((result as ObjectResult).Value as ResponseWrapper).Data.Should().BeEquivalentTo(validDiscountDto);
        }
        public async Task UpdateDiscountAsync__Element_not_found__Should_return_404NotFound_response_with_error()
        {
            var validDiscount = new Discount {
                Id = "12312321321321", Description = "Valid description"
            };
            var validDiscountDto = CreateDiscountDto(validDiscount);

            _mapperMock.Setup(x => x.Map <Discount>(It.IsNotNull <DiscountDto>())).Returns(validDiscount);
            _mapperMock.Setup(x => x.Map <DiscountDto>(It.IsNotNull <Discount>())).Returns(validDiscountDto);
            _discountDbServiceMock.Setup(x => x.UpdateAsync(It.IsNotNull <Discount>())).ThrowsAsync(new InvalidOperationException());
            _discountDbServiceMock.Setup(x => x.RestrictedUpdateAsync(It.IsNotNull <Discount>())).ThrowsAsync(new InvalidOperationException());
            var controller = new DiscountsController(_discountDbServiceMock.Object, _logger, _mapperMock.Object);


            var result = await controller.UpdateDiscountAsync(validDiscountDto.Id, validDiscountDto);

            (result as ObjectResult).StatusCode.Should().Be(404);
            ((result as ObjectResult).Value as ResponseWrapper).Error.Should().NotBeNull();
        }