Skip to content

Commit

Permalink
Migrated Basket and order unit test from xunit to MsTest (dotnet#421)
Browse files Browse the repository at this point in the history
Co-authored-by: Srushti Pasari94 <pasarisrushti@gmail.con>
  • Loading branch information
SrushtiPasari94 and Srushti Pasari94 authored Jun 11, 2024
1 parent 1b23b09 commit 1d76faf
Show file tree
Hide file tree
Showing 13 changed files with 172 additions and 152 deletions.
2 changes: 2 additions & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@
<PackageVersion Include="Microsoft.AspNetCore.TestHost" Version="$(AspnetVersion)" />
<PackageVersion Include="Microsoft.Extensions.Identity.Stores" Version="$(AspnetVersion)" />
<PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="$(MicrosoftExtensionsVersion)" />
<PackageVersion Include="MSTest.TestAdapter" Version="3.4.3" />
<PackageVersion Include="MSTest.TestFramework" Version="3.4.3" />
<!-- Version together with EF -->
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.4" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="$(EfVersion)" />
Expand Down
7 changes: 2 additions & 5 deletions tests/Basket.UnitTests/Basket.UnitTests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,13 @@
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" />
<PackageReference Include="Microsoft.Extensions.Identity.Stores" />
<PackageReference Include="Microsoft.NET.Test.Sdk" />
<PackageReference Include="MSTest.TestAdapter" />
<PackageReference Include="MSTest.TestFramework" />
<PackageReference Include="NSubstitute" />
<PackageReference Include="NSubstitute.Analyzers.CSharp">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="xunit.runner.visualstudio">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageReference Include="xunit" />
</ItemGroup>

<ItemGroup>
Expand Down
21 changes: 11 additions & 10 deletions tests/Basket.UnitTests/BasketServiceTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System.Security.Claims;
using System.Security.Claims;
using eShop.Basket.API.Repositories;
using eShop.Basket.API.Grpc;
using eShop.Basket.API.Model;
Expand All @@ -8,9 +8,10 @@

namespace eShop.Basket.UnitTests;

[TestClass]
public class BasketServiceTests
{
[Fact]
[TestMethod]
public async Task GetBasketReturnsEmptyForNoUser()
{
var mockRepository = Substitute.For<IBasketRepository>();
Expand All @@ -20,11 +21,11 @@ public async Task GetBasketReturnsEmptyForNoUser()

var response = await service.GetBasket(new GetBasketRequest(), serverCallContext);

Assert.IsType<CustomerBasketResponse>(response);
Assert.Empty(response.Items);
Assert.IsInstanceOfType<CustomerBasketResponse>(response);
Assert.AreEqual(response.Items.Count(), 0);
}

[Fact]
[TestMethod]
public async Task GetBasketReturnsItemsForValidUserId()
{
var mockRepository = Substitute.For<IBasketRepository>();
Expand All @@ -38,11 +39,11 @@ public async Task GetBasketReturnsItemsForValidUserId()

var response = await service.GetBasket(new GetBasketRequest(), serverCallContext);

Assert.IsType<CustomerBasketResponse>(response);
Assert.Single(response.Items);
Assert.IsInstanceOfType<CustomerBasketResponse>(response);
Assert.AreEqual(response.Items.Count(), 1);
}

[Fact]
[TestMethod]
public async Task GetBasketReturnsEmptyForInvalidUserId()
{
var mockRepository = Substitute.For<IBasketRepository>();
Expand All @@ -55,7 +56,7 @@ public async Task GetBasketReturnsEmptyForInvalidUserId()

var response = await service.GetBasket(new GetBasketRequest(), serverCallContext);

Assert.IsType<CustomerBasketResponse>(response);
Assert.Empty(response.Items);
Assert.IsInstanceOfType<CustomerBasketResponse>(response);
Assert.AreEqual(response.Items.Count(), 0);
}
}
2 changes: 1 addition & 1 deletion tests/Basket.UnitTests/GlobalUsings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
global using Microsoft.AspNetCore.Http;
global using Microsoft.AspNetCore.Mvc;
global using NSubstitute;
global using Xunit;
global using Microsoft.VisualStudio.TestTools.UnitTesting;
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
namespace eShop.Ordering.UnitTests.Application;

[TestClass]
public class IdentifiedCommandHandlerTest
{
private readonly IRequestManager _requestManager;
Expand All @@ -13,7 +14,7 @@ public IdentifiedCommandHandlerTest()
_loggerMock = Substitute.For<ILogger<IdentifiedCommandHandler<CreateOrderCommand, bool>>>();
}

[Fact]
[TestMethod]
public async Task Handler_sends_command_when_order_no_exists()
{
// Arrange
Expand All @@ -31,11 +32,11 @@ public async Task Handler_sends_command_when_order_no_exists()
var result = await handler.Handle(fakeOrderCmd, CancellationToken.None);

// Assert
Assert.True(result);
Assert.IsTrue(result);
await _mediator.Received().Send(Arg.Any<IRequest<bool>>(), default);
}

[Fact]
[TestMethod]
public async Task Handler_sends_no_command_when_order_already_exists()
{
// Arrange
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

namespace eShop.Ordering.UnitTests.Application;

[TestClass]
public class NewOrderRequestHandlerTest
{
private readonly IOrderRepository _orderRepositoryMock;
Expand All @@ -19,7 +20,7 @@ public NewOrderRequestHandlerTest()
_mediator = Substitute.For<IMediator>();
}

[Fact]
[TestMethod]
public async Task Handle_return_false_if_order_is_not_persisted()
{
var buyerId = "1234";
Expand All @@ -42,14 +43,14 @@ public async Task Handle_return_false_if_order_is_not_persisted()
var result = await handler.Handle(fakeOrderCmd, cltToken);

//Assert
Assert.False(result);
Assert.IsFalse(result);
}

[Fact]
[TestMethod]
public void Handle_throws_exception_when_no_buyerId()
{
//Assert
Assert.Throws<ArgumentNullException>(() => new Buyer(string.Empty, string.Empty));
Assert.ThrowsException<ArgumentNullException>(() => new Buyer(string.Empty, string.Empty));
}

private Buyer FakeBuyer()
Expand Down
37 changes: 19 additions & 18 deletions tests/Ordering.UnitTests/Application/OrdersWebApiTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using Order = eShop.Ordering.API.Application.Queries.Order;
using NSubstitute.ExceptionExtensions;

[TestClass]
public class OrdersWebApiTest
{
private readonly IMediator _mediatorMock;
Expand All @@ -20,7 +21,7 @@ public OrdersWebApiTest()
_loggerMock = Substitute.For<ILogger<OrderServices>>();
}

[Fact]
[TestMethod]
public async Task Cancel_order_with_requestId_success()
{
// Arrange
Expand All @@ -32,10 +33,10 @@ public async Task Cancel_order_with_requestId_success()
var result = await OrdersApi.CancelOrderAsync(Guid.NewGuid(), new CancelOrderCommand(1), orderServices);

// Assert
Assert.IsType<Ok>(result.Result);
Assert.IsInstanceOfType<Ok>(result.Result);
}

[Fact]
[TestMethod]
public async Task Cancel_order_bad_request()
{
// Arrange
Expand All @@ -47,10 +48,10 @@ public async Task Cancel_order_bad_request()
var result = await OrdersApi.CancelOrderAsync(Guid.Empty, new CancelOrderCommand(1), orderServices);

// Assert
Assert.IsType<BadRequest<string>>(result.Result);
Assert.IsInstanceOfType<BadRequest<string>>(result.Result);
}

[Fact]
[TestMethod]
public async Task Ship_order_with_requestId_success()
{
// Arrange
Expand All @@ -62,11 +63,11 @@ public async Task Ship_order_with_requestId_success()
var result = await OrdersApi.ShipOrderAsync(Guid.NewGuid(), new ShipOrderCommand(1), orderServices);

// Assert
Assert.IsType<Ok>(result.Result);
Assert.IsInstanceOfType<Ok>(result.Result);

}

[Fact]
[TestMethod]
public async Task Ship_order_bad_request()
{
// Arrange
Expand All @@ -78,10 +79,10 @@ public async Task Ship_order_bad_request()
var result = await OrdersApi.ShipOrderAsync(Guid.Empty, new ShipOrderCommand(1), orderServices);

// Assert
Assert.IsType<BadRequest<string>>(result.Result);
Assert.IsInstanceOfType<BadRequest<string>>(result.Result);
}

[Fact]
[TestMethod]
public async Task Get_orders_success()
{
// Arrange
Expand All @@ -98,10 +99,10 @@ public async Task Get_orders_success()
var result = await OrdersApi.GetOrdersByUserAsync(orderServices);

// Assert
Assert.IsType<Ok<IEnumerable<OrderSummary>>>(result);
Assert.IsInstanceOfType<Ok<IEnumerable<OrderSummary>>>(result);
}

[Fact]
[TestMethod]
public async Task Get_order_success()
{
// Arrange
Expand All @@ -115,11 +116,11 @@ public async Task Get_order_success()
var result = await OrdersApi.GetOrderAsync(fakeOrderId, orderServices);

// Assert
var okResult = Assert.IsType<Ok<Order>>(result.Result);
Assert.Same(fakeDynamicResult, okResult.Value);
Assert.IsInstanceOfType<Ok<Order>>(result.Result);
Assert.AreSame(fakeDynamicResult, ((Ok<Order>)result.Result).Value);
}

[Fact]
[TestMethod]
public async Task Get_order_fails()
{
// Arrange
Expand All @@ -134,10 +135,10 @@ public async Task Get_order_fails()
var result = await OrdersApi.GetOrderAsync(fakeOrderId, orderServices);

// Assert
Assert.IsType<NotFound>(result.Result);
Assert.IsInstanceOfType<NotFound>(result.Result);
}

[Fact]
[TestMethod]
public async Task Get_cardTypes_success()
{
// Arrange
Expand All @@ -149,7 +150,7 @@ public async Task Get_cardTypes_success()
var result = await OrdersApi.GetCardTypesAsync(_orderQueriesMock);

// Assert
Assert.IsType<Ok<IEnumerable<CardType>>>(result);
Assert.Same(fakeDynamicResult, result.Value);
Assert.IsInstanceOfType<Ok<IEnumerable<CardType>>>(result);
Assert.AreSame(fakeDynamicResult, result.Value);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@

namespace eShop.Ordering.UnitTests.Application;

[TestClass]
public class SetStockRejectedOrderStatusCommandTest
{
[Fact]
[TestMethod]
public void Set_Stock_Rejected_OrderStatusCommand_Check_Serialization()
{
// Arrange
Expand All @@ -15,15 +16,15 @@ public void Set_Stock_Rejected_OrderStatusCommand_Check_Serialization()
var deserializedCommand = JsonSerializer.Deserialize<SetStockRejectedOrderStatusCommand>(json);

//Assert
Assert.Equal(command.OrderNumber, deserializedCommand.OrderNumber);
Assert.AreEqual(command.OrderNumber, deserializedCommand.OrderNumber);

//Assert for List<int>
Assert.NotNull(deserializedCommand.OrderStockItems);
Assert.Equal(command.OrderStockItems.Count, deserializedCommand.OrderStockItems.Count);
Assert.IsNotNull(deserializedCommand.OrderStockItems);
Assert.AreEqual(command.OrderStockItems.Count, deserializedCommand.OrderStockItems.Count);

for (int i = 0; i < command.OrderStockItems.Count; i++)
{
Assert.Equal(command.OrderStockItems[i], deserializedCommand.OrderStockItems[i]);
Assert.AreEqual(command.OrderStockItems[i], deserializedCommand.OrderStockItems[i]);
}
}
}
Expand Down
Loading

0 comments on commit 1d76faf

Please sign in to comment.