From 3eed50a786696d2aacf0628d62f78b44c4353cd5 Mon Sep 17 00:00:00 2001 From: Srushti Pasari94 Date: Thu, 6 Jun 2024 14:43:10 +0530 Subject: [PATCH 1/2] Converted ClientApp.UnitTests from xUnit to MSTest --- .../ClientApp.UnitTests.csproj | 11 +-- tests/ClientApp.UnitTests/GlobalUsings.cs | 4 +- .../Services/BasketServiceTests.cs | 5 +- .../Services/CatalogServiceTests.cs | 13 ++-- .../Services/OrdersServiceTests.cs | 11 +-- .../ViewModels/CatalogItemViewModelTests.cs | 9 ++- .../ViewModels/CatalogViewModelTests.cs | 59 +++++++-------- .../ViewModels/MainViewModelTests.cs | 9 ++- .../ViewModels/MockViewModelTests.cs | 73 ++++++++++--------- .../ViewModels/OrderViewModelTests.cs | 13 ++-- 10 files changed, 106 insertions(+), 101 deletions(-) diff --git a/tests/ClientApp.UnitTests/ClientApp.UnitTests.csproj b/tests/ClientApp.UnitTests/ClientApp.UnitTests.csproj index ca515269..15b8d1d4 100644 --- a/tests/ClientApp.UnitTests/ClientApp.UnitTests.csproj +++ b/tests/ClientApp.UnitTests/ClientApp.UnitTests.csproj @@ -17,17 +17,14 @@ - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - runtime; build; native; contentfiles; analyzers; buildtransitive all + + + + diff --git a/tests/ClientApp.UnitTests/GlobalUsings.cs b/tests/ClientApp.UnitTests/GlobalUsings.cs index 9002c3f0..3f9e1aba 100644 --- a/tests/ClientApp.UnitTests/GlobalUsings.cs +++ b/tests/ClientApp.UnitTests/GlobalUsings.cs @@ -1,8 +1,8 @@ -global using Xunit; -global using eShop.ClientApp.Services; +global using eShop.ClientApp.Services; global using eShop.ClientApp.Services.AppEnvironment; global using eShop.ClientApp.Services.Basket; global using eShop.ClientApp.Services.Catalog; global using eShop.ClientApp.Services.Order; global using eShop.ClientApp.Services.Settings; global using eShop.ClientApp.ViewModels; +global using Microsoft.VisualStudio.TestTools.UnitTesting; diff --git a/tests/ClientApp.UnitTests/Services/BasketServiceTests.cs b/tests/ClientApp.UnitTests/Services/BasketServiceTests.cs index 970363e7..d124e03e 100644 --- a/tests/ClientApp.UnitTests/Services/BasketServiceTests.cs +++ b/tests/ClientApp.UnitTests/Services/BasketServiceTests.cs @@ -1,12 +1,13 @@ namespace ClientApp.UnitTests.Services; +[TestClass] public class BasketServiceTests { - [Fact] + [TestMethod] public async Task GetFakeBasketTest() { var catalogMockService = new CatalogMockService(); var result = await catalogMockService.GetCatalogAsync(); - Assert.NotEmpty(result); + Assert.AreNotEqual(result.Count(), 0); } } diff --git a/tests/ClientApp.UnitTests/Services/CatalogServiceTests.cs b/tests/ClientApp.UnitTests/Services/CatalogServiceTests.cs index 08313bb3..64a53bbc 100644 --- a/tests/ClientApp.UnitTests/Services/CatalogServiceTests.cs +++ b/tests/ClientApp.UnitTests/Services/CatalogServiceTests.cs @@ -1,31 +1,32 @@ namespace ClientApp.UnitTests.Services; +[TestClass] public class CatalogServiceTests { - [Fact] + [TestMethod] public async Task GetFakeCatalogTest() { var catalogMockService = new CatalogMockService(); var catalog = await catalogMockService.GetCatalogAsync(); - Assert.NotEmpty(catalog); + Assert.AreNotEqual(catalog.Count(), 0); } - [Fact] + [TestMethod] public async Task GetFakeCatalogBrandTest() { var catalogMockService = new CatalogMockService(); var catalogBrand = await catalogMockService.GetCatalogBrandAsync(); - Assert.NotEmpty(catalogBrand); + Assert.AreNotEqual(catalogBrand.Count(), 0); } - [Fact] + [TestMethod] public async Task GetFakeCatalogTypeTest() { var catalogMockService = new CatalogMockService(); var catalogType = await catalogMockService.GetCatalogTypeAsync(); - Assert.NotEmpty(catalogType); + Assert.AreNotEqual(catalogType.Count(), 0); } } diff --git a/tests/ClientApp.UnitTests/Services/OrdersServiceTests.cs b/tests/ClientApp.UnitTests/Services/OrdersServiceTests.cs index c5fe7526..9b67f7f0 100644 --- a/tests/ClientApp.UnitTests/Services/OrdersServiceTests.cs +++ b/tests/ClientApp.UnitTests/Services/OrdersServiceTests.cs @@ -1,7 +1,8 @@ -using ClientApp.UnitTests.Mocks; +using ClientApp.UnitTests.Mocks; namespace ClientApp.UnitTests.Services; +[TestClass] public class OrdersServiceTests { private readonly ISettingsService _settingsService; @@ -11,21 +12,21 @@ public OrdersServiceTests() _settingsService = new MockSettingsService(); } - [Fact] + [TestMethod] public async Task GetFakeOrderTest() { var ordersMockService = new OrderMockService(); var order = await ordersMockService.GetOrderAsync(1); - Assert.NotNull(order); + Assert.IsNotNull(order); } - [Fact] + [TestMethod] public async Task GetFakeOrdersTest() { var ordersMockService = new OrderMockService(); var result = await ordersMockService.GetOrdersAsync(); - Assert.NotEmpty(result); + Assert.AreNotEqual(result.Count(), 0); } } diff --git a/tests/ClientApp.UnitTests/ViewModels/CatalogItemViewModelTests.cs b/tests/ClientApp.UnitTests/ViewModels/CatalogItemViewModelTests.cs index 1431225b..b69b8382 100644 --- a/tests/ClientApp.UnitTests/ViewModels/CatalogItemViewModelTests.cs +++ b/tests/ClientApp.UnitTests/ViewModels/CatalogItemViewModelTests.cs @@ -6,6 +6,7 @@ namespace ClientApp.UnitTests.ViewModels; +[TestClass] public class CatalogItemViewModelTests { private readonly INavigationService _navigationService; @@ -29,14 +30,14 @@ public CatalogItemViewModelTests() _appEnvironmentService.UpdateDependencies(true); } - [Fact] + [TestMethod] public void AddCatalogItemCommandIsNotNullTest() { var CatalogItemViewModel = new CatalogItemViewModel(_appEnvironmentService, _navigationService); - Assert.NotNull(CatalogItemViewModel.AddCatalogItemCommand); + Assert.IsNotNull(CatalogItemViewModel.AddCatalogItemCommand); } - [Fact] + [TestMethod] public async Task AddCatalogItemCommandSendsAddProductMessageTest() { bool messageReceived = false; @@ -55,7 +56,7 @@ public async Task AddCatalogItemCommandSendsAddProductMessageTest() await catalogItemViewModel.AddCatalogItemCommand.ExecuteUntilComplete(); - Assert.True(messageReceived); + Assert.IsTrue(messageReceived); } } diff --git a/tests/ClientApp.UnitTests/ViewModels/CatalogViewModelTests.cs b/tests/ClientApp.UnitTests/ViewModels/CatalogViewModelTests.cs index 66775551..e33e41e2 100644 --- a/tests/ClientApp.UnitTests/ViewModels/CatalogViewModelTests.cs +++ b/tests/ClientApp.UnitTests/ViewModels/CatalogViewModelTests.cs @@ -1,8 +1,9 @@ -using ClientApp.UnitTests.Mocks; +using ClientApp.UnitTests.Mocks; using eShop.ClientApp.Services.Identity; namespace ClientApp.UnitTests.ViewModels; +[TestClass] public class CatalogViewModelTests { private readonly INavigationService _navigationService; @@ -27,93 +28,93 @@ public CatalogViewModelTests() _appEnvironmentService.UpdateDependencies(true); } - [Fact] + [TestMethod] public void FilterCommandIsNotNullTest() { var catalogViewModel = new CatalogViewModel(_appEnvironmentService, _navigationService); - Assert.NotNull(catalogViewModel.FilterCommand); + Assert.IsNotNull(catalogViewModel.FilterCommand); } - [Fact] + [TestMethod] public void ClearFilterCommandIsNotNullTest() { var catalogViewModel = new CatalogViewModel(_appEnvironmentService, _navigationService); - Assert.NotNull(catalogViewModel.ClearFilterCommand); + Assert.IsNotNull(catalogViewModel.ClearFilterCommand); } - [Fact] + [TestMethod] public void ProductsPropertyIsEmptyWhenViewModelInstantiatedTest() { var catalogViewModel = new CatalogViewModel(_appEnvironmentService, _navigationService); - Assert.Empty(catalogViewModel.Products); + Assert.AreEqual(catalogViewModel.Products.Count,0); } - [Fact] + [TestMethod] public void BrandsPropertyIsEmptyWhenViewModelInstantiatedTest() { var catalogViewModel = new CatalogViewModel(_appEnvironmentService, _navigationService); - Assert.Empty(catalogViewModel.Brands); + Assert.AreEqual(catalogViewModel.Brands.Count, 0); } - [Fact] + [TestMethod] public void BrandPropertyIsNullWhenViewModelInstantiatedTest() { var catalogViewModel = new CatalogViewModel(_appEnvironmentService, _navigationService); - Assert.Null(catalogViewModel.SelectedBrand); + Assert.IsNull(catalogViewModel.SelectedBrand); } - [Fact] + [TestMethod] public void TypesPropertyIsEmptyWhenViewModelInstantiatedTest() { var catalogViewModel = new CatalogViewModel(_appEnvironmentService, _navigationService); - Assert.Empty(catalogViewModel.Types); + Assert.AreEqual(catalogViewModel.Types.Count, 0); } - [Fact] + [TestMethod] public void TypePropertyIsNullWhenViewModelInstantiatedTest() { var catalogViewModel = new CatalogViewModel(_appEnvironmentService, _navigationService); - Assert.Null(catalogViewModel.SelectedType); + Assert.IsNull(catalogViewModel.SelectedType); } - [Fact] + [TestMethod] public void IsFilterPropertyIsFalseWhenViewModelInstantiatedTest() { var catalogViewModel = new CatalogViewModel(_appEnvironmentService, _navigationService); - Assert.False(catalogViewModel.IsFiltering); + Assert.IsFalse(catalogViewModel.IsFiltering); } - [Fact] + [TestMethod] public async Task ProductsPropertyIsNotNullAfterViewModelInitializationTest() { var catalogViewModel = new CatalogViewModel(_appEnvironmentService, _navigationService); await catalogViewModel.InitializeAsync(); - Assert.NotNull(catalogViewModel.Products); + Assert.IsNotNull(catalogViewModel.Products); } - [Fact] + [TestMethod] public async Task BrandsPropertyIsNotNullAfterViewModelInitializationTest() { var catalogViewModel = new CatalogViewModel(_appEnvironmentService, _navigationService); await catalogViewModel.InitializeAsync(); - Assert.NotNull(catalogViewModel.Brands); + Assert.IsNotNull(catalogViewModel.Brands); } - [Fact] + [TestMethod] public async Task TypesPropertyIsNotNullAfterViewModelInitializationTest() { var catalogViewModel = new CatalogViewModel(_appEnvironmentService, _navigationService); await catalogViewModel.InitializeAsync(); - Assert.NotNull(catalogViewModel.Types); + Assert.IsNotNull(catalogViewModel.Types); } - [Fact] + [TestMethod] public async Task SettingBadgeCountPropertyShouldRaisePropertyChanged() { bool invoked = false; @@ -129,10 +130,10 @@ public async Task SettingBadgeCountPropertyShouldRaisePropertyChanged() }; await catalogViewModel.InitializeAsync(); - Assert.True(invoked); + Assert.IsTrue(invoked); } - [Fact] + [TestMethod] public async Task ClearFilterCommandResetsPropertiesTest() { var catalogViewModel = new CatalogViewModel(_appEnvironmentService, _navigationService); @@ -140,8 +141,8 @@ public async Task ClearFilterCommandResetsPropertiesTest() await catalogViewModel.InitializeAsync(); await catalogViewModel.ClearFilterCommand.ExecuteUntilComplete(null); - Assert.Null(catalogViewModel.SelectedBrand); - Assert.Null(catalogViewModel.SelectedType); - Assert.NotNull(catalogViewModel.Products); + Assert.IsNull(catalogViewModel.SelectedBrand); + Assert.IsNull(catalogViewModel.SelectedType); + Assert.IsNotNull(catalogViewModel.Products); } } diff --git a/tests/ClientApp.UnitTests/ViewModels/MainViewModelTests.cs b/tests/ClientApp.UnitTests/ViewModels/MainViewModelTests.cs index 4d3d1322..b3740d4f 100644 --- a/tests/ClientApp.UnitTests/ViewModels/MainViewModelTests.cs +++ b/tests/ClientApp.UnitTests/ViewModels/MainViewModelTests.cs @@ -2,6 +2,7 @@ namespace ClientApp.UnitTests.ViewModels; +[TestClass] public class MainViewModelTests { private readonly INavigationService _navigationService; @@ -11,17 +12,17 @@ public MainViewModelTests() _navigationService = new MockNavigationService(); } - [Fact] + [TestMethod] public void SettingsCommandIsNotNullWhenViewModelInstantiatedTest() { var mainViewModel = new MainViewModel(_navigationService); - Assert.NotNull(mainViewModel.SettingsCommand); + Assert.IsNotNull(mainViewModel.SettingsCommand); } - [Fact] + [TestMethod] public void IsBusyPropertyIsFalseWhenViewModelInstantiatedTest() { var mainViewModel = new MainViewModel(_navigationService); - Assert.False(mainViewModel.IsBusy); + Assert.IsFalse(mainViewModel.IsBusy); } } diff --git a/tests/ClientApp.UnitTests/ViewModels/MockViewModelTests.cs b/tests/ClientApp.UnitTests/ViewModels/MockViewModelTests.cs index 658b52ef..29e3f174 100644 --- a/tests/ClientApp.UnitTests/ViewModels/MockViewModelTests.cs +++ b/tests/ClientApp.UnitTests/ViewModels/MockViewModelTests.cs @@ -2,6 +2,7 @@ namespace ClientApp.UnitTests.ViewModels; +[TestClass] public class MockViewModelTests { private readonly INavigationService _navigationService; @@ -11,23 +12,23 @@ public MockViewModelTests() _navigationService = new MockNavigationService(); } - [Fact] + [TestMethod] public void CheckValidationFailsWhenPropertiesAreEmptyTest() { var mockViewModel = new MockViewModel(_navigationService); bool isValid = mockViewModel.Validate(); - Assert.False(isValid); - Assert.Null(mockViewModel.Forename.Value); - Assert.Null(mockViewModel.Surname.Value); - Assert.False(mockViewModel.Forename.IsValid); - Assert.False(mockViewModel.Surname.IsValid); - Assert.NotEmpty(mockViewModel.Forename.Errors); - Assert.NotEmpty(mockViewModel.Surname.Errors); + Assert.IsFalse(isValid); + Assert.IsNull(mockViewModel.Forename.Value); + Assert.IsNull(mockViewModel.Surname.Value); + Assert.IsFalse(mockViewModel.Forename.IsValid); + Assert.IsFalse(mockViewModel.Surname.IsValid); + Assert.AreNotEqual(mockViewModel.Forename.Errors.Count(), 0); + Assert.AreNotEqual(mockViewModel.Surname.Errors.Count(), 0); } - [Fact] + [TestMethod] public void CheckValidationFailsWhenOnlyForenameHasDataTest() { var mockViewModel = new MockViewModel(_navigationService); @@ -35,16 +36,16 @@ public void CheckValidationFailsWhenOnlyForenameHasDataTest() bool isValid = mockViewModel.Validate(); - Assert.False(isValid); - Assert.NotNull(mockViewModel.Forename.Value); - Assert.Null(mockViewModel.Surname.Value); - Assert.True(mockViewModel.Forename.IsValid); - Assert.False(mockViewModel.Surname.IsValid); - Assert.Empty(mockViewModel.Forename.Errors); - Assert.NotEmpty(mockViewModel.Surname.Errors); + Assert.IsFalse(isValid); + Assert.IsNotNull(mockViewModel.Forename.Value); + Assert.IsNull(mockViewModel.Surname.Value); + Assert.IsTrue(mockViewModel.Forename.IsValid); + Assert.IsFalse(mockViewModel.Surname.IsValid); + Assert.AreEqual(mockViewModel.Forename.Errors.Count(), 0); + Assert.AreNotEqual(mockViewModel.Surname.Errors.Count(), 0); } - [Fact] + [TestMethod] public void CheckValidationPassesWhenOnlySurnameHasDataTest() { var mockViewModel = new MockViewModel(_navigationService); @@ -52,16 +53,16 @@ public void CheckValidationPassesWhenOnlySurnameHasDataTest() bool isValid = mockViewModel.Validate(); - Assert.False(isValid); - Assert.Null(mockViewModel.Forename.Value); - Assert.NotNull(mockViewModel.Surname.Value); - Assert.False(mockViewModel.Forename.IsValid); - Assert.True(mockViewModel.Surname.IsValid); - Assert.NotEmpty(mockViewModel.Forename.Errors); - Assert.Empty(mockViewModel.Surname.Errors); + Assert.IsFalse(isValid); + Assert.IsNull(mockViewModel.Forename.Value); + Assert.IsNotNull(mockViewModel.Surname.Value); + Assert.IsFalse(mockViewModel.Forename.IsValid); + Assert.IsTrue(mockViewModel.Surname.IsValid); + Assert.AreNotEqual(mockViewModel.Forename.Errors.Count(), 0); + Assert.AreEqual(mockViewModel.Surname.Errors.Count(), 0); } - [Fact] + [TestMethod] public void CheckValidationPassesWhenBothPropertiesHaveDataTest() { var mockViewModel = new MockViewModel(_navigationService); @@ -70,16 +71,16 @@ public void CheckValidationPassesWhenBothPropertiesHaveDataTest() bool isValid = mockViewModel.Validate(); - Assert.True(isValid); - Assert.NotNull(mockViewModel.Forename.Value); - Assert.NotNull(mockViewModel.Surname.Value); - Assert.True(mockViewModel.Forename.IsValid); - Assert.True(mockViewModel.Surname.IsValid); - Assert.Empty(mockViewModel.Forename.Errors); - Assert.Empty(mockViewModel.Surname.Errors); + Assert.IsTrue(isValid); + Assert.IsNotNull(mockViewModel.Forename.Value); + Assert.IsNotNull(mockViewModel.Surname.Value); + Assert.IsTrue(mockViewModel.Forename.IsValid); + Assert.IsTrue(mockViewModel.Surname.IsValid); + Assert.AreEqual(mockViewModel.Forename.Errors.Count(), 0); + Assert.AreEqual(mockViewModel.Surname.Errors.Count(), 0); } - [Fact] + [TestMethod] public void SettingForenamePropertyShouldRaisePropertyChanged() { bool invoked = false; @@ -94,10 +95,10 @@ public void SettingForenamePropertyShouldRaisePropertyChanged() }; mockViewModel.Forename.Value = "John"; - Assert.True(invoked); + Assert.IsTrue(invoked); } - [Fact] + [TestMethod] public void SettingSurnamePropertyShouldRaisePropertyChanged() { bool invoked = false; @@ -112,6 +113,6 @@ public void SettingSurnamePropertyShouldRaisePropertyChanged() }; mockViewModel.Surname.Value = "Smith"; - Assert.True(invoked); + Assert.IsTrue(invoked); } } diff --git a/tests/ClientApp.UnitTests/ViewModels/OrderViewModelTests.cs b/tests/ClientApp.UnitTests/ViewModels/OrderViewModelTests.cs index 9c76d83c..f158423c 100644 --- a/tests/ClientApp.UnitTests/ViewModels/OrderViewModelTests.cs +++ b/tests/ClientApp.UnitTests/ViewModels/OrderViewModelTests.cs @@ -3,6 +3,7 @@ namespace ClientApp.UnitTests.ViewModels; +[TestClass] public class OrderViewModelTests { private readonly INavigationService _navigationService; @@ -29,14 +30,14 @@ public OrderViewModelTests() _appEnvironmentService.UpdateDependencies(true); } - [Fact] + [TestMethod] public void OrderPropertyIsNullWhenViewModelInstantiatedTest() { var orderViewModel = new OrderDetailViewModel(_appEnvironmentService, _navigationService, _settingsService); - Assert.Null(orderViewModel.Order); + Assert.IsNull(orderViewModel.Order); } - [Fact] + [TestMethod] public async Task OrderPropertyIsNotNullAfterViewModelInitializationTest() { var orderViewModel = new OrderDetailViewModel(_appEnvironmentService, _navigationService, _settingsService); @@ -46,10 +47,10 @@ public async Task OrderPropertyIsNotNullAfterViewModelInitializationTest() orderViewModel.OrderNumber = order.OrderNumber; await orderViewModel.InitializeAsync(); - Assert.NotNull(orderViewModel.Order); + Assert.IsNotNull(orderViewModel.Order); } - [Fact] + [TestMethod] public async Task SettingOrderPropertyShouldRaisePropertyChanged() { bool invoked = false; @@ -67,6 +68,6 @@ public async Task SettingOrderPropertyShouldRaisePropertyChanged() orderViewModel.OrderNumber = order.OrderNumber; await orderViewModel.InitializeAsync(); - Assert.True(invoked); + Assert.IsTrue(invoked); } } From 6aa9f522140030b4c3e528b4441d18d2d5d01c9e Mon Sep 17 00:00:00 2001 From: James Montemagno Date: Thu, 6 Jun 2024 09:33:32 -0700 Subject: [PATCH 2/2] fix up paths for tests --- .github/workflows/playwright.yml | 2 +- .github/workflows/pr-validation-maui.yml | 4 ++-- .github/workflows/pr-validation.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml index 644fb68a..2ed779e9 100644 --- a/.github/workflows/playwright.yml +++ b/.github/workflows/playwright.yml @@ -5,7 +5,7 @@ on: paths-ignore: - '**.md' - 'src/ClientApp/**' - - 'test/ClientApp.UnitTests/**' + - 'tests/ClientApp.UnitTests/**' - '.github/workflows/pr-validation-maui.yml' pull_request: branches: [ main ] diff --git a/.github/workflows/pr-validation-maui.yml b/.github/workflows/pr-validation-maui.yml index 5976dd4e..c6b96d36 100644 --- a/.github/workflows/pr-validation-maui.yml +++ b/.github/workflows/pr-validation-maui.yml @@ -6,14 +6,14 @@ on: - '**' paths: - 'src/ClientApp/**' - - 'test/ClientApp.UnitTests/**' + - 'tests/ClientApp.UnitTests/**' - '.github/workflows/pr-validation-maui.yml' push: branches: - main paths: - 'src/ClientApp/**' - - 'test/ClientApp.UnitTests/**' + - 'tests/ClientApp.UnitTests/**' - '.github/workflows/pr-validation-maui.yml' jobs: diff --git a/.github/workflows/pr-validation.yml b/.github/workflows/pr-validation.yml index 320fbb49..e1821ede 100644 --- a/.github/workflows/pr-validation.yml +++ b/.github/workflows/pr-validation.yml @@ -5,7 +5,7 @@ on: paths-ignore: - '**.md' - 'src/ClientApp/**' - - 'test/ClientApp.UnitTests/**' + - 'tests/ClientApp.UnitTests/**' - '.github/workflows/pr-validation-maui.yml' push: branches: @@ -13,7 +13,7 @@ on: paths-ignore: - '**.md' - 'src/ClientApp/**' - - 'test/ClientApp.UnitTests/**' + - 'tests/ClientApp.UnitTests/**' - '.github/workflows/pr-validation-maui.yml' jobs: