private static void AddRangeOrdersTest() { ShopContextFactory shopContextFactory = new ShopContextFactory(); ShopContext context = shopContextFactory.Create(); ICustomerRepository customerRepository = new DbCustomerRepository(context); var customers = customerRepository.Get(); ProductFaker productFaker = new ProductFaker(); var products = productFaker.Generate(50); ServiceFaker serviceFaker = new ServiceFaker(); var services = serviceFaker.Generate(10); // Union - suma zbiorów var items = products.OfType <Item>().Union(services); OrderFaker orderFaker = new OrderFaker(customers, new OrderDetailFaker(items)); var orders = orderFaker.Generate(10); IOrderRepository orderRepository = new DbOrderRepository(context); orderRepository.AddRange(orders); }
public async void Build_IQueryable_ShouldConstructedWithoutWhereAndOrderByClause() { // 2.1. resolve dependency using (var container = _builder.Build()) using (var scope = container.BeginLifetimeScope()) { // resolve context _context = scope.Resolve <CatalogApiDbContext>(); // seed initial data in inmemory _context = await SetupInitialDB(_context); // expectedResult var expectedResult = ProductFaker.GetProductList(50).Count; // 3. qs dummy NameValueCollection qsDummy = HttpUtility.ParseQueryString(""); // act IQueryBuilder <Product> productQueryBuilder = scope.Resolve <IQueryBuilder <Product> >(); var result = await productQueryBuilder.Build(qsDummy); var resultCount = result.Count; // assert Assert.Equal(expectedResult, resultCount); } }
public void ShouldReturnResultOfValidator( bool valid, ProductValidationService sut) { Mock <IProductValidator> productValidatorMock = new Mock <IProductValidator>(); productValidatorMock .Setup(validator => validator.Validate(It.IsAny <IProduct>())) .Returns(() => { if (valid) { return(new ValidationResult()); } else { return(new ValidationResult(new[] { new ValidationFailure("Test", "Test validator") })); } }); sut.AddValidator(productValidatorMock.Object); IProduct product = new ProductFaker().Generate(); ValidationResult result = sut.Validate(product); result.IsValid.Should().Be(valid); }
protected override void Seed(Vavatech.WebApi.DbServices.WarehouseContext context) { // This method will be called after migrating to the latest version. // You can use the DbSet<T>.AddOrUpdate() helper extension method // to avoid creating duplicate seed data. ProductFaker productFaker = new ProductFaker(); ServiceFaker serviceFaker = new ServiceFaker(); CustomerFaker customerFaker = new CustomerFaker(new AddressFaker()); Product[] products = productFaker.Generate(10).ToArray(); context.Products.AddOrUpdate(p => p.Id, products); Service[] services = serviceFaker.Generate(20).ToArray(); context.Services.AddOrUpdate(p => p.Id, services); context.Customers.AddOrUpdate(p => p.Id, customerFaker.Generate(50).ToArray()); EmployeeFaker employeeFaker = new EmployeeFaker(); context.Users.AddOrUpdate(p => p.Id, employeeFaker.Generate(10).ToArray()); GuestFaker guestFaker = new GuestFaker(); context.Users.AddOrUpdate(p => p.Id, guestFaker.Generate(10).ToArray()); }
public static void Generate() { var productFaker = new ProductFaker(); var serviceFaker = new ServiceFaker(); var products = productFaker.Generate(100); var services = serviceFaker.Generate(40); var customerFaker = new CustomerFaker(); var customers = customerFaker.Generate(50); //var items = products.OfType<Item>().Union(services).ToList(); //var orderFaker = new OrderFaker(customers, items); //var orders = orderFaker.Generate(10); using (var context = new MyContext()) { context.Database.EnsureDeleted(); context.Database.EnsureCreated(); context.Products.AddRange(products); context.Services.AddRange(services); context.SaveChanges(); context.Customers.AddRange(customers); context.SaveChanges(); //context.Orders.AddRange(orders); //context.SaveChanges(); } }
public void ShouldReturnSuccessWhenAdded( Basket sut) { IProduct product = new ProductFaker().Generate(); AddResult result = sut.Add(product); result.Success.Should().BeTrue(); }
public void ShouldAddProductToListOfProducts( Basket sut) { IProduct product = new ProductFaker().Generate(); sut.Add(product); sut.Products.Should().Contain(product); }
public void ShouldReturnValidWhenNoValidators( ProductValidationService sut) { IProduct product = new ProductFaker().Generate(); ValidationResult result = sut.Validate(product); result.IsValid.Should().BeTrue(); }
public void ShouldOnlyApplyToPues( PieExpiryDiscount sut) { IEnumerable <IProduct> products = new ProductFaker().Generate(3); IEnumerable <Discount> results = sut.CalculateDiscounts(products); results.Should().BeEmpty(); }
public void ShouldEqualSumOfProductsWhenNoDiscounts( DiscountService sut) { IEnumerable <IProduct> products = new ProductFaker().Generate(3); Price result = sut.ApplyDiscounts(products); result.Should().Be(products.Sum(p => p.Price)); }
public void NonPiesShouldBeValid( ExpiredPieValidator sut) { IProduct product = new ProductFaker().Generate(); ValidationResult result = sut.Validate(product); result.IsValid.Should().BeTrue(); }
public void CanAddMultipleOfSameProduct( Basket sut) { IProduct product = new ProductFaker().Generate(); sut.Add(product); sut.Add(product); sut.Products.Should().BeEquivalentTo(product, product); }
public void GetProductFaker_CategoryId_ShouldBelessThanMaxCategoryNumbers() { var products = ProductFaker.GetProductList(100); _output.WriteLine(JsonConvert.SerializeObject(products, Formatting.Indented)); var result = products.All(p => p.SubCategory.Id == p.SubCategoryId); Assert.True(result); }
public async Task <IActionResult> Generate([FromForm] int count) { ProductFaker productFaker = new ProductFaker(); IEnumerable <ProductWriteModel> generatedProducts = productFaker.Generate(count); await Task.WhenAll( generatedProducts.Select(this.productRepository.Create)); return(this.RedirectToAction("Index")); }
public void GetProductFaker_AllSubCategoryId_ShouldBeIncluded() { var products = ProductFaker.GetProductList(100); var result = products.GroupBy(p => p.SubCategoryId).OrderBy(g => g.Key).Select(g => (int)g.Key); var totalSubCategoryNumbers = Enum.GetNames(typeof(SubCategoryConstants)).Length; var subCategoryIdList = Enumerable.Range(0, totalSubCategoryNumbers); _output.WriteLine(JsonConvert.SerializeObject(subCategoryIdList)); Assert.Equal(JsonConvert.SerializeObject(result), JsonConvert.SerializeObject(subCategoryIdList)); }
public void PurchaseItem_Validate_DeveRetornarDomainExceptionAoTentarCriarComValoresInvalidos() { // Arange && Act Purchase purchase = PurchaseFaker.GenerateFaker().Generate(); Product product = ProductFaker.GenerateFaker().Generate(); Func <PurchaseItem> func1 = () => new PurchaseItem(0, 1, purchase, product); Func <PurchaseItem> func2 = () => new PurchaseItem(1, 0, purchase, product); // Assert func1.Should().Throw <DomainException>(); func2.Should().Throw <DomainException>(); }
public void OutputItem_Validate_DeveRetornarDomainExceptionAoTentarCriarComValoresInvalidos() { // Arange && Act Output output = OutputFaker.GenerateFaker().Generate(); Product product = ProductFaker.GenerateFaker().Generate(); Func <OutputItem> func1 = () => new OutputItem(0, 1, output, product); Func <OutputItem> func2 = () => new OutputItem(1, 0, output, product); // Assert func1.Should().Throw <DomainException>(); func2.Should().Throw <DomainException>(); }
public void AdjustmentItem_Validate_DeveRetornarDomainExceptionAoTentarCriarComValoresInvalidos() { // Arange && Act Adjustment adjustment = AdjustmentFaker.GenerateFaker().Generate(); Product product = ProductFaker.GenerateFaker().Generate(); Func <AdjustmentItem> func1 = () => new AdjustmentItem(0, 1, adjustment, product); Func <AdjustmentItem> func2 = () => new AdjustmentItem(1, 0, adjustment, product); // Assert func1.Should().Throw <DomainException>(); func2.Should().Throw <DomainException>(); }
public void PurchaseItem_CalculteValue_DeveCalculaCorretamenteOValorDoItem() { // Arange && Act Purchase purchase = PurchaseFaker.GenerateFaker().Generate(); Product product = ProductFaker.GenerateFaker().Generate(); PurchaseItem item = new PurchaseItem(10, 2, purchase, product); // Act decimal value = item.CalculteValue(); // Assert value.Should().Be(20); }
public void OutputItem_CalculteValue_DeveCalculaCorretamenteOValorDoItem() { // Arange && Act Output output = OutputFaker.GenerateFaker().Generate(); Product product = ProductFaker.GenerateFaker().Generate(); OutputItem item = new OutputItem(10, 2, output, product); // Act decimal value = item.CalculteValue(); // Assert value.Should().Be(20); }
public void AdjustmentItem_CalculteValue_DeveCalculaCorretamenteOValorDoItem() { // Arange && Act Adjustment adjustment = AdjustmentFaker.GenerateFaker().Generate(); Product product = ProductFaker.GenerateFaker().Generate(); AdjustmentItem item = new AdjustmentItem(10, 2, adjustment, product); // Act decimal value = item.CalculteValue(); // Assert value.Should().Be(20); }
/// <summary> /// Generates products according to the given quantity with assigned concrete subcategory and category /// </summary> /// <param name="quantity">Number of products</param> /// <returns>products with assigned concrete subcategory and category</returns> public IEnumerable <Product> Generate(int quantity) { var subcategory = new SubcategoryFaker().UsePrivateConstructor().Generate(); var category = new CategoryFaker().UsePrivateConstructor().Generate(); for (int i = 0; i < quantity; i++) { var product = new ProductFaker().UsePrivateConstructor().Generate(); product.SetSubcategory(subcategory); product.Subcategory.SetCategory(category); yield return(product); } }
public void ShouldReturnFailedWhenProductNotValid( [Frozen] Mock <IProductValidationService> productValidationService, Basket sut) { IProduct product = new ProductFaker().Generate(); productValidationService .Setup(service => service.Validate(product)) .Returns(new FluentValidation.Results.ValidationResult(new[] { new FluentValidation.Results.ValidationFailure("Test", "Test failure") })); AddResult result = sut.Add(product); result.Success.Should().BeFalse(); }
private async Task <CatalogApiDbContext> SetupInitialDB(CatalogApiDbContext context) { // this make sure clearing up the data from previous test context.Database.EnsureDeleted(); // recreate database for current test context.Database.EnsureCreated(); // 1.2. seed test data var productsTestData = ProductFaker.GetProductList(50); // wrap with Async IQueryable and add it to context context.AddRange(productsTestData); await context.SaveChangesAsync(); return(context); }
public void ProductsShouldOnlyBeValidForOneDiscount( DiscountService sut) { IProduct product = new ProductFaker().Generate(); Price discountPrice = new Price(product.Price * 0.1m); IProductDiscount discount = new FakeProductDiscount(discountPrice, product); // Adding the same discount twice, to it would apply to the product multiple times, sut.AddProductDiscount(discount); sut.AddProductDiscount(discount); Price result = sut.ApplyDiscounts(new[] { product }); result.Should().Be(new Price(product.Price - discountPrice)); }
public void OutputItem_Update_DeveAtualizarCorretamenteOItemQuandoInformadoValoresValidos() { // Arange && Act Output output = OutputFaker.GenerateFaker().Generate(); Product product = ProductFaker.GenerateFaker().Generate(); Product newProduct = ProductFaker.GenerateFaker().Generate(); OutputItem item = new OutputItem(10, 2, output, product); // Act item.Update(10, 5, newProduct); // Assert item.Amount.Should().Be(10); item.Value.Should().Be(5); }
public void PurchaseItem_Update_DeveAtualizarCorretamenteOItemQuandoInformadoValoresValidos() { // Arange && Act Purchase purchase = PurchaseFaker.GenerateFaker().Generate(); Product product = ProductFaker.GenerateFaker().Generate(); Product newProduct = ProductFaker.GenerateFaker().Generate(); PurchaseItem item = new PurchaseItem(10, 2, purchase, product); // Act item.Update(10, 5, newProduct); // Assert item.Amount.Should().Be(10); item.Value.Should().Be(5); }
public void ShouldApplyDiscountToValidProducts( DiscountService sut) { // product1 is valid for discount, product2 is not. ProductFaker productFaker = new ProductFaker(); IProduct product1 = productFaker.Generate(); IProduct product2 = productFaker.Generate(); Price discountPrice = new Price(product2.Price * 0.5m); IProductDiscount discount = new FakeProductDiscount(discountPrice, product2); sut.AddProductDiscount(discount); Price result = sut.ApplyDiscounts(new[] { product1, product2 }); result.Should().Be(new Price(product1.Price + discountPrice)); }
public void OutputItem_Update_DeveRetornarDomainExceptionAoTentarAtualizarComValoresInvalidos() { // Arange && Act Output output = OutputFaker.GenerateFaker().Generate(); Product product = ProductFaker.GenerateFaker().Generate(); Product newProduct = ProductFaker.GenerateFaker().Generate(); OutputItem item = new OutputItem(10, 2, output, product); // Act Action action1 = () => item.Update(0, 5, newProduct); Action action2 = () => item.Update(1, 0, newProduct); // Assert action1.Should().Throw <DomainException>(); action2.Should().Throw <DomainException>(); }
private static List <Domain.App.Product> GenerateProductsListFromFaker(int count) { var products = new List <Domain.App.Product>(); for (var i = 0; i < count; i++) { var fakeProduct = new ProductFaker().Generate(); products.Add(new Product() { Name = fakeProduct.Name, Stock = fakeProduct.Stock, Prices = GenerateListOfPriceFromFaker(1) }); } return(products); }