From 1d76faf4dead37cc96347cd6b6eb8fc4596b6620 Mon Sep 17 00:00:00 2001 From: Srushti <136682990+SrushtiPasari94@users.noreply.github.com> Date: Tue, 11 Jun 2024 22:24:39 +0530 Subject: [PATCH] Migrated Basket and order unit test from xunit to MsTest (#421) Co-authored-by: Srushti Pasari94 --- Directory.Packages.props | 2 + .../Basket.UnitTests/Basket.UnitTests.csproj | 7 +- tests/Basket.UnitTests/BasketServiceTests.cs | 21 +-- tests/Basket.UnitTests/GlobalUsings.cs | 2 +- .../IdentifiedCommandHandlerTest.cs | 7 +- .../Application/NewOrderCommandHandlerTest.cs | 9 +- .../Application/OrdersWebApiTest.cs | 37 ++--- .../SetStockRejectedOrderStatusCommandTest.cs | 11 +- .../Domain/BuyerAggregateTest.cs | 29 ++-- .../Domain/OrderAggregateTest.cs | 39 ++--- .../Domain/SeedWork/ValueObjectTests.cs | 151 ++++++++++-------- tests/Ordering.UnitTests/GlobalUsings.cs | 2 +- .../Ordering.UnitTests.csproj | 7 +- 13 files changed, 172 insertions(+), 152 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 754fcb94..065e97c2 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -40,6 +40,8 @@ + + diff --git a/tests/Basket.UnitTests/Basket.UnitTests.csproj b/tests/Basket.UnitTests/Basket.UnitTests.csproj index 601db9c4..de893641 100644 --- a/tests/Basket.UnitTests/Basket.UnitTests.csproj +++ b/tests/Basket.UnitTests/Basket.UnitTests.csproj @@ -12,16 +12,13 @@ + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - all - runtime; build; native; contentfiles; analyzers - - diff --git a/tests/Basket.UnitTests/BasketServiceTests.cs b/tests/Basket.UnitTests/BasketServiceTests.cs index 2bb80b91..4e8abb4d 100644 --- a/tests/Basket.UnitTests/BasketServiceTests.cs +++ b/tests/Basket.UnitTests/BasketServiceTests.cs @@ -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; @@ -8,9 +8,10 @@ namespace eShop.Basket.UnitTests; +[TestClass] public class BasketServiceTests { - [Fact] + [TestMethod] public async Task GetBasketReturnsEmptyForNoUser() { var mockRepository = Substitute.For(); @@ -20,11 +21,11 @@ public async Task GetBasketReturnsEmptyForNoUser() var response = await service.GetBasket(new GetBasketRequest(), serverCallContext); - Assert.IsType(response); - Assert.Empty(response.Items); + Assert.IsInstanceOfType(response); + Assert.AreEqual(response.Items.Count(), 0); } - [Fact] + [TestMethod] public async Task GetBasketReturnsItemsForValidUserId() { var mockRepository = Substitute.For(); @@ -38,11 +39,11 @@ public async Task GetBasketReturnsItemsForValidUserId() var response = await service.GetBasket(new GetBasketRequest(), serverCallContext); - Assert.IsType(response); - Assert.Single(response.Items); + Assert.IsInstanceOfType(response); + Assert.AreEqual(response.Items.Count(), 1); } - [Fact] + [TestMethod] public async Task GetBasketReturnsEmptyForInvalidUserId() { var mockRepository = Substitute.For(); @@ -55,7 +56,7 @@ public async Task GetBasketReturnsEmptyForInvalidUserId() var response = await service.GetBasket(new GetBasketRequest(), serverCallContext); - Assert.IsType(response); - Assert.Empty(response.Items); + Assert.IsInstanceOfType(response); + Assert.AreEqual(response.Items.Count(), 0); } } diff --git a/tests/Basket.UnitTests/GlobalUsings.cs b/tests/Basket.UnitTests/GlobalUsings.cs index 0eb541d0..66d5613a 100644 --- a/tests/Basket.UnitTests/GlobalUsings.cs +++ b/tests/Basket.UnitTests/GlobalUsings.cs @@ -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; diff --git a/tests/Ordering.UnitTests/Application/IdentifiedCommandHandlerTest.cs b/tests/Ordering.UnitTests/Application/IdentifiedCommandHandlerTest.cs index 503c188b..60f41966 100644 --- a/tests/Ordering.UnitTests/Application/IdentifiedCommandHandlerTest.cs +++ b/tests/Ordering.UnitTests/Application/IdentifiedCommandHandlerTest.cs @@ -1,5 +1,6 @@ namespace eShop.Ordering.UnitTests.Application; +[TestClass] public class IdentifiedCommandHandlerTest { private readonly IRequestManager _requestManager; @@ -13,7 +14,7 @@ public IdentifiedCommandHandlerTest() _loggerMock = Substitute.For>>(); } - [Fact] + [TestMethod] public async Task Handler_sends_command_when_order_no_exists() { // Arrange @@ -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>(), default); } - [Fact] + [TestMethod] public async Task Handler_sends_no_command_when_order_already_exists() { // Arrange diff --git a/tests/Ordering.UnitTests/Application/NewOrderCommandHandlerTest.cs b/tests/Ordering.UnitTests/Application/NewOrderCommandHandlerTest.cs index 1421d9ab..f0e9f372 100644 --- a/tests/Ordering.UnitTests/Application/NewOrderCommandHandlerTest.cs +++ b/tests/Ordering.UnitTests/Application/NewOrderCommandHandlerTest.cs @@ -3,6 +3,7 @@ namespace eShop.Ordering.UnitTests.Application; +[TestClass] public class NewOrderRequestHandlerTest { private readonly IOrderRepository _orderRepositoryMock; @@ -19,7 +20,7 @@ public NewOrderRequestHandlerTest() _mediator = Substitute.For(); } - [Fact] + [TestMethod] public async Task Handle_return_false_if_order_is_not_persisted() { var buyerId = "1234"; @@ -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(() => new Buyer(string.Empty, string.Empty)); + Assert.ThrowsException(() => new Buyer(string.Empty, string.Empty)); } private Buyer FakeBuyer() diff --git a/tests/Ordering.UnitTests/Application/OrdersWebApiTest.cs b/tests/Ordering.UnitTests/Application/OrdersWebApiTest.cs index acd69d4b..c821d186 100644 --- a/tests/Ordering.UnitTests/Application/OrdersWebApiTest.cs +++ b/tests/Ordering.UnitTests/Application/OrdersWebApiTest.cs @@ -5,6 +5,7 @@ using Order = eShop.Ordering.API.Application.Queries.Order; using NSubstitute.ExceptionExtensions; +[TestClass] public class OrdersWebApiTest { private readonly IMediator _mediatorMock; @@ -20,7 +21,7 @@ public OrdersWebApiTest() _loggerMock = Substitute.For>(); } - [Fact] + [TestMethod] public async Task Cancel_order_with_requestId_success() { // Arrange @@ -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(result.Result); + Assert.IsInstanceOfType(result.Result); } - [Fact] + [TestMethod] public async Task Cancel_order_bad_request() { // Arrange @@ -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>(result.Result); + Assert.IsInstanceOfType>(result.Result); } - [Fact] + [TestMethod] public async Task Ship_order_with_requestId_success() { // Arrange @@ -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(result.Result); + Assert.IsInstanceOfType(result.Result); } - [Fact] + [TestMethod] public async Task Ship_order_bad_request() { // Arrange @@ -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>(result.Result); + Assert.IsInstanceOfType>(result.Result); } - [Fact] + [TestMethod] public async Task Get_orders_success() { // Arrange @@ -98,10 +99,10 @@ public async Task Get_orders_success() var result = await OrdersApi.GetOrdersByUserAsync(orderServices); // Assert - Assert.IsType>>(result); + Assert.IsInstanceOfType>>(result); } - [Fact] + [TestMethod] public async Task Get_order_success() { // Arrange @@ -115,11 +116,11 @@ public async Task Get_order_success() var result = await OrdersApi.GetOrderAsync(fakeOrderId, orderServices); // Assert - var okResult = Assert.IsType>(result.Result); - Assert.Same(fakeDynamicResult, okResult.Value); + Assert.IsInstanceOfType>(result.Result); + Assert.AreSame(fakeDynamicResult, ((Ok)result.Result).Value); } - [Fact] + [TestMethod] public async Task Get_order_fails() { // Arrange @@ -134,10 +135,10 @@ public async Task Get_order_fails() var result = await OrdersApi.GetOrderAsync(fakeOrderId, orderServices); // Assert - Assert.IsType(result.Result); + Assert.IsInstanceOfType(result.Result); } - [Fact] + [TestMethod] public async Task Get_cardTypes_success() { // Arrange @@ -149,7 +150,7 @@ public async Task Get_cardTypes_success() var result = await OrdersApi.GetCardTypesAsync(_orderQueriesMock); // Assert - Assert.IsType>>(result); - Assert.Same(fakeDynamicResult, result.Value); + Assert.IsInstanceOfType>>(result); + Assert.AreSame(fakeDynamicResult, result.Value); } } diff --git a/tests/Ordering.UnitTests/Application/SetStockRejectedOrderStatusCommandTest.cs b/tests/Ordering.UnitTests/Application/SetStockRejectedOrderStatusCommandTest.cs index 6747a003..5f9d8a86 100644 --- a/tests/Ordering.UnitTests/Application/SetStockRejectedOrderStatusCommandTest.cs +++ b/tests/Ordering.UnitTests/Application/SetStockRejectedOrderStatusCommandTest.cs @@ -2,9 +2,10 @@ namespace eShop.Ordering.UnitTests.Application; +[TestClass] public class SetStockRejectedOrderStatusCommandTest { - [Fact] + [TestMethod] public void Set_Stock_Rejected_OrderStatusCommand_Check_Serialization() { // Arrange @@ -15,15 +16,15 @@ public void Set_Stock_Rejected_OrderStatusCommand_Check_Serialization() var deserializedCommand = JsonSerializer.Deserialize(json); //Assert - Assert.Equal(command.OrderNumber, deserializedCommand.OrderNumber); + Assert.AreEqual(command.OrderNumber, deserializedCommand.OrderNumber); //Assert for List - 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]); } } } diff --git a/tests/Ordering.UnitTests/Domain/BuyerAggregateTest.cs b/tests/Ordering.UnitTests/Domain/BuyerAggregateTest.cs index 457250fa..bd62f684 100644 --- a/tests/Ordering.UnitTests/Domain/BuyerAggregateTest.cs +++ b/tests/Ordering.UnitTests/Domain/BuyerAggregateTest.cs @@ -1,11 +1,12 @@ namespace eShop.Ordering.UnitTests.Domain; +[TestClass] public class BuyerAggregateTest { public BuyerAggregateTest() { } - [Fact] + [TestMethod] public void Create_buyer_item_success() { //Arrange @@ -16,10 +17,10 @@ public void Create_buyer_item_success() var fakeBuyerItem = new Buyer(identity, name); //Assert - Assert.NotNull(fakeBuyerItem); + Assert.IsNotNull(fakeBuyerItem); } - [Fact] + [TestMethod] public void Create_buyer_item_fail() { //Arrange @@ -27,10 +28,10 @@ public void Create_buyer_item_fail() var name = "fakeUser"; //Act - Assert - Assert.Throws(() => new Buyer(identity, name)); + Assert.ThrowsException(() => new Buyer(identity, name)); } - [Fact] + [TestMethod] public void add_payment_success() { //Arrange @@ -49,10 +50,10 @@ public void add_payment_success() var result = fakeBuyerItem.VerifyOrAddPaymentMethod(cardTypeId, alias, cardNumber, securityNumber, cardHolderName, expiration, orderId); //Assert - Assert.NotNull(result); + Assert.IsNotNull(result); } - [Fact] + [TestMethod] public void create_payment_method_success() { //Arrange @@ -68,10 +69,10 @@ public void create_payment_method_success() var result = new PaymentMethod(cardTypeId, alias, cardNumber, securityNumber, cardHolderName, expiration); //Assert - Assert.NotNull(result); + Assert.IsNotNull(result); } - [Fact] + [TestMethod] public void create_payment_method_expiration_fail() { //Arrange @@ -83,10 +84,10 @@ public void create_payment_method_expiration_fail() var expiration = DateTime.UtcNow.AddYears(-1); //Act - Assert - Assert.Throws(() => new PaymentMethod(cardTypeId, alias, cardNumber, securityNumber, cardHolderName, expiration)); + Assert.ThrowsException(() => new PaymentMethod(cardTypeId, alias, cardNumber, securityNumber, cardHolderName, expiration)); } - [Fact] + [TestMethod] public void payment_method_isEqualTo() { //Arrange @@ -102,10 +103,10 @@ public void payment_method_isEqualTo() var result = fakePaymentMethod.IsEqualTo(cardTypeId, cardNumber, expiration); //Assert - Assert.True(result); + Assert.IsTrue(result); } - [Fact] + [TestMethod] public void Add_new_PaymentMethod_raises_new_event() { //Arrange @@ -124,6 +125,6 @@ public void Add_new_PaymentMethod_raises_new_event() fakeBuyer.VerifyOrAddPaymentMethod(cardTypeId, alias, cardNumber, cardSecurityNumber, cardHolderName, cardExpiration, orderId); //Assert - Assert.Equal(fakeBuyer.DomainEvents.Count, expectedResult); + Assert.AreEqual(fakeBuyer.DomainEvents.Count, expectedResult); } } diff --git a/tests/Ordering.UnitTests/Domain/OrderAggregateTest.cs b/tests/Ordering.UnitTests/Domain/OrderAggregateTest.cs index 0c6811a0..c91533e2 100644 --- a/tests/Ordering.UnitTests/Domain/OrderAggregateTest.cs +++ b/tests/Ordering.UnitTests/Domain/OrderAggregateTest.cs @@ -3,12 +3,13 @@ using eShop.Ordering.Domain.AggregatesModel.OrderAggregate; using eShop.Ordering.UnitTests.Domain; +[TestClass] public class OrderAggregateTest { public OrderAggregateTest() { } - [Fact] + [TestMethod] public void Create_order_item_success() { //Arrange @@ -23,10 +24,10 @@ public void Create_order_item_success() var fakeOrderItem = new OrderItem(productId, productName, unitPrice, discount, pictureUrl, units); //Assert - Assert.NotNull(fakeOrderItem); + Assert.IsNotNull(fakeOrderItem); } - [Fact] + [TestMethod] public void Invalid_number_of_units() { //Arrange @@ -38,10 +39,10 @@ public void Invalid_number_of_units() var units = -1; //Act - Assert - Assert.Throws(() => new OrderItem(productId, productName, unitPrice, discount, pictureUrl, units)); + Assert.ThrowsException(() => new OrderItem(productId, productName, unitPrice, discount, pictureUrl, units)); } - [Fact] + [TestMethod] public void Invalid_total_of_order_item_lower_than_discount_applied() { //Arrange @@ -51,12 +52,12 @@ public void Invalid_total_of_order_item_lower_than_discount_applied() var discount = 15; var pictureUrl = "FakeUrl"; var units = 1; - + //Act - Assert - Assert.Throws(() => new OrderItem(productId, productName, unitPrice, discount, pictureUrl, units)); + Assert.ThrowsException(() => new OrderItem(productId, productName, unitPrice, discount, pictureUrl, units)); } - [Fact] + [TestMethod] public void Invalid_discount_setting() { //Arrange @@ -71,10 +72,10 @@ public void Invalid_discount_setting() var fakeOrderItem = new OrderItem(productId, productName, unitPrice, discount, pictureUrl, units); //Assert - Assert.Throws(() => fakeOrderItem.SetNewDiscount(-1)); + Assert.ThrowsException(() => fakeOrderItem.SetNewDiscount(-1)); } - [Fact] + [TestMethod] public void Invalid_units_setting() { //Arrange @@ -89,10 +90,10 @@ public void Invalid_units_setting() var fakeOrderItem = new OrderItem(productId, productName, unitPrice, discount, pictureUrl, units); //Assert - Assert.Throws(() => fakeOrderItem.AddUnits(-1)); + Assert.ThrowsException(() => fakeOrderItem.AddUnits(-1)); } - [Fact] + [TestMethod] public void when_add_two_times_on_the_same_item_then_the_total_of_order_should_be_the_sum_of_the_two_items() { var address = new AddressBuilder().Build(); @@ -101,10 +102,10 @@ public void when_add_two_times_on_the_same_item_then_the_total_of_order_should_b .AddOne(1, "cup", 10.0m, 0, string.Empty) .Build(); - Assert.Equal(20.0m, order.GetTotal()); + Assert.AreEqual(20.0m, order.GetTotal()); } - [Fact] + [TestMethod] public void Add_new_Order_raises_new_event() { //Arrange @@ -124,10 +125,10 @@ public void Add_new_Order_raises_new_event() var fakeOrder = new Order("1", "fakeName", new Address(street, city, state, country, zipcode), cardTypeId, cardNumber, cardSecurityNumber, cardHolderName, cardExpiration); //Assert - Assert.Equal(fakeOrder.DomainEvents.Count, expectedResult); + Assert.AreEqual(fakeOrder.DomainEvents.Count, expectedResult); } - [Fact] + [TestMethod] public void Add_event_Order_explicitly_raises_new_event() { //Arrange @@ -147,10 +148,10 @@ public void Add_event_Order_explicitly_raises_new_event() var fakeOrder = new Order("1", "fakeName", new Address(street, city, state, country, zipcode), cardTypeId, cardNumber, cardSecurityNumber, cardHolderName, cardExpiration); fakeOrder.AddDomainEvent(new OrderStartedDomainEvent(fakeOrder, "fakeName", "1", cardTypeId, cardNumber, cardSecurityNumber, cardHolderName, cardExpiration)); //Assert - Assert.Equal(fakeOrder.DomainEvents.Count, expectedResult); + Assert.AreEqual(fakeOrder.DomainEvents.Count, expectedResult); } - [Fact] + [TestMethod] public void Remove_event_Order_explicitly() { //Arrange @@ -172,6 +173,6 @@ public void Remove_event_Order_explicitly() fakeOrder.AddDomainEvent(@fakeEvent); fakeOrder.RemoveDomainEvent(@fakeEvent); //Assert - Assert.Equal(fakeOrder.DomainEvents.Count, expectedResult); + Assert.AreEqual(fakeOrder.DomainEvents.Count, expectedResult); } } diff --git a/tests/Ordering.UnitTests/Domain/SeedWork/ValueObjectTests.cs b/tests/Ordering.UnitTests/Domain/SeedWork/ValueObjectTests.cs index 99b47769..f8575a3a 100644 --- a/tests/Ordering.UnitTests/Domain/SeedWork/ValueObjectTests.cs +++ b/tests/Ordering.UnitTests/Domain/SeedWork/ValueObjectTests.cs @@ -5,98 +5,115 @@ public class ValueObjectTests public ValueObjectTests() { } - [Theory] - [MemberData(nameof(EqualValueObjects))] + [TestMethod] + [DynamicData(nameof(EqualValueObjects))] public void Equals_EqualValueObjects_ReturnsTrue(ValueObject instanceA, ValueObject instanceB, string reason) { // Act var result = EqualityComparer.Default.Equals(instanceA, instanceB); // Assert - Assert.True(result, reason); + Assert.IsTrue(result, reason); } - [Theory] - [MemberData(nameof(NonEqualValueObjects))] + [TestMethod] + [DynamicData(nameof(NonEqualValueObjects))] public void Equals_NonEqualValueObjects_ReturnsFalse(ValueObject instanceA, ValueObject instanceB, string reason) { // Act var result = EqualityComparer.Default.Equals(instanceA, instanceB); // Assert - Assert.False(result, reason); + Assert.IsFalse(result, reason); } private static readonly ValueObject APrettyValueObject = new ValueObjectA(1, "2", Guid.Parse("97ea43f0-6fef-4fb7-8c67-9114a7ff6ec0"), new ComplexObject(2, "3")); - public static readonly TheoryData EqualValueObjects = new TheoryData + public static IEnumerable EqualValueObjects { + get { - null, - null, - "they should be equal because they are both null" - }, - { - APrettyValueObject, - APrettyValueObject, - "they should be equal because they are the same object" - }, - { - new ValueObjectA(1, "2", Guid.Parse("97ea43f0-6fef-4fb7-8c67-9114a7ff6ec0"), new ComplexObject(2, "3")), - new ValueObjectA(1, "2", Guid.Parse("97ea43f0-6fef-4fb7-8c67-9114a7ff6ec0"), new ComplexObject(2, "3")), - "they should be equal because they have equal members" - }, - { - new ValueObjectA(1, "2", Guid.Parse("97ea43f0-6fef-4fb7-8c67-9114a7ff6ec0"), new ComplexObject(2, "3"), notAnEqualityComponent: "xpto"), - new ValueObjectA(1, "2", Guid.Parse("97ea43f0-6fef-4fb7-8c67-9114a7ff6ec0"), new ComplexObject(2, "3"), notAnEqualityComponent: "xpto2"), - "they should be equal because all equality components are equal, even though an additional member was set" - }, - { - new ValueObjectB(1, "2", 1, 2, 3 ), - new ValueObjectB(1, "2", 1, 2, 3 ), - "they should be equal because all equality components are equal, including the 'C' list" + return new[] + { + new object[] + { + null, + null, + "they should be equal because they are both null" + }, + new object[] + { + APrettyValueObject, + APrettyValueObject, + "they should be equal because they are the same object" + }, + new object[] + { + new ValueObjectA(1, "2", Guid.Parse("97ea43f0-6fef-4fb7-8c67-9114a7ff6ec0"), new ComplexObject(2, "3")), + new ValueObjectA(1, "2", Guid.Parse("97ea43f0-6fef-4fb7-8c67-9114a7ff6ec0"), new ComplexObject(2, "3")), + "they should be equal because they have equal members" + }, + new object[] + { + new ValueObjectA(1, "2", Guid.Parse("97ea43f0-6fef-4fb7-8c67-9114a7ff6ec0"), new ComplexObject(2, "3"), notAnEqualityComponent: "xpto"), + new ValueObjectA(1, "2", Guid.Parse("97ea43f0-6fef-4fb7-8c67-9114a7ff6ec0"), new ComplexObject(2, "3"), notAnEqualityComponent: "xpto2"), + "they should be equal because all equality components are equal, even though an additional member was set" + }, + new object[] + { + new ValueObjectB(1, "2", 1, 2, 3 ), + new ValueObjectB(1, "2", 1, 2, 3 ), + "they should be equal because all equality components are equal, including the 'C' list" + } + }; } - }; + } - public static readonly TheoryData NonEqualValueObjects = new TheoryData + public static IEnumerable NonEqualValueObjects { + get { - new ValueObjectA(a: 1, b: "2", c: Guid.Parse("97ea43f0-6fef-4fb7-8c67-9114a7ff6ec0"), d: new ComplexObject(2, "3")), - new ValueObjectA(a: 2, b: "2", c: Guid.Parse("97ea43f0-6fef-4fb7-8c67-9114a7ff6ec0"), d: new ComplexObject(2, "3")), - "they should not be equal because the 'A' member on ValueObjectA is different among them" - }, - { - new ValueObjectA(a: 1, b: "2", c: Guid.Parse("97ea43f0-6fef-4fb7-8c67-9114a7ff6ec0"), d: new ComplexObject(2, "3")), - new ValueObjectA(a: 1, b: null, c: Guid.Parse("97ea43f0-6fef-4fb7-8c67-9114a7ff6ec0"), d: new ComplexObject(2, "3")), - "they should not be equal because the 'B' member on ValueObjectA is different among them" - }, - { - new ValueObjectA(a: 1, b: "2", c: Guid.Parse("97ea43f0-6fef-4fb7-8c67-9114a7ff6ec0"), d: new ComplexObject(a: 2, b: "3")), - new ValueObjectA(a: 1, b: "2", c: Guid.Parse("97ea43f0-6fef-4fb7-8c67-9114a7ff6ec0"), d: new ComplexObject(a: 3, b: "3")), - "they should not be equal because the 'A' member on ValueObjectA's 'D' member is different among them" - }, - { - new ValueObjectA(a: 1, b: "2", c: Guid.Parse("97ea43f0-6fef-4fb7-8c67-9114a7ff6ec0"), d: new ComplexObject(a: 2, b: "3")), - new ValueObjectB(a: 1, b: "2"), - "they should not be equal because they are not of the same type" - }, - { - new ValueObjectB(1, "2", 1, 2, 3 ), - new ValueObjectB(1, "2", 1, 2, 3, 4 ), - "they should be not be equal because the 'C' list contains one additional value" - }, - { - new ValueObjectB(1, "2", 1, 2, 3, 5 ), - new ValueObjectB(1, "2", 1, 2, 3 ), - "they should be not be equal because the 'C' list contains one additional value" - }, - { - new ValueObjectB(1, "2", 1, 2, 3, 5 ), - new ValueObjectB(1, "2", 1, 2, 3, 4 ), - "they should be not be equal because the 'C' lists are not equal" - } + return new[] + { - }; + new object[] { + new ValueObjectA(a: 1, b: "2", c: Guid.Parse("97ea43f0-6fef-4fb7-8c67-9114a7ff6ec0"), d: new ComplexObject(2, "3")), + new ValueObjectA(a: 2, b: "2", c: Guid.Parse("97ea43f0-6fef-4fb7-8c67-9114a7ff6ec0"), d: new ComplexObject(2, "3")), + "they should not be equal because the 'A' member on ValueObjectA is different among them" + }, + new object[] { + new ValueObjectA(a: 1, b: "2", c: Guid.Parse("97ea43f0-6fef-4fb7-8c67-9114a7ff6ec0"), d: new ComplexObject(2, "3")), + new ValueObjectA(a: 1, b: null, c: Guid.Parse("97ea43f0-6fef-4fb7-8c67-9114a7ff6ec0"), d: new ComplexObject(2, "3")), + "they should not be equal because the 'B' member on ValueObjectA is different among them" + }, + new object[] { + new ValueObjectA(a: 1, b: "2", c: Guid.Parse("97ea43f0-6fef-4fb7-8c67-9114a7ff6ec0"), d: new ComplexObject(a: 2, b: "3")), + new ValueObjectA(a: 1, b: "2", c: Guid.Parse("97ea43f0-6fef-4fb7-8c67-9114a7ff6ec0"), d: new ComplexObject(a: 3, b: "3")), + "they should not be equal because the 'A' member on ValueObjectA's 'D' member is different among them" + }, + new object[] { + new ValueObjectA(a: 1, b: "2", c: Guid.Parse("97ea43f0-6fef-4fb7-8c67-9114a7ff6ec0"), d: new ComplexObject(a: 2, b: "3")), + new ValueObjectB(a: 1, b: "2"), + "they should not be equal because they are not of the same type" + }, + new object[] { + new ValueObjectB(1, "2", 1, 2, 3 ), + new ValueObjectB(1, "2", 1, 2, 3, 4 ), + "they should be not be equal because the 'C' list contains one additional value" + }, + new object[] { + new ValueObjectB(1, "2", 1, 2, 3, 5 ), + new ValueObjectB(1, "2", 1, 2, 3 ), + "they should be not be equal because the 'C' list contains one additional value" + }, + new object[] { + new ValueObjectB(1, "2", 1, 2, 3, 5 ), + new ValueObjectB(1, "2", 1, 2, 3, 4 ), + "they should be not be equal because the 'C' lists are not equal" + } + }; } + + } private class ValueObjectA : ValueObject { diff --git a/tests/Ordering.UnitTests/GlobalUsings.cs b/tests/Ordering.UnitTests/GlobalUsings.cs index a92d92bb..645c7e32 100644 --- a/tests/Ordering.UnitTests/GlobalUsings.cs +++ b/tests/Ordering.UnitTests/GlobalUsings.cs @@ -11,4 +11,4 @@ global using Microsoft.Extensions.Logging; global using NSubstitute; global using eShop.Ordering.UnitTests; -global using Xunit; +global using Microsoft.VisualStudio.TestTools.UnitTesting; diff --git a/tests/Ordering.UnitTests/Ordering.UnitTests.csproj b/tests/Ordering.UnitTests/Ordering.UnitTests.csproj index 164f3429..d6f0b90b 100644 --- a/tests/Ordering.UnitTests/Ordering.UnitTests.csproj +++ b/tests/Ordering.UnitTests/Ordering.UnitTests.csproj @@ -9,16 +9,13 @@ + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - all - runtime; build; native; contentfiles; analyzers - -