public void PutDealItem_ValidData_ShoulBeUpdated() { //init var materialsResult = materialController.GetMaterials(1, int.MaxValue).GetObject <PagedResult <Material> >().Queryable.ToArray(); var deals = dealController.Deals(1, int.MaxValue).GetObject <PagedResult <Deal> >().Queryable.ToArray(); var materialsGen = ControllerHelper.ChooseFrom(materialsResult); var dealsGen = ControllerHelper.ChooseFrom(deals); Prop.ForAll <int[]>((i) => { //execution var deal = dealsGen.Sample(0, 1).Head; var dealItems = sut.GetDealItemsOfDeal(deal.Id).GetObject <IEnumerable <DealItem> >().ToArray(); var dealItem = ControllerHelper.ChooseFrom(dealItems).Sample(0, 1).Head; var material = materialsGen.Sample(0, 1).Head; dealItem.MaterialId = material.Id; dealItem.DealId = deal.Id; var price = Gen.Choose(1, 1000000).Sample(0, 1).Head; dealItem.PricePerOne = price; var quantity = Gen.Choose(1, 1000).Sample(0, 1).Head; dealItem.Quantity = quantity; var result = sut.PutDealItem(dealItem.Id, dealItem).Result; //assertion Assert.IsInstanceOf <NoContentResult>(result); var result1 = sut.GetDealItem(dealItem.Id).Result.GetObject <DealItem>(); Assert.AreEqual(result1.MaterialId, material.Id); Assert.AreEqual(result1.PricePerOne, price); Assert.AreEqual(result1.Quantity, quantity); }).QuickCheckThrowOnFailure(); }
public void PostDealItem_InvalidQuantity_ShoulBeBadRequest() { //init var materialsResult = materialController.GetMaterials(1, int.MaxValue).GetObject <PagedResult <Material> >().Queryable.ToArray(); var deals = dealController.Deals(1, int.MaxValue).GetObject <PagedResult <Deal> >().Queryable.ToArray(); var materialsGen = ControllerHelper.ChooseFrom(materialsResult); var dealsGen = ControllerHelper.ChooseFrom(deals); Prop.ForAll <int[]>((i) => { var material = materialsGen.Sample(0, 1).Head; var deal = dealsGen.Sample(0, 1).Head; var dealItem = new DealItem { DealId = deal.Id, MaterialId = material.Id, PricePerOne = Gen.Choose(1, 1000000).Sample(0, 1).Head, Quantity = Gen.Choose(-1000000, -1).Sample(0, 1).Head }; //execution var result = sut.PostDealItem(dealItem).Result; //assertion Assert.IsInstanceOf <BadRequestResult>(result); }).QuickCheckThrowOnFailure(); }
public void DeleteDealItem_DuplicateRandomSelectedInput_ShouldBeBadRequest() { //init var deals = dealController.Deals(1, int.MaxValue).GetObject <PagedResult <Deal> >().Queryable.ToArray(); var dealsGen = ControllerHelper.ChooseFrom(deals); Prop.ForAll <int[]>((i) => { //execution var deal = dealsGen.Sample(0, 1).Head; var dealItems = sut.GetDealItemsOfDeal(deal.Id).GetObject <IEnumerable <DealItem> >().ToArray(); if (dealItems.Any()) { var dealItem = ControllerHelper.ChooseFrom(dealItems).Sample(0, 1).Head.Id; var result = sut.DeleteDealItem(dealItem).Result; //assertion Assert.IsInstanceOf <OkObjectResult>(result); var result1 = sut.DeleteDealItem(dealItem).Result; //assertion Assert.IsInstanceOf <BadRequestObjectResult>(result1); } }).QuickCheckThrowOnFailure(); }
public void GetDealsOfDealer_RandomRange_ShouldBeIntegrated() { //init var dealersResult = dealerController.Dealers(); var givenDealers = dealersResult.GetObject <PagedResult <Dealer> >().Queryable.ToArray(); var dealersArb = ControllerHelper.ChooseFrom(givenDealers).ToArbitrary(); Prop.ForAll(dealersArb, (dealer) => { var deals = sut.GetDealsOfDealer(dealer.Id, 1, int.MaxValue).Result.GetObject <PagedResult <Deal> >().Queryable.ToList(); var sales = sut.GetSalesOfDealer(dealer.Id, 1, int.MaxValue).GetObject <PagedResult <Deal> >().Queryable.ToList(); var purchases = sut.GetPurchasesOfDealer(dealer.Id, 1, int.MaxValue).GetObject <PagedResult <Deal> >().Queryable.ToList(); var union = sales.Union(purchases).ToList(); foreach (var item in deals) { var u = union.Single(i => i.Id == item.Id); Assert.AreEqual(u.SellerId, item.SellerId); Assert.AreEqual(u.BuyerId, item.BuyerId); Assert.AreEqual(u.DealPriceId, item.DealPriceId); Assert.AreEqual(u.DealPaymentId, item.DealPaymentId); Assert.AreEqual(u.DealTime, item.DealTime); union.Remove(u); } Assert.IsEmpty(union); }).QuickCheckThrowOnFailure(); }
public void GetMaterialAmountOverTime_ShouldBeIntegrated() { var dealersResult = dealerController.Dealers().GetObject <PagedResult <Dealer> >().Queryable.ToArray(); var dealersGen = ControllerHelper.ChooseFrom(dealersResult); var materialsResult = materialController.GetMaterials(1, int.MaxValue).GetObject <PagedResult <Material> >().Queryable.ToArray(); var materialsGen = ControllerHelper.ChooseFrom(materialsResult); Prop.ForAll <int[]>((i) => { var material = materialsGen.Sample(0, 1).Head; var dealer = dealersGen.Sample(0, 1).Head; //100 to 50 days later var dateEnd = DateTime.Now.AddDays(Gen.Choose(-50, 0).Sample(0, 1).Head); var dateStart = dateEnd.AddDays(Gen.Choose(-50, 0).Sample(0, 1).Head); //130 to 20 days later var dateEndMargin = dateEnd.AddDays(Gen.Choose(0, 30).Sample(0, 1).Head); var dateStartMargin = dateStart.AddDays(Gen.Choose(-30, 0).Sample(0, 1).Head); var materialOverTime = sut.GetMaterialAmountOverTime(material.Id, dealer.Id, dateStart, dateEnd).Result.GetObject <IEnumerable <AmountOverDateModel> >(); var materialOverTimeMargined = sut.GetMaterialAmountOverTime(material.Id, dealer.Id, dateStartMargin, dateEndMargin).Result.GetObject <IEnumerable <AmountOverDateModel> >(); foreach (var item in materialOverTime) { var marginedItem = materialOverTimeMargined.Where(m => ((DateTime)m.Date).Date == ((DateTime)item.Date).Date).Single(); Assert.AreEqual(item.Amount, marginedItem.Amount); } }).QuickCheckThrowOnFailure(); }
public void PutDealItem_NegativeQuantity_ShouldBeBadRequest() { //init var materialsResult = materialController.GetMaterials(1, int.MaxValue).GetObject <PagedResult <Material> >().Queryable.ToArray(); var deals = dealController.Deals(1, int.MaxValue).GetObject <PagedResult <Deal> >().Queryable.ToArray(); var materialsGen = ControllerHelper.ChooseFrom(materialsResult); var dealsGen = ControllerHelper.ChooseFrom(deals); Prop.ForAll <int[]>((i) => { //execution var deal = dealsGen.Sample(0, 1).Head; var dealItems = sut.GetDealItemsOfDeal(deal.Id).GetObject <IEnumerable <DealItem> >().ToArray(); var dealItem = ControllerHelper.ChooseFrom(dealItems).Sample(0, 1).Head; var material = materialsGen.Sample(0, 1).Head; dealItem.MaterialId = material.Id; dealItem.DealId = deal.Id; var price = Gen.Choose(1, 100000000).Sample(0, 1).Head; dealItem.PricePerOne = price; var quantity = Gen.Choose(-10000000, -1).Sample(0, 1).Head; dealItem.Quantity = quantity; var result = sut.PutDealItem(dealItem.Id, dealItem).Result; Assert.IsInstanceOf <BadRequestResult>(result); }).QuickCheckThrowOnFailure(); }
public void GetTwoWeeklyMonthlyPurchaseAndSalePrice_ShouldBeIntegrated() { var dealersResult = dealerController.Dealers(); var givenDealers = dealersResult.GetObject <PagedResult <Dealer> >().Queryable.Select(i => i.Id).ToArray(); var dealersArb = ControllerHelper.ChooseFrom(givenDealers).ToArbitrary(); Prop.ForAll(dealersArb, (dealerId) => { var monthly = sut.GetMonthlyPurchaseAndSalePrice(dealerId).Result.GetObject <IEnumerable <DatePurchaseAndSalePriceModel> >(); var twoWeekPurchasePrice = sut.GetTwoWeeksPurchasesPrice(dealerId).Result.GetObject <IEnumerable <AmountOverDateModel> >(); var twoWeekSalesPrice = sut.GetTwoWeeksSalesPrice(dealerId).Result.GetObject <IEnumerable <AmountOverDateModel> >(); foreach (var daily in monthly) { var dayPurchase = twoWeekPurchasePrice.Where(p => ((DateTime)p.Date).Date == ((DateTime)daily.Date).Date).SingleOrDefault(); var daySale = twoWeekSalesPrice.Where(s => ((DateTime)s.Date).Date == ((DateTime)daily.Date).Date).SingleOrDefault(); if (dayPurchase != null && daySale != null) { Assert.AreEqual(daily.PurchasesAmount, dayPurchase.Amount); Assert.AreEqual(daily.SalesAmount, daySale.Amount); } } }).QuickCheckThrowOnFailure(); }
public void GetDealItem_RandomSelectInputId_ShouldBeValid() { //init var dealItems = new List <DealItem>(); var dealsResult = dealController.Deals(1, int.MaxValue).GetObject <PagedResult <Deal> >().Queryable.ToArray(); foreach (var item in dealsResult) { var dealitemofdeal = sut.GetDealItemsOfDeal(item.Id).GetObject <IEnumerable <DealItem> >().ToList(); dealItems.AddRange(dealitemofdeal); } var dealItemArb = ControllerHelper.ChooseFrom(dealItems.ToArray()).ToArbitrary(); Prop.ForAll(dealItemArb, (dealItem) => { //execution var result = sut.GetDealItem(id: dealItem.Id).Result; Assert.IsInstanceOf <OkObjectResult>(result); var resultItem = result.GetObject <DealItem>(); //assertion Assert.AreEqual(resultItem.Id, dealItem.Id); Assert.AreEqual(resultItem.PricePerOne, dealItem.PricePerOne); Assert.AreEqual(resultItem.Quantity, dealItem.Quantity); }).QuickCheckThrowOnFailure(); }
public void PutDealItem_InvalidMaterialId_ShouldbeBadRequest() { //init var materialsResult = materialController.GetMaterials(1, int.MaxValue).GetObject <PagedResult <Material> >().Queryable.Select(x => x.Id).ToList(); var deals = dealController.Deals(1, int.MaxValue).GetObject <PagedResult <Deal> >().Queryable.ToArray(); var materialIdArb = Arb.Generate <int>().Where(i => !materialsResult.Contains(i)).ToArbitrary(); Prop.ForAll(materialIdArb, (materialId) => { var deal = ControllerHelper.ChooseFrom(deals).Sample(0, 1).Head; var dealItems = sut.GetDealItemsOfDeal(deal.Id).GetObject <IEnumerable <DealItem> >().ToArray(); var dealItem = ControllerHelper.ChooseFrom(dealItems).Sample(0, 1).Head; dealItem.MaterialId = materialId; dealItem.DealId = deal.Id; var price = Gen.Choose(1, 1000000).Sample(0, 1).Head; dealItem.PricePerOne = price; var quantity = Gen.Choose(1, 1000).Sample(0, 1).Head; dealItem.Quantity = quantity; //execution var result = sut.PutDealItem(dealItem.Id, dealItem).Result; //assertion Assert.IsInstanceOf <BadRequestResult>(result); }).QuickCheckThrowOnFailure(); }
public void GetDealItemsOfDeal_SelectedRandomDeal_ShouldContainsItem() { //init var dealsResult = dealController.Deals(1, int.MaxValue).GetObject <PagedResult <Deal> >().Queryable.ToArray(); var dealsArb = ControllerHelper.ChooseFrom(dealsResult).ToArbitrary(); Prop.ForAll(dealsArb, (deal) => { //execution var result = sut.GetDealItemsOfDeal(deal.Id).GetObject <IEnumerable <DealItem> >(); //assertion Assert.IsNotEmpty(result); }).QuickCheckThrowOnFailure(); }
public void GetDealItemsOfDeal_SelectedRandomDeal_ShouldBelongToDeal() { //init var dealsResult = dealController.Deals(1, int.MaxValue).GetObject <PagedResult <Deal> >().Queryable.ToArray(); var dealsArb = ControllerHelper.ChooseFrom(dealsResult).ToArbitrary(); Prop.ForAll(dealsArb, (deal) => { //execution var result = sut.GetDealItemsOfDeal(deal.Id).GetObject <IEnumerable <DealItem> >(); //assertion foreach (var r in result) { Assert.AreEqual(r.DealId, deal.Id); } }).QuickCheckThrowOnFailure(); }
public void GetDealItemsOfMaterial_SelectedRandomMaterial_ShouldBelongToDealItem() { //init var materialsResult = materialController.GetMaterials(1, int.MaxValue).GetObject <PagedResult <Material> >().Queryable.ToArray(); var materialsArb = ControllerHelper.ChooseFrom(materialsResult).ToArbitrary(); Prop.ForAll(materialsArb, (material) => { //execution var result = sut.DealItemsOfMaterial(material.Id).GetObject <PagedResult <DealItemOfMaterialModel> >().Queryable.ToList(); //assertion foreach (var r in result) { Assert.AreEqual(r.MaterialId, material.Id); } }).QuickCheckThrowOnFailure(); }
public void GetSuggestedDealers_RandomNonNullInput_ShouldNotBeEmpty() { //init var dealersResult = sut.Dealers(); var givenDealers = dealersResult.GetObject <PagedResult <Dealer> >().Queryable.ToArray(); var dealersArb = ControllerHelper.ChooseFrom(givenDealers).Where(i => i.Name != null).ToArbitrary(); Prop.ForAll(dealersArb, (dealer) => { //execution var subname = dealer.Name.Substring(0, Gen.Choose(0, dealer.Name.Length).Sample(0, 1).Single()); var result = sut.GetSuggestedDealers(subname); var dealers = result.GetObject <IEnumerable <Dealer> >().ToList(); //assertion Assert.AreNotEqual(dealers.Count, 0); }).QuickCheckThrowOnFailure(); }
public void GetMaterialAmountOverTime_NullItems_ShouldBeEqualToIdOne() { var materialsResult = materialController.GetMaterials(1, int.MaxValue).GetObject <PagedResult <Material> >().Queryable.ToArray(); var materialsGen = ControllerHelper.ChooseFrom(materialsResult); Prop.ForAll <int[]>((i) => { var material = materialsGen.Sample(0, 1).Head; var materialOverTime = sut.GetMaterialAmountOverTime(material.Id, 1, DateTime.Now.Date, DateTime.Now.Date).Result.GetObject <IEnumerable <AmountOverDateModel> >(); var materialOverTimeNullable = sut.GetMaterialAmountOverTime(material.Id, null, null, null).Result.GetObject <IEnumerable <AmountOverDateModel> >(); foreach (var item in materialOverTime) { var nulledItem = materialOverTimeNullable.Where(m => ((DateTime)m.Date).Date == ((DateTime)item.Date).Date).Single(); Assert.AreEqual(item.Amount, nulledItem.Amount); } }).QuickCheckThrowOnFailure(); }
public void DeleteDealer_DuplicateRandomDelete_ShouldBeNotFoundResult() { Prop.ForAll <int[]>((i) => { //init var dealersResult = sut.Dealers(); var givenDealers = dealersResult.GetObject <PagedResult <Dealer> >().Queryable.ToArray(); if (givenDealers.Length != 0) { var dealer = ControllerHelper.ChooseFrom(givenDealers).Sample(0, 1).Single(); //execution var result1 = sut.DeleteDealer(dealer.Id).Result; Assert.IsInstanceOf <OkObjectResult>(result1); var result2 = sut.DeleteDealer(dealer.Id).Result; //assertion Assert.IsInstanceOf <NotFoundResult>(result2); } }).QuickCheckThrowOnFailure(); }
public void GetGeneralWeekPurchaseAndSalePrice_ShouldBeIntegrated() { var dealersResult = dealerController.Dealers(); var givenDealers = dealersResult.GetObject <PagedResult <Dealer> >().Queryable.Select(i => i.Id).ToArray(); var dealersArb = ControllerHelper.ChooseFrom(givenDealers).ToArbitrary(); Prop.ForAll(dealersArb, (dealerId) => { var generals = sut.GetGeneral(dealerId).Result.GetObject <GeneraStatisticsModel>(); decimal salesPrice = generals.todaySalesPrice; decimal purchasePrice = generals.todayPurchasePrice; var weekly = sut.GetWeeklyPurchaseAndSalePrice(dealerId).Result.GetObject <IEnumerable <DatePurchaseAndSalePriceModel> >(); var todayStats = weekly.Where(x => ((DateTime)x.Date).Date == DateTime.Now.Date).First(); decimal salesAmount = todayStats.SalesAmount; decimal purchasesAmount = todayStats.PurchasesAmount; Assert.AreEqual(salesPrice, salesAmount); Assert.AreEqual(purchasePrice, purchasesAmount); }).QuickCheckThrowOnFailure(); }
public void PutDealItem_NullDealItem_ShouldBeBadRequest() { //init var materialsResult = materialController.GetMaterials(1, int.MaxValue).GetObject <PagedResult <Material> >().Queryable.ToArray(); var deals = dealController.Deals(1, int.MaxValue).GetObject <PagedResult <Deal> >().Queryable.ToArray(); var materialsGen = ControllerHelper.ChooseFrom(materialsResult); var dealsGen = ControllerHelper.ChooseFrom(deals); Prop.ForAll <int[]>((i) => { //execution var deal = dealsGen.Sample(0, 1).Head; var dealItems = sut.GetDealItemsOfDeal(deal.Id).GetObject <IEnumerable <DealItem> >().ToArray(); if (dealItems.Any()) { var dealItem = ControllerHelper.ChooseFrom(dealItems).Sample(0, 1).Head; var result = sut.PutDealItem(dealItem.Id, null).Result; Assert.IsInstanceOf <BadRequestResult>(result); } }).QuickCheckThrowOnFailure(); }
public void GetSuggestedDealers_RandomNonNullInput_ShouldContainsSubName() { //init var dealersResult = sut.Dealers(); var givenDealers = dealersResult.GetObject <PagedResult <Dealer> >().Queryable.ToArray(); var dealersArb = ControllerHelper.ChooseFrom(givenDealers).Where(i => i.Name != null).ToArbitrary(); Prop.ForAll(dealersArb, (dealer) => { //execution var subName = dealer.Name.Substring(0, Gen.Choose(0, dealer.Name.Length).Sample(0, 1).Single()); var result = sut.GetSuggestedDealers(subName); //assertion var dealers = result.GetObject <IEnumerable <Dealer> >().ToList(); foreach (var d in dealers) { Assert.IsTrue(d.Name.ToLower().Contains(subName.ToLower()), $" Expected: {d.Name} contains: {subName}"); } }).QuickCheckThrowOnFailure(); }
public void DeleteDealItem_InvalidInput_ShouldNotFound() { //init var deals = dealController.Deals(1, int.MaxValue).GetObject <PagedResult <Deal> >().Queryable.ToArray(); var dealsGen = ControllerHelper.ChooseFrom(deals); var dealItems = new List <int>(); foreach (var item in deals) { var dealitemofdeal = sut.GetDealItemsOfDeal(item.Id).GetObject <IEnumerable <DealItem> >().ToList().Select(x => x.Id); dealItems.AddRange(dealitemofdeal); } var invalidDealItemArb = Arb.Generate <int>().Where(i => !dealItems.Contains(i)).ToArbitrary(); Prop.ForAll(invalidDealItemArb, (i) => { var result = sut.DeleteDealItem(i).Result; Assert.IsInstanceOf <NotFoundResult>(result); }).QuickCheckThrowOnFailure(); }
public void PutDealItem_InvalidId_ShouldBeBadRequest() { //init var materialsResult = materialController.GetMaterials(1, int.MaxValue).GetObject <PagedResult <Material> >().Queryable.ToArray(); var deals = dealController.Deals(1, int.MaxValue).GetObject <PagedResult <Deal> >().Queryable.ToArray(); var materialsGen = ControllerHelper.ChooseFrom(materialsResult); var dealsGen = ControllerHelper.ChooseFrom(deals); var dealItems = new List <DealItem>(); foreach (var item in deals) { var dealitemofdeal = sut.GetDealItemsOfDeal(item.Id).GetObject <IEnumerable <DealItem> >().ToList(); dealItems.AddRange(dealitemofdeal); } var dealItemGen = ControllerHelper.ChooseFrom(dealItems.ToArray()); Prop.ForAll(dealItemGen.ToArbitrary(), (dealItem) => { var deal = dealsGen.Sample(0, 1).Head; var material = materialsGen.Sample(0, 1).Head; dealItem.MaterialId = material.Id; dealItem.DealId = deal.Id; var price = Gen.Choose(1, 1000000).Sample(0, 1).Head; dealItem.PricePerOne = price; var quantity = Gen.Choose(1, 1000).Sample(0, 1).Head; dealItem.Quantity = quantity; var newId = Arb.Generate <int>().Where(it => it != dealItem.Id).Sample(0, 1).Head; //execution var result = sut.PutDealItem(newId, dealItem).Result; //assertion Assert.IsInstanceOf <BadRequestResult>(result); }).QuickCheckThrowOnFailure(); }