150 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			150 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using collAnon.Pub.Shared;
 | |
| using drinkMe.Server.Controllers;
 | |
| using drinkMe.Server.Services.Interfaces;
 | |
| using drinkMe.Shared;
 | |
| using Microsoft.AspNetCore.Http;
 | |
| using Microsoft.AspNetCore.Mvc;
 | |
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Threading.Tasks;
 | |
| using Xunit;
 | |
| 
 | |
| namespace drinkMe.Server.Tests
 | |
| {
 | |
| 	public class DrinksControllerTest
 | |
| 	{
 | |
| 		readonly IDataService DataService;
 | |
| 		readonly IPaymentService PaymentService;
 | |
| 
 | |
| 		public DrinksControllerTest(IDataService dataService, IPaymentService paymentService)
 | |
| 		{
 | |
| 			DataService = dataService;
 | |
| 			PaymentService = paymentService;
 | |
| 		}
 | |
| 
 | |
| 		[Theory]
 | |
| 		[InlineData("D1AMOND_HANDS")]
 | |
| 		public async Task IsValidDiscountCode_Test_DiscountFound(string code)
 | |
| 		{
 | |
| 			var controller = new DrinksController(DataService, PaymentService);
 | |
| 			Assert.NotNull(controller);
 | |
| 			var result = await controller.IsValidDiscountCode(code);
 | |
| 			Assert.NotNull(result);
 | |
| 			Assert.IsType<OkObjectResult>(result);
 | |
| 			var okResult = result as OkObjectResult;
 | |
| 			Assert.NotNull(okResult.Value);
 | |
| 			Assert.Equal(okResult.StatusCode, StatusCodes.Status200OK);
 | |
| 			Assert.IsType<DiscountCodeViewModel>(okResult.Value);
 | |
| 			var discountCodeData = okResult.Value as DiscountCodeViewModel;
 | |
| 			Assert.Equal(discountCodeData.Code, code);
 | |
| 		}
 | |
| 
 | |
| 		[Theory]
 | |
| 		[InlineData("NOT_MY_D4Y")]
 | |
| 		public async Task IsValidDiscountCode_Test_DiscountNotFound(string code)
 | |
| 		{
 | |
| 			var controller = new DrinksController(DataService, PaymentService);
 | |
| 			Assert.NotNull(controller);
 | |
| 			var result = await controller.IsValidDiscountCode(code);
 | |
| 			Assert.NotNull(result);
 | |
| 			Assert.IsType<ObjectResult>(result);
 | |
| 			var objectResult = result as ObjectResult;
 | |
| 			Assert.NotNull(objectResult.Value);
 | |
| 			Assert.Equal(objectResult.StatusCode, StatusCodes.Status404NotFound);
 | |
| 			Assert.IsType<WebResult>(objectResult.Value);
 | |
| 			var webResult = objectResult.Value as WebResult;
 | |
| 			Assert.False(webResult.IsValid);
 | |
| 			Assert.Equal(webResult.StatusCode, StatusCodes.Status404NotFound);
 | |
| 		}
 | |
| 
 | |
| 		[Fact]
 | |
| 		public async Task GetDrinks_Test_NotEmpty()
 | |
| 		{
 | |
| 			var controller = new DrinksController(DataService, PaymentService);
 | |
| 			Assert.NotNull(controller);
 | |
| 			var result = await controller.GetDrinks();
 | |
| 			Assert.NotNull(result);
 | |
| 			Assert.IsType<OkObjectResult>(result);
 | |
| 			var okResult = result as OkObjectResult;
 | |
| 			Assert.NotNull(okResult.Value);
 | |
| 			Assert.Equal(okResult.StatusCode, StatusCodes.Status200OK);
 | |
| 			Assert.IsType<DrinkViewModel[]>(okResult.Value);
 | |
| 			var drinks = okResult.Value as DrinkViewModel[];
 | |
| 			Assert.NotEmpty(drinks);
 | |
| 		}
 | |
| 
 | |
| 		[Fact]
 | |
| 		public async Task Pay_Test_WithSuccess()
 | |
| 		{
 | |
| 			var purchaseCart = new PurchaseCart
 | |
| 			{
 | |
| 				IsPayedWithCash = true,
 | |
| 				PurchasingItems = new List<CartItem>
 | |
| 				{
 | |
| 					new CartItem
 | |
| 					{
 | |
| 						 Id = 1,
 | |
| 						Quantity = 1
 | |
| 					}
 | |
| 				}
 | |
| 			};
 | |
| 			var controller = new DrinksController(DataService, PaymentService);
 | |
| 			Assert.NotNull(controller);
 | |
| 			var result = await controller.Pay(purchaseCart);
 | |
| 			Assert.NotNull(result);
 | |
| 			Assert.IsType<OkResult>(result);
 | |
| 			var okResult = result as OkResult;
 | |
| 			Assert.Equal(okResult.StatusCode, StatusCodes.Status200OK);
 | |
| 		}
 | |
| 
 | |
| 		[Fact]
 | |
| 		public async Task Pay_Test_WithSuccess2()
 | |
| 		{
 | |
| 			var purchaseCart = new PurchaseCart
 | |
| 			{
 | |
| 				IsPayedWithCash = false,
 | |
| 				CreditCardNumber = "4000123412341234",
 | |
| 				CreditCardExpirationYear = "22",
 | |
| 				CreditCardCVVCode = "333",
 | |
| 				CreditCardExpirationMonth = "01",
 | |
| 				PurchasingItems = new List<CartItem>
 | |
| 				{
 | |
| 					new CartItem
 | |
| 					{
 | |
| 						 Id = 1,
 | |
| 						Quantity = 1
 | |
| 					}
 | |
| 				}
 | |
| 			};
 | |
| 			var controller = new DrinksController(DataService, PaymentService);
 | |
| 			Assert.NotNull(controller);
 | |
| 			var result = await controller.Pay(purchaseCart);
 | |
| 			Assert.NotNull(result);
 | |
| 			Assert.IsType<OkResult>(result);
 | |
| 			var okResult = result as OkResult;
 | |
| 			Assert.Equal(okResult.StatusCode, StatusCodes.Status200OK);
 | |
| 		}
 | |
| 
 | |
| 		[Fact]
 | |
| 		public async Task Pay_Test_WithoutSuccess()
 | |
| 		{
 | |
| 			var purchaseCart = new PurchaseCart
 | |
| 			{
 | |
| 				IsPayedWithCash = false
 | |
| 			};
 | |
| 			var controller = new DrinksController(DataService, PaymentService);
 | |
| 			Assert.NotNull(controller);
 | |
| 			var result = await controller.Pay(purchaseCart);
 | |
| 			Assert.NotNull(result);
 | |
| 			Assert.IsType<BadRequestObjectResult>(result);
 | |
| 			var badResult = result as BadRequestObjectResult;
 | |
| 			Assert.NotNull(badResult.Value);
 | |
| 			Assert.IsType<WebResult>(badResult.Value);
 | |
| 			Assert.Equal(badResult.StatusCode, StatusCodes.Status400BadRequest);
 | |
| 			var webResult = badResult.Value as WebResult;
 | |
| 			Assert.False(webResult.IsValid);
 | |
| 			Assert.Equal(webResult.StatusCode, StatusCodes.Status400BadRequest);
 | |
| 		}
 | |
| 	}
 | |
| }
 |