public async Task Should_Return_Success_When_Send_Correct_Request_For_PaymentByCreditCard() { var parameter = new ProductSelection(); parameter.Slot = 3; parameter.SugarLevel = 0; parameter.SelectedPieces = 1; var responseProductSelection = await _client.PostAsJsonAsync("Automat/ProductSelection", parameter); var apiProductSelectionResult = await responseProductSelection.Content.ReadAsAsync <ProductSelectionResult>(); PaymentByCreditCardEntity paymentByCreditCardEntity = new PaymentByCreditCardEntity(); paymentByCreditCardEntity.TransactionId = apiProductSelectionResult.TransactionId; paymentByCreditCardEntity.Pan = "4355084355084358"; paymentByCreditCardEntity.Month = 12; paymentByCreditCardEntity.Year = 21; paymentByCreditCardEntity.Cvc = "000"; var response = await _client.PostAsJsonAsync("Automat/PaymentByCreditCard", paymentByCreditCardEntity); var apiResult = await response.Content.ReadAsAsync <TransactionResult>(); Assert.True(0 == apiResult.Code); }
public async Task Should_Return_Error_When_NonCorrect_Pan_Request_For_PaymentByCreditCard() { var parameter = new ProductSelection(); parameter.Slot = 3; parameter.SugarLevel = 0; parameter.SelectedPieces = 1; var responseProductSelection = await _client.PostAsJsonAsync("Automat/ProductSelection", parameter); var apiProductSelectionResult = await responseProductSelection.Content.ReadAsAsync <ProductSelectionResult>(); PaymentByCreditCardEntity paymentByCreditCardEntity = new PaymentByCreditCardEntity(); paymentByCreditCardEntity.TransactionId = apiProductSelectionResult.TransactionId; paymentByCreditCardEntity.Pan = ""; paymentByCreditCardEntity.Month = 12; paymentByCreditCardEntity.Year = 21; paymentByCreditCardEntity.Cvc = "000"; var response = await _client.PostAsJsonAsync("Automat/PaymentByCreditCard", paymentByCreditCardEntity); var apiResult = await response.Content.ReadAsAsync <TransactionResult>(); Assert.True(1 == apiResult.Code); Assert.Equal($"CardInfo: {apiResult.TransactionId} Message: Kredi kartı bilgileri bulunamadı!", apiResult.Message); }
public async Task Should_Return_Error_When_Null_Request() { var parameter = new ProductSelection(); var response = await _client.PostAsJsonAsync("Automat/ProductSelection", parameter); var apiResult = await response.Content.ReadAsAsync <ProductSelectionResult>(); Assert.True(1 == apiResult.Code); Assert.Equal("null parameter", apiResult.Message); }
public async Task Should_Return_Error_When_SelectedPieces_Bigger_Than_NumberOfProducts() { var parameter = new ProductSelection(); parameter.Slot = 99; parameter.SugarLevel = 0; parameter.SelectedPieces = 100; var response = await _client.PostAsJsonAsync("Automat/ProductSelection", parameter); var apiResult = await response.Content.ReadAsAsync <ProductSelectionResult>(); Assert.True(1 == apiResult.Code); }
public async Task Should_Return_Success_When_Correct_Request() { var parameter = new ProductSelection(); parameter.Slot = 2; parameter.SugarLevel = 0; parameter.SelectedPieces = 1; var response = await _client.PostAsJsonAsync("Automat/ProductSelection", parameter); var apiResult = await response.Content.ReadAsAsync <ProductSelectionResult>(); Assert.True(0 == apiResult.Code); }
public async Task Should_Return_Error_When_Send_Non_Product() { var parameter = new ProductSelection(); parameter.Slot = 999; parameter.SugarLevel = 0; parameter.SelectedPieces = 100; var response = await _client.PostAsJsonAsync("Automat/ProductSelection", parameter); var apiResult = await response.Content.ReadAsAsync <ProductSelectionResult>(); Assert.True(1 == apiResult.Code); Assert.Equal($"Slot: {parameter.Slot} Message: Slot bulunamadı!", apiResult.Message); }
public async Task Should_Return_Error_When_SelectedPieces_Bigger_Than_NumberOfProducts() { //Arrange var automatFacade = new AutomatFacade(new FakeProductRepository(), new FakeCampaingRepository(), new FakeTransactionRepository()); //Act ProductSelection productSelection = new ProductSelection(); productSelection.Slot = 99; productSelection.SugarLevel = 0; productSelection.SelectedPieces = 100; var result = await automatFacade.Selection(productSelection); //Assert Assert.Equal(1, result.Code); }
public async Task Should_Return_Success_When_There_Is_A_Campaing() { //Arrange var automatFacade = new AutomatFacade(new FakeProductRepository(), new FakeCampaingRepository(), new FakeTransactionRepository()); //Act ProductSelection productSelection = new ProductSelection(); productSelection.Slot = 1; productSelection.SugarLevel = 0; productSelection.SelectedPieces = 1; var result = await automatFacade.Selection(productSelection); //Assert Assert.Equal(0, result.Code); Assert.Equal((decimal)4.950, result.TotalAmount); }
public async Task Should_Return_Error_When_Send_Non_Product() { //Arrange var automatFacade = new AutomatFacade(new FakeProductRepository(), new FakeCampaingRepository(), new FakeTransactionRepository()); var moq = new Mock <FakeProductRepository>(); moq.Setup(r => r.GetByIdAsync()).Returns(Task.FromResult <ProductEntity>(null)); //Act ProductSelection productSelection = new ProductSelection(); productSelection.Slot = 99; productSelection.SugarLevel = 0; productSelection.SelectedPieces = 100; var result = await automatFacade.Selection(productSelection); //Assert Assert.Equal(1, result.Code); }
public async Task Should_Return_Success_When_Send_Correct_Request_For_PaymentByCash() { var parameter = new ProductSelection(); parameter.Slot = 2; parameter.SugarLevel = 0; parameter.SelectedPieces = 1; var responseProductSelection = await _client.PostAsJsonAsync("Automat/ProductSelection", parameter); var apiProductSelectionResult = await responseProductSelection.Content.ReadAsAsync <ProductSelectionResult>(); PaymentByCashEntity paymentByCashEntity = new PaymentByCashEntity(); paymentByCashEntity.TransactionId = apiProductSelectionResult.TransactionId; paymentByCashEntity.CashAmount = apiProductSelectionResult.TotalAmount; var response = await _client.PostAsJsonAsync("Automat/PaymentByCash", paymentByCashEntity); var apiResult = await response.Content.ReadAsAsync <TransactionResult>(); Assert.True(0 == apiResult.Code); }
public async Task Should_Return_Error_When_Send_Zero_CashAmount_Request_For_PaymentByCash() { var parameter = new ProductSelection(); parameter.Slot = 2; parameter.SugarLevel = 0; parameter.SelectedPieces = 1; var responseProductSelection = await _client.PostAsJsonAsync("Automat/ProductSelection", parameter); var apiProductSelectionResult = await responseProductSelection.Content.ReadAsAsync <ProductSelectionResult>(); PaymentByCashEntity paymentByCashEntity = new PaymentByCashEntity(); paymentByCashEntity.TransactionId = apiProductSelectionResult.TransactionId; paymentByCashEntity.CashAmount = 0; var response = await _client.PostAsJsonAsync("Automat/PaymentByCash", paymentByCashEntity); var apiResult = await response.Content.ReadAsAsync <TransactionResult>(); Assert.True(1 == apiResult.Code); Assert.Equal("Lütfen para giriniz!", apiResult.Message); }
public async Task <ProductSelectionResult> Selection(ProductSelection productSelection) { ProductSelectionResult productSelectionResult = new ProductSelectionResult(); try { if (productSelection == null) { productSelectionResult.Code = 1; productSelectionResult.Message = "null parameter"; return(productSelectionResult); } var product = await _productRepository.GetByIdAsync(productSelection.Slot); if (product == null) { productSelectionResult.Slot = productSelection.Slot; productSelectionResult.Code = 1; productSelectionResult.Message = $"Slot: {productSelection.Slot} Message: Slot bulunamadı!"; return(productSelectionResult); } if (!product.IsAvailable) { productSelectionResult.Slot = productSelection.Slot; productSelectionResult.Code = 1; productSelectionResult.Message = "Ürün Bitti!"; return(productSelectionResult); } if (product.NumberOfProducts < productSelection.SelectedPieces) { productSelectionResult.Slot = productSelection.Slot; productSelectionResult.Code = 1; productSelectionResult.Message = $"NumberOfProducts: {product.NumberOfProducts} SelectedPieces: {productSelection.SelectedPieces}"; return(productSelectionResult); } var totalAmount = productSelection.SelectedPieces * product.PriceOfProduct; var campaings = await _campaingRepository.GetAllAsync(); if (campaings != null && campaings.Count > 0) { var campaing = campaings.Where(a => a.Slot == productSelection.Slot).FirstOrDefault(); if (campaing != null) { totalAmount += totalAmount * campaing.DiscountRatio; } } TransactionEntity transactionEntity = new TransactionEntity(); transactionEntity.Slot = productSelection.Slot; transactionEntity.SelectedPieces = productSelection.SelectedPieces; transactionEntity.TransactionAmount = totalAmount; transactionEntity = await _transactionRepository.AddAsync(transactionEntity); productSelectionResult.Slot = productSelection.Slot; productSelectionResult.TransactionId = transactionEntity.Id; productSelectionResult.TotalAmount = totalAmount; productSelectionResult.Code = 0; productSelectionResult.Message = "Başarılı işlem"; } catch (Exception ex) { //logging productSelectionResult.Slot = productSelection.Slot; productSelectionResult.Code = 1; productSelectionResult.Message = "Hata oluştu!"; } return(productSelectionResult); }
public async Task <ActionResult <IEnumerable <ProductSelection> > > ProductSelection([FromBody] ProductSelection productSelection) { var result = await _automatFacade.Selection(productSelection); return(Ok(result)); }