
5 changed files with 210 additions and 0 deletions
@ -0,0 +1,149 @@
|
||||
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); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,20 @@
|
||||
using drinkMe.Server.Services; |
||||
using drinkMe.Server.Services.Interfaces; |
||||
using Microsoft.Extensions.DependencyInjection; |
||||
using System; |
||||
using System.Collections.Generic; |
||||
using System.Linq; |
||||
using System.Text; |
||||
using System.Threading.Tasks; |
||||
|
||||
namespace drinkMe.Server.Tests |
||||
{ |
||||
public class Startup |
||||
{ |
||||
public void ConfigureServices(IServiceCollection services) |
||||
{ |
||||
services.AddScoped<IDataService, DataService>() |
||||
.AddScoped<IPaymentService, PaymentService>(); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,28 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk"> |
||||
|
||||
<PropertyGroup> |
||||
<TargetFramework>net5.0</TargetFramework> |
||||
|
||||
<IsPackable>false</IsPackable> |
||||
</PropertyGroup> |
||||
|
||||
<ItemGroup> |
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.4" /> |
||||
<PackageReference Include="xunit" Version="2.4.1" /> |
||||
<PackageReference Include="Xunit.DependencyInjection" Version="7.2.0" /> |
||||
<PackageReference Include="xunit.extensibility.core" Version="2.4.1" /> |
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3"> |
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> |
||||
<PrivateAssets>all</PrivateAssets> |
||||
</PackageReference> |
||||
<PackageReference Include="coverlet.collector" Version="3.0.3"> |
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> |
||||
<PrivateAssets>all</PrivateAssets> |
||||
</PackageReference> |
||||
</ItemGroup> |
||||
|
||||
<ItemGroup> |
||||
<ProjectReference Include="..\drinkMe\Server\drinkMe.Server.csproj" /> |
||||
</ItemGroup> |
||||
|
||||
</Project> |
Loading…
Reference in new issue