Skip to content

chore: Bump Meziantou.Analyzer from 2.0.285 to 2.0.296

66c804a
Select commit
Loading
Failed to load commit list.
Sign in for the full log view
Closed

chore: Bump Meziantou.Analyzer from 2.0.285 to 2.0.296 #141

chore: Bump Meziantou.Analyzer from 2.0.285 to 2.0.296
66c804a
Select commit
Loading
Failed to load commit list.
GitHub Actions / Tests succeeded Feb 4, 2026 in 1s

422 passed, 0 failed and 0 skipped

Tests passed successfully

Report Passed Failed Skipped Time
/home/runner/work/Teck.Cloud/Teck.Cloud/tests/architecture/catalog/Catalog.Architecture.UnitTests/TestResults/_runnervmkj6or_2026-02-04_03_19_30.trx 52✅ 14s
/home/runner/work/Teck.Cloud/Teck.Cloud/tests/architecture/shared/Teck.Cloud.Arch.Tests/TestResults/_runnervmkj6or_2026-02-04_03_19_27.trx 7✅ 11s
/home/runner/work/Teck.Cloud/Teck.Cloud/tests/integration/Catalog.IntegrationTests/TestResults/_runnervmkj6or_2026-02-04_03_19_50.trx 48✅ 38s
/home/runner/work/Teck.Cloud/Teck.Cloud/tests/unit/Catalog.UnitTests/TestResults/_runnervmkj6or_2026-02-04_03_19_26.trx 315✅ 12s

✅ /home/runner/work/Teck.Cloud/Teck.Cloud/tests/architecture/catalog/Catalog.Architecture.UnitTests/TestResults/_runnervmkj6or_2026-02-04_03_19_30.trx

52 tests were completed in 14s with 52 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
Catalog.Arch.UnitTests.Application.ApplicationTests 2✅ 210ms
Catalog.Arch.UnitTests.Application.CqrsTests 7✅ 63ms
Catalog.Arch.UnitTests.Domain.AggregateRootTests 1✅ 11ms
Catalog.Arch.UnitTests.Domain.DomainTests 3✅ 3s
Catalog.Arch.UnitTests.Domain.SpecificationTests 8✅ 3s
Catalog.Arch.UnitTests.Infrastructure.CacheTests 6✅ 3s
Catalog.Arch.UnitTests.Infrastructure.DbContextTests 7✅ 5ms
Catalog.Arch.UnitTests.Infrastructure.RepositoryTests 13✅ 3s
Catalog.Arch.UnitTests.Layers.LayerTests 5✅ 81ms

✅ Catalog.Arch.UnitTests.Application.ApplicationTests

✅ CommandHandlers_Should_FollowRules
✅ QueryHandlers_Should_FollowRules

✅ Catalog.Arch.UnitTests.Application.CqrsTests

✅ CommandHandlers_May_UseReadRepositories
✅ CommandHandlers_Should_UpdateCache
✅ CommandHandlers_Should_UseWriteRepositories
✅ Commands_Should_ImplementICommand
✅ Queries_Should_ImplementIQuery
✅ QueryHandlers_Should_NotUseWriteRepositories
✅ QueryHandlers_Should_UseReadRepositories

✅ Catalog.Arch.UnitTests.Domain.AggregateRootTests

✅ AggregateRoots_Should_FollowRules

✅ Catalog.Arch.UnitTests.Domain.DomainTests

✅ DomainEvents_Should_FollowRules
✅ Entities_Should_FollowRules
✅ ValueObjects_Should_BeImmutable

✅ Catalog.Arch.UnitTests.Domain.SpecificationTests

✅ ApplicationSpecifications_Should_ImplementISpecification
✅ DomainSpecifications_Should_ImplementISpecification
✅ DomainSpecifications_Should_NotReferenceReadModels
✅ EntitySpecifications_Should_BeInDomainNamespace
✅ EvaluatorSpecifications_Should_BeInInfrastructureLayer
✅ ReadModelSpecifications_Should_BeInApplicationNamespace
✅ Specifications_Should_BeSealed
✅ SpecificationsForDomainEntities_Should_NotBeInApplicationLayer

✅ Catalog.Arch.UnitTests.Infrastructure.CacheTests

✅ CacheInterfaces_Should_BeInApplicationLayer
✅ CacheInterfaces_Should_SpecifyReadModels
✅ Caches_Should_BeInInfrastructureLayer
✅ Caches_Should_BeSealed
✅ Caches_Should_DependOnReadModels
✅ Caches_Should_NotDependOnDomainEntities

✅ Catalog.Arch.UnitTests.Infrastructure.DbContextTests

✅ ApplicationReadDbContext_Should_DependOnReadModels
✅ ApplicationWriteDbContext_Should_DependOnDomainEntities
✅ ReadDbContext_Should_BeSealed
✅ ReadDbContext_Should_InheritFromBaseDbContext
✅ ReadDbContext_Should_NotDependOnDomainEntities
✅ WriteDbContext_Should_InheritFromBaseDbContext
✅ WriteDbContext_Should_NotDependOnReadModels

✅ Catalog.Arch.UnitTests.Infrastructure.RepositoryTests

✅ ApplicationSpecifications_Should_BeInApplicationLayer
✅ DomainSpecifications_Should_BeInDomainLayer
✅ ReadRepositories_Should_BeInReadRepositoriesNamespace
✅ ReadRepositories_Should_ImplementCorrectInterface
✅ ReadRepositories_Should_NotDependOnWriteDbContext
✅ ReadRepositories_Should_NotUseAppDbContext
✅ ReadRepositories_Should_UseApplicationReadDbContext
✅ Repositories_Should_BeSealed
✅ WriteRepositories_Should_BeInWriteRepositoriesNamespace
✅ WriteRepositories_Should_ImplementCorrectInterface
✅ WriteRepositories_Should_NotDependOnReadDbContext
✅ WriteRepositories_Should_NotUseAppDbContext
✅ WriteRepositories_Should_UseApplicationWriteDbContext

✅ Catalog.Arch.UnitTests.Layers.LayerTests

✅ ApplicationLayer_ShouldNot_HaveDependencyOn_InfrastructureLayer
✅ ApplicationLayer_ShouldNot_HaveDependencyOn_PresentationLayer
✅ DomainLayer_ShouldNot_HaveDependencyOn_ApplicationLayer
✅ DomainLayer_ShouldNot_HaveDependencyOn_InfrastructureLayer
✅ InfrastructureLayer_ShouldNot_HaveDependencyOn_PresentationLayer

✅ /home/runner/work/Teck.Cloud/Teck.Cloud/tests/architecture/shared/Teck.Cloud.Arch.Tests/TestResults/_runnervmkj6or_2026-02-04_03_19_27.trx

7 tests were completed in 11s with 7 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
Teck.Cloud.Arch.Tests.SharedCqrsTests 5✅ 2s
Teck.Cloud.Arch.Tests.SharedRepositoryTests 2✅ 2s

✅ Teck.Cloud.Arch.Tests.SharedCqrsTests

✅ CommandHandlers_Should_BeSealed
✅ CommandHandlers_Should_UseWriteRepositories
✅ QueryHandlers_Should_BeSealed
✅ QueryHandlers_Should_NotUseWriteRepositories
✅ QueryHandlers_Should_UseReadRepositories

✅ Teck.Cloud.Arch.Tests.SharedRepositoryTests

✅ ReadRepositories_Should_UseReadModels
✅ WriteRepositories_Should_UseEntitiesImplementingIAggregateRoot

✅ /home/runner/work/Teck.Cloud/Teck.Cloud/tests/integration/Catalog.IntegrationTests/TestResults/_runnervmkj6or_2026-02-04_03_19_50.trx

48 tests were completed in 38s with 48 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
Catalog.IntegrationTests.Infrastructure.Brands.BrandCacheIntegrationTests 8✅ 143ms
Catalog.IntegrationTests.Infrastructure.Brands.BrandReadRepositoryIntegrationTests 7✅ 156ms
Catalog.IntegrationTests.Infrastructure.Brands.BrandWriteRepositoryIntegrationTests 7✅ 853ms
Catalog.IntegrationTests.Infrastructure.Categories.CategoryReadRepositoryIntegrationTests 2✅ 96ms
Catalog.IntegrationTests.Infrastructure.Categories.CategoryWriteRepositoryIntegrationTests 3✅ 315ms
Catalog.IntegrationTests.Infrastructure.ProductPriceTypes.ProductPriceTypeReadRepositoryIntegrationTests 1✅ 40ms
Catalog.IntegrationTests.Infrastructure.ProductPriceTypes.ProductPriceTypeWriteRepositoryIntegrationTests 2✅ 2s
Catalog.IntegrationTests.Infrastructure.Products.ProductReadRepositoryIntegrationTests 3✅ 204ms
Catalog.IntegrationTests.Infrastructure.Products.ProductWriteRepositoryIntegrationTests 4✅ 823ms
Catalog.IntegrationTests.Infrastructure.Promotions.PromotionReadRepositoryIntegrationTests 1✅ 56ms
Catalog.IntegrationTests.Infrastructure.Promotions.PromotionWriteRepositoryIntegrationTests 4✅ 512ms
Catalog.IntegrationTests.Infrastructure.Suppliers.SupplierReadRepositoryIntegrationTests 2✅ 327ms
Catalog.IntegrationTests.Infrastructure.Suppliers.SupplierWriteRepositoryIntegrationTests 4✅ 473ms

✅ Catalog.IntegrationTests.Infrastructure.Brands.BrandCacheIntegrationTests

✅ Cache_Should_StoreAndRetrieveReadModels
✅ CacheShouldReflectChangesWhenEntityIsUpdated
✅ CacheShouldReturnNullAfterEntityIsDeleted
✅ ExpireAsync_Should_ExpireBrandFromCache
✅ GetOrSetByIdAsync_Should_ReturnNull_When_BrandDoesNotExist
✅ GetOrSetByIdAsyncShouldReturnBrandReadModelWhenBrandExists
✅ RemoveAsync_Should_RemoveBrandFromCache
✅ SetAsync_Should_StoreBrandReadModelInCache

✅ Catalog.IntegrationTests.Infrastructure.Brands.BrandReadRepositoryIntegrationTests

✅ AnyAsync_Should_ReturnFalseWhenBrandDoesNotExist
✅ AnyAsync_Should_ReturnTrueWhenBrandExists
✅ CountAsync_Should_ReturnCorrectCount
✅ FirstOrDefaultAsync_Should_ReturnBrandBySpecification
✅ GetByIdAsync_Should_ReturnCorrectBrandReadModel
✅ ListAsync_Should_ReturnAllBrands
✅ ListAsync_WithPaginationSpecification_Should_ReturnPagedResults

✅ Catalog.IntegrationTests.Infrastructure.Brands.BrandWriteRepositoryIntegrationTests

✅ AddAndFindById_Should_WorkCorrectly
✅ Delete_Should_RemoveBrand
✅ ExistsWithName_Should_ReturnFalseForNonExistentName
✅ ExistsWithName_Should_ReturnTrueForExistingName
✅ FindByName_Should_ReturnCorrectBrand
✅ FindBySpecification_Should_ReturnCorrectBrand
✅ Update_Should_PersistChanges

✅ Catalog.IntegrationTests.Infrastructure.Categories.CategoryReadRepositoryIntegrationTests

✅ GetAllCategories_Should_ReturnAllCategories
✅ GetById_ReadModel_ReturnsCategory

✅ Catalog.IntegrationTests.Infrastructure.Categories.CategoryWriteRepositoryIntegrationTests

✅ AddAndGetCategory_Works
✅ GetByName_Should_ReturnCategory
✅ Update_Should_PersistChanges

✅ Catalog.IntegrationTests.Infrastructure.ProductPriceTypes.ProductPriceTypeReadRepositoryIntegrationTests

✅ GetAllProductPriceTypes_Should_ReturnAllTypes

✅ Catalog.IntegrationTests.Infrastructure.ProductPriceTypes.ProductPriceTypeWriteRepositoryIntegrationTests

✅ AddAndGetProductPriceType_Works
✅ Update_Should_PersistChanges

✅ Catalog.IntegrationTests.Infrastructure.Products.ProductReadRepositoryIntegrationTests

✅ GetAllAsyncShouldReturnAllProducts
✅ GetByIdAsyncShouldReturnCorrectProductReadModel
✅ GetBySkuAsyncShouldReturnCorrectProduct

✅ Catalog.IntegrationTests.Infrastructure.Products.ProductWriteRepositoryIntegrationTests

✅ AddAndFindByIdShouldWorkCorrectly
✅ DeleteShouldRemoveProduct
✅ FindBySkuShouldReturnCorrectProduct
✅ UpdateShouldPersistChanges

✅ Catalog.IntegrationTests.Infrastructure.Promotions.PromotionReadRepositoryIntegrationTests

✅ ReadModel_GetById_ReturnsSeededModel

✅ Catalog.IntegrationTests.Infrastructure.Promotions.PromotionWriteRepositoryIntegrationTests

✅ AddAndGetPromotion_Works
✅ GetActivePromotions_Should_ReturnOnlyActivePromotions
✅ GetByName_Should_ReturnPromotion
✅ Update_Should_PersistChanges

✅ Catalog.IntegrationTests.Infrastructure.Suppliers.SupplierReadRepositoryIntegrationTests

✅ GetAllAsyncShouldReturnAllSuppliers
✅ GetByIdAsyncShouldReturnCorrectSupplierReadModel

✅ Catalog.IntegrationTests.Infrastructure.Suppliers.SupplierWriteRepositoryIntegrationTests

✅ AddAndGetSupplier_Works
✅ GetAllSuppliers_Should_ReturnAllSuppliers
✅ GetByName_Should_ReturnSupplier
✅ Update_Should_PersistChanges

✅ /home/runner/work/Teck.Cloud/Teck.Cloud/tests/unit/Catalog.UnitTests/TestResults/_runnervmkj6or_2026-02-04_03_19_26.trx

315 tests were completed in 12s with 315 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
Catalog.UnitTests.Application.Brands.BrandMappingsTests 2✅ 1ms
Catalog.UnitTests.Application.Brands.CreateBrandCommandHandlerTests 2✅ 4ms
Catalog.UnitTests.Application.Brands.DeleteBrandCommandHandlerTests 5✅ 667ms
Catalog.UnitTests.Application.Brands.DeleteBrandsCommandHandlerTests 1✅ 59ms
Catalog.UnitTests.Application.Brands.GetBrandQueryHandlerTests 2✅ 44ms
Catalog.UnitTests.Application.Brands.GetPaginatedBrandsQueryHandlerTests 1✅ 81ms
Catalog.UnitTests.Application.Brands.ResponseTypesTests 3✅ 17ms
Catalog.UnitTests.Application.Brands.UpdateBrandCommandHandlerTests 2✅ 405ms
Catalog.UnitTests.Application.Categories.ResponseTypesTests 3✅ 1ms
Catalog.UnitTests.Application.ProductPrices.ResponseTypesTests 3✅ 11ms
Catalog.UnitTests.Application.Products.CreateProductCommandHandlerTests 4✅ 590ms
Catalog.UnitTests.Application.Products.GetProductByIdQueryHandlerTests 2✅ 555ms
Catalog.UnitTests.Application.Products.ProductMappingsTests 1✅ 98ms
Catalog.UnitTests.Application.Products.RequestTypesTests 4✅ 31ms
Catalog.UnitTests.Application.Products.ResponseTypesTests 3✅ 24ms
Catalog.UnitTests.Application.Products.ValidatorTests 5✅ 704ms
Catalog.UnitTests.Application.Promotions.ResponseTypesTests 2✅ 1ms
Catalog.UnitTests.Domain.Brands.BrandErrorsTests 5✅ 14ms
Catalog.UnitTests.Domain.Brands.BrandTests 70✅ 137ms
Catalog.UnitTests.Domain.Brands.WebsiteTests 15✅ 30ms
Catalog.UnitTests.Domain.Categories.CategoryErrorsTests 3✅ 1ms
Catalog.UnitTests.Domain.Categories.CategoryTests 14✅ 61ms
Catalog.UnitTests.Domain.ProductPrices.ProductPriceErrorsTests 6✅ 1ms
Catalog.UnitTests.Domain.ProductPrices.ProductPriceTests 13✅ 38ms
Catalog.UnitTests.Domain.ProductPriceTypes.ProductPriceTypeErrorsTests 4✅ 1ms
Catalog.UnitTests.Domain.ProductPriceTypes.ProductPriceTypeTests 14✅ 35ms
Catalog.UnitTests.Domain.Products.ProductErrorsTests 10✅ 91ms
Catalog.UnitTests.Domain.Products.ProductTests 29✅ 513ms
Catalog.UnitTests.Domain.Promotions.PromotionErrorsTests 4✅ 1ms
Catalog.UnitTests.Domain.Promotions.PromotionTests 44✅ 156ms
Catalog.UnitTests.Domain.Suppliers.SupplierErrorsTests 4✅ 1ms
Catalog.UnitTests.Domain.Suppliers.SupplierTests 35✅ 102ms

✅ Catalog.UnitTests.Application.Brands.BrandMappingsTests

✅ BrandToBrandResponse_Maps_All_Properties
✅ PagedBrandToPagedBrandResponse_Maps_All_Properties

✅ Catalog.UnitTests.Application.Brands.CreateBrandCommandHandlerTests

✅ HandleShouldReturnErrorWhenBrandIsInvalidAsync
✅ HandleShouldReturnSuccessResultWhenBrandIsUniqueAsync

✅ Catalog.UnitTests.Application.Brands.DeleteBrandCommandHandlerTests

✅ Handle_Should_ReturnDeletedResult_WhenBrandIsDeleted_Async
✅ Handle_Should_ReturnNotFoundResult_WhenBrandIsNotFound_Async
✅ Handle_Should_Throw_WhenCacheThrows_Async
✅ Handle_Should_Throw_WhenRepositoryThrows_Async
✅ Handle_Should_Throw_WhenUnitOfWorkThrows_Async

✅ Catalog.UnitTests.Application.Brands.DeleteBrandsCommandHandlerTests

✅ Handle_Should_ReturnDeletedResult_WhenBrandsIsDeleted_Async

✅ Catalog.UnitTests.Application.Brands.GetBrandQueryHandlerTests

✅ Handle_Should_ReturnNotFoundResult_WhenBrandIsNull_Async
✅ Handle_Should_ReturnSuccessResult_WhenBrandIsNotNull_Async

✅ Catalog.UnitTests.Application.Brands.GetPaginatedBrandsQueryHandlerTests

✅ Handle_Should_ReturnEmptyBrandResponseList_WhenBrandsIsFound_Async

✅ Catalog.UnitTests.Application.Brands.ResponseTypesTests

✅ BrandResponseAllowsNulls
✅ BrandResponseCanSetAllProperties
✅ BrandResponseDefaultsAreCorrect

✅ Catalog.UnitTests.Application.Brands.UpdateBrandCommandHandlerTests

✅ Handle_Should_ReturnNotFoundResult_WhenBrandIsNotFound_Async
✅ Handle_Should_ReturnSuccessResult_WhenBrandIsUpdated_Async

✅ Catalog.UnitTests.Application.Categories.ResponseTypesTests

✅ CategoryResponse_Allows_Nulls
✅ CategoryResponse_CanSet_All_Properties
✅ CategoryResponse_Defaults_Are_Correct

✅ Catalog.UnitTests.Application.ProductPrices.ResponseTypesTests

✅ ProductPriceResponse_Allows_Nulls
✅ ProductPriceResponse_CanSet_All_Properties
✅ ProductPriceResponse_Defaults_Are_Correct

✅ Catalog.UnitTests.Application.Products.CreateProductCommandHandlerTests

✅ Handle_Should_ReturnError_WhenProductNameIsEmpty
✅ Handle_Should_ReturnError_WhenProductSkuIsEmpty
✅ Handle_Should_ReturnNotCreated_WhenSaveChangesReturnsZero
✅ Handle_Should_ReturnProductResponse_WhenProductIsCreated

✅ Catalog.UnitTests.Application.Products.GetProductByIdQueryHandlerTests

✅ Handle_Should_ReturnNotFound_WhenProductDoesNotExist
✅ Handle_Should_ReturnProductResponse_WhenProductExists

✅ Catalog.UnitTests.Application.Products.ProductMappingsTests

✅ ProductToProductResponse_Maps_All_Properties

✅ Catalog.UnitTests.Application.Products.RequestTypesTests

✅ CreateProductRequest_CanSetProperties
✅ CreateProductRequest_Default_Properties
✅ GetProductByIdRequest_CanSetProductId
✅ GetProductByIdRequest_Default_Properties

✅ Catalog.UnitTests.Application.Products.ResponseTypesTests

✅ ProductResponse_Allows_Nulls_And_Empty_Collections
✅ ProductResponse_CanSet_All_Properties
✅ ProductResponse_Defaults_Are_Correct

✅ Catalog.UnitTests.Application.Products.ValidatorTests

✅ CreateProductValidator_Should_Fail_On_Empty_ProductSku
✅ CreateProductValidator_Should_Fail_When_ProductSku_Already_Exists
✅ GetProductByIdValidator_Should_Fail_On_Default_Guid
✅ GetProductByIdValidator_Should_Fail_On_Empty_ProductId
✅ GetProductByIdValidator_Should_Pass_On_Valid_ProductId

✅ Catalog.UnitTests.Application.Promotions.ResponseTypesTests

✅ PromotionResponse_CanSet_All_Properties
✅ PromotionResponse_Defaults_Are_Correct

✅ Catalog.UnitTests.Domain.Brands.BrandErrorsTests

✅ EmptyDescription_Should_Have_Correct_Code_And_Description
✅ EmptyName_Should_Have_Correct_Code_And_Description
✅ EmptyWebsite_Should_Have_Correct_Code_And_Description
✅ InvalidWebsite_Should_Have_Correct_Code_And_Description
✅ NotFound_Should_Have_Correct_Code_And_Description

✅ Catalog.UnitTests.Domain.Brands.BrandTests

✅ Create_MultipleFields_Invalid(name: " ", description: " ", website: "not-a-url", expectError: True, errorCount: 3)
✅ Create_MultipleFields_Invalid(name: null, description: null, website: "https://example.com", expectError: True, errorCount: 2)
✅ Create_MultipleFields_Invalid(name: null, description: null, website: null, expectError: True, errorCount: 2)
✅ Create_Name_Description_Validation(name: "   ", description: "   ", expectError: True)
✅ Create_Name_Description_Validation(name: "   ", description: "Desc", expectError: True)
✅ Create_Name_Description_Validation(name: "Name", description: "   ", expectError: True)
✅ Create_Name_Description_Validation(name: "Name", description: null, expectError: True)
✅ Create_Name_Description_Validation(name: null, description: "Desc", expectError: True)
✅ Create_Name_Description_Validation(name: null, description: null, expectError: True)
✅ Create_Should_Fail_When_AllFieldsNullOrEmpty
✅ Create_Should_ReturnAllErrors_When_MultipleFieldsInvalid
✅ Create_Should_ReturnError_When_DescriptionIsInvalid(invalidDescription: "   ")
✅ Create_Should_ReturnError_When_DescriptionIsInvalid(invalidDescription: "")
✅ Create_Should_ReturnError_When_DescriptionIsInvalid(invalidDescription: null)
✅ Create_Should_ReturnError_When_NameIsInvalid(invalidName: "   ")
✅ Create_Should_ReturnError_When_NameIsInvalid(invalidName: "")
✅ Create_Should_ReturnError_When_NameIsInvalid(invalidName: null)
✅ Create_Should_ReturnError_When_WebsiteIsMalformed(badWebsite: "ftp://badurl")
✅ Create_Should_ReturnError_When_WebsiteIsMalformed(badWebsite: "http:/missing-slash.com")
✅ Create_Should_ReturnError_When_WebsiteIsMalformed(badWebsite: "not-a-url")
✅ Create_Should_ReturnMultipleErrors_When_MultipleFieldsInvalid
✅ Create_Should_SetCorrectProperties
✅ Create_Should_Succeed_When_WebsiteIsNull
✅ Create_Should_Succeed_With_Uppercase_Http_Or_Https
✅ Create_WithNullWebsite_Should_SetWebsiteToNull
✅ Create_WithOnlyWebsite_Should_ReturnErrorsForNameAndDescription
✅ Create_WithValidWebsite_Should_SetWebsite
✅ Products_Should_Always_BeInitialized
✅ Products_Should_BeSameInstance_AfterUpdate
✅ Update_AllFieldsToWhitespace_Should_ReturnAllErrors
✅ Update_FromNullWebsite_ToValidWebsite_Should_SetWebsite
✅ Update_FromWebsite_ToNull_Should_ReturnError_And_NotChangeWebsite
✅ Update_Name_Description_Website_Various(updateName: "", updateDescription: null, updateWebsite: null, expectedName: "Name", expectedDescription: "Desc", expectedWebsiteResult: "https://example.com", expectError: True)
✅ Update_Name_Description_Website_Various(updateName: null, updateDescription: "", updateWebsite: null, expectedName: "Name", expectedDescription: "Desc", expectedWebsiteResult: "https://example.com", expectError: True)
✅ Update_Name_Description_Website_Various(updateName: null, updateDescription: "NewName", updateWebsite: null, expectedName: "Name", expectedDescription: "NewName", expectedWebsiteResult: "https://example.com", expectError: False)
✅ Update_Name_Description_Website_Various(updateName: null, updateDescription: null, updateWebsite: "https://newsite.com", expectedName: "Name", expectedDescription: "Desc", expectedWebsiteResult: "https://newsite.com", expectError: False)
✅ Update_Name_Description_Website_Various(updateName: null, updateDescription: null, updateWebsite: "NewDesc", expectedName: "Name", expectedDescription: "Desc", expectedWebsiteResult: "https://example.com", expectError: True)
✅ Update_Should_NotAddEvents
✅ Update_Should_NotAddEvents_When_ValuesChanged
✅ Update_Should_NotChange_Properties_When_ValuesAreNull
✅ Update_Should_NotChange_When_ValuesAreSame
✅ Update_Should_OnlyModifyChangedProperties
✅ Update_Should_RemoveDescription_When_EmptyString
✅ Update_Should_RemoveWebsite_When_EmptyString
✅ Update_Should_ReturnAllErrors_When_MultipleFieldsInvalid
✅ Update_Should_ReturnError_When_WebsiteIsInvalid
✅ Update_Should_ReturnMultipleErrors_When_MultipleFieldsInvalid
✅ Update_Should_Succeed_When_AllFieldsNull
✅ Update_Should_UpdateAllFields_When_AllProvided
✅ Update_Website_VariousCases(initialWebsite: "https://example.com", updateWebsite: "   ", expectedWebsite: "https://example.com", expectError: True)
✅ Update_Website_VariousCases(initialWebsite: "https://example.com", updateWebsite: "", expectedWebsite: "https://example.com", expectError: True)
✅ Update_Website_VariousCases(initialWebsite: "https://example.com", updateWebsite: "https://example.com", expectedWebsite: "https://example.com", expectError: False)
✅ Update_Website_VariousCases(initialWebsite: "https://example.com", updateWebsite: "not-a-url", expectedWebsite: "https://example.com", expectError: True)
✅ Update_Website_VariousCases(initialWebsite: "https://example.com", updateWebsite: null, expectedWebsite: "https://example.com", expectError: False)
✅ Update_Website_VariousCases(initialWebsite: null, updateWebsite: "   ", expectedWebsite: null, expectError: True)
✅ Update_Website_VariousCases(initialWebsite: null, updateWebsite: "https://newsite.com", expectedWebsite: "https://newsite.com", expectError: False)
✅ Update_WithAllValuesUnchanged_Should_NotAlterState_OrAddEvents
✅ Update_WithEmptyDescription_Should_ReturnError_And_NotChangeDescription
✅ Update_WithEmptyName_Should_ReturnError_And_NotChangeName
✅ Update_WithInvalidWebsite_Should_ReturnError_And_NotChangeWebsite
✅ Update_WithNullWebsite_Should_NotChangeWebsite
✅ Update_WithOnlyDescriptionChanged_Should_OnlyUpdateDescription
✅ Update_WithOnlyNameChanged_Should_OnlyUpdateName
✅ Update_WithOnlyWebsiteChanged_Should_OnlyUpdateWebsite
✅ Update_WithSameWebsite_Should_NotChangeWebsite
✅ Update_WithValidWebsite_Should_SetWebsite
✅ Update_WithWhitespaceWebsite_Should_ReturnError
✅ Update_WithWhitespaceWebsite_When_WebsiteIsNotNull_Should_ReturnError_And_NotChange
✅ Update_WithWhitespaceWebsite_When_WebsiteIsNull_Should_ReturnError_And_NotChange
✅ Website_Should_ReturnError_When_InvalidUrl

✅ Catalog.UnitTests.Domain.Brands.WebsiteTests

✅ Create_Should_ReturnEmptyError_When_NullOrWhitespace(value: "   ")
✅ Create_Should_ReturnEmptyError_When_NullOrWhitespace(value: "")
✅ Create_Should_ReturnEmptyError_When_NullOrWhitespace(value: null)
✅ Create_Should_ReturnInvalidError_When_NotValidUrl(value: "ftp://example.com")
✅ Create_Should_ReturnInvalidError_When_NotValidUrl(value: "http:/missing-slash.com")
✅ Create_Should_ReturnInvalidError_When_NotValidUrl(value: "not-a-url")
✅ Create_Should_ReturnInvalidError_When_NotValidUrl(value: "www.example.com")
✅ Create_Should_Succeed_When_ValidUrl(value: "http://example.com")
✅ Create_Should_Succeed_When_ValidUrl(value: "https://example.com")
✅ Create_Should_Succeed_When_ValidUrl(value: "HTTPS://EXAMPLE.COM")
✅ Equality_Should_Fail_For_DifferentValue
✅ Equality_Should_Work_For_SameValue
✅ ToString_Should_ReturnValue
✅ WebsiteErrors_Empty_Should_Have_Correct_Code_And_Description
✅ WebsiteErrors_Invalid_Should_Have_Correct_Code_And_Description

✅ Catalog.UnitTests.Domain.Categories.CategoryErrorsTests

✅ EmptyDescription_Should_Have_Correct_Code_And_Description
✅ EmptyName_Should_Have_Correct_Code_And_Description
✅ NotFound_Should_Have_Correct_Code_And_Description

✅ Catalog.UnitTests.Domain.Categories.CategoryTests

✅ Create_Should_ReturnError_When_DescriptionIsInvalid(invalidDescription: " ")
✅ Create_Should_ReturnError_When_DescriptionIsInvalid(invalidDescription: "")
✅ Create_Should_ReturnError_When_DescriptionIsInvalid(invalidDescription: null)
✅ Create_Should_ReturnError_When_NameIsInvalid(invalidName: " ")
✅ Create_Should_ReturnError_When_NameIsInvalid(invalidName: "")
✅ Create_Should_ReturnError_When_NameIsInvalid(invalidName: null)
✅ Create_Should_ReturnMultipleErrors_When_MultipleFieldsInvalid
✅ Create_Should_SetCorrectProperties
✅ Update_Should_ChangeBoth_When_BothAreDifferent
✅ Update_Should_NotChange_When_ValuesAreSame
✅ Update_Should_OnlyModifyChangedProperties
✅ Update_Should_ReturnError_When_NameIsEmpty
✅ Update_Should_ReturnMultipleErrors_When_BothFieldsInvalid
✅ Update_Should_Succeed_When_AllFieldsNull

✅ Catalog.UnitTests.Domain.ProductPrices.ProductPriceErrorsTests

✅ DefaultProductId_Should_Have_Correct_Code_And_Description
✅ DefaultProductPriceTypeId_Should_Have_Correct_Code_And_Description
✅ EmptyCurrencyCode_Should_Have_Correct_Code_And_Description
✅ NegativePrice_Should_Have_Correct_Code_And_Description
✅ NotCreated_Should_Have_Correct_Code_And_Description
✅ NotFound_Should_Have_Correct_Code_And_Description

✅ Catalog.UnitTests.Domain.ProductPrices.ProductPriceTests

✅ Create_Should_Allow_ZeroPrice(zeroPrice: 0)
✅ Create_Should_ReturnError_When_CurrencyCodeIsInvalid(invalidCurrency: "   ")
✅ Create_Should_ReturnError_When_CurrencyCodeIsInvalid(invalidCurrency: "")
✅ Create_Should_ReturnError_When_PriceIsNegative(invalidPrice: -1)
✅ Create_Should_ReturnError_When_PriceIsNegative(invalidPrice: -100)
✅ Create_Should_ReturnError_When_ProductIdIsDefault
✅ Create_Should_ReturnError_When_ProductPriceTypeIdIsDefault
✅ Create_Should_ReturnMultipleErrors_When_MultipleFieldsInvalid
✅ Create_Should_SetCorrectProperties
✅ Update_Should_Change_SalePrice_And_CurrencyCode
✅ Update_Should_NotChange_When_ValuesAreSame
✅ Update_Should_ReturnError_When_SalePriceIsNegative
✅ Update_Should_Succeed_When_AllFieldsNull

✅ Catalog.UnitTests.Domain.ProductPriceTypes.ProductPriceTypeErrorsTests

✅ EmptyName_Should_Have_Correct_Code_And_Description
✅ NegativePriority_Should_Have_Correct_Code_And_Description
✅ NotCreated_Should_Have_Correct_Code_And_Description
✅ NotFound_Should_Have_Correct_Code_And_Description

✅ Catalog.UnitTests.Domain.ProductPriceTypes.ProductPriceTypeTests

✅ Create_Should_ReturnError_When_NameIsInvalid(invalidName: "   ")
✅ Create_Should_ReturnError_When_NameIsInvalid(invalidName: "")
✅ Create_Should_ReturnError_When_NameIsInvalid(invalidName: null)
✅ Create_Should_ReturnError_When_PriorityIsNegative(invalidPriority: -1)
✅ Create_Should_ReturnError_When_PriorityIsNegative(invalidPriority: -100)
✅ Create_Should_ReturnMultipleErrors_When_MultipleFieldsInvalid
✅ Create_Should_SetCorrectProperties
✅ Create_Should_Succeed_When_Valid
✅ ProductPriceTypeErrors_Should_Have_Correct_Values
✅ Update_Should_ModifyProperties
✅ Update_Should_NotChange_When_ValuesAreSame
✅ Update_Should_ReturnError_When_NameIsEmpty
✅ Update_Should_ReturnError_When_PriorityIsNegative
✅ Update_Should_Succeed_When_AllFieldsNull

✅ Catalog.UnitTests.Domain.Products.ProductErrorsTests

✅ EmptyCategories_Should_Have_Correct_Code_And_Description
✅ EmptyDescription_Should_Have_Correct_Code_And_Description
✅ EmptyGTIN_Should_Have_Correct_Code_And_Description
✅ EmptyName_Should_Have_Correct_Code_And_Description
✅ EmptySKU_Should_Have_Correct_Code_And_Description
✅ NoBrand_Should_Have_Correct_Code_And_Description
✅ NoCategories_Should_Have_Correct_Code_And_Description
✅ NotCreated_Should_Have_Correct_Code_And_Description
✅ NotFound_Should_Have_Correct_Code_And_Description
✅ NullBrand_Should_Have_Correct_Code_And_Description

✅ Catalog.UnitTests.Domain.Products.ProductTests

✅ Create_Should_Allow_Optional_GTIN(optionalGtin: "   ")
✅ Create_Should_Allow_Optional_GTIN(optionalGtin: "")
✅ Create_Should_Allow_Optional_GTIN(optionalGtin: null)
✅ Create_Should_GenerateValidSlug
✅ Create_Should_ReturnError_When_DescriptionIsInvalid(invalidDescription: "   ")
✅ Create_Should_ReturnError_When_DescriptionIsInvalid(invalidDescription: "")
✅ Create_Should_ReturnError_When_DescriptionIsInvalid(invalidDescription: null)
✅ Create_Should_ReturnError_When_DescriptionIsWhitespace
✅ Create_Should_ReturnError_When_NameIsInvalid(invalidName: " ")
✅ Create_Should_ReturnError_When_NameIsInvalid(invalidName: "")
✅ Create_Should_ReturnError_When_NameIsInvalid(invalidName: null)
✅ Create_Should_ReturnError_When_SKUIsInvalid(invalidSku: "   ")
✅ Create_Should_ReturnError_When_SKUIsInvalid(invalidSku: "")
✅ Create_Should_ReturnError_When_SKUIsInvalid(invalidSku: null)
✅ Create_Should_ReturnError_When_SKUIsWhitespace
✅ Create_Should_ReturnMultipleErrors_When_MultipleFieldsInvalid
✅ Create_Should_SetCorrectProperties
✅ GetProductSlug_Should_ProduceExpectedSlug(input: "  ", expected: "")
✅ GetProductSlug_Should_ProduceExpectedSlug(input: "  My Product!  ", expected: "my-product")
✅ GetProductSlug_Should_ProduceExpectedSlug(input: "Product___Name", expected: "product-name")
✅ GetProductSlug_Should_ProduceExpectedSlug(input: "Product--Name", expected: "product-name")
✅ GetProductSlug_Should_ProduceExpectedSlug(input: "Product", expected: "product")
✅ Update_Should_DoNothing_When_NameIsNull
✅ Update_Should_DoNothing_When_NameIsSame
✅ Update_Should_OnlyModifyChangedProperties
✅ Update_Should_ReturnError_When_NameIsEmpty
✅ Update_Should_ReturnError_When_NameIsWhitespace
✅ Update_Should_ReturnMultipleErrors_When_NameIsNullOrWhitespace
✅ Update_Should_Succeed_When_NameIsNull

✅ Catalog.UnitTests.Domain.Promotions.PromotionErrorsTests

✅ EmptyName_Should_Have_Correct_Code_And_Description
✅ InvalidDateRange_Should_Have_Correct_Code_And_Description
✅ InvalidDiscount_Should_Have_Correct_Code_And_Description
✅ NoProducts_Should_Have_Correct_Code_And_Description

✅ Catalog.UnitTests.Domain.Promotions.PromotionTests

✅ Categories_Should_Initialize_As_EmptyCollection
✅ Create_Should_Allow_WhitespaceDescription
✅ Create_Should_ReturnError_When_NameIsInvalid(invalidName: "   ")
✅ Create_Should_ReturnError_When_NameIsInvalid(invalidName: "")
✅ Create_Should_ReturnError_When_NameIsInvalid(invalidName: null)
✅ Create_Should_ReturnError_When_NameIsNull_Explicit
✅ Create_Should_ReturnError_When_ProductsContainNull
✅ Create_Should_ReturnError_When_ProductsIsEmpty
✅ Create_Should_ReturnError_When_ProductsIsNull
✅ Create_Should_ReturnError_When_ProductsIsNull_Explicit
✅ Create_Should_ReturnError_When_StartDateAfterEndDate
✅ Create_Should_ReturnMultipleErrors_When_MultipleFieldsInvalid
✅ Create_Should_ReturnMultipleErrors_When_MultipleFieldsInvalid_Explicit
✅ Create_Should_SetDescription_When_Provided
✅ Create_Should_SetDescriptionToEmptyString_When_EmptyStringProvided
✅ Create_Should_Succeed_When_DescriptionIsNull
✅ Create_Should_Succeed_When_Valid
✅ Create_Should_Succeed_With_SingleProduct
✅ Update_Should_Allow_EmptyProductsList
✅ Update_Should_ChangeProducts_When_ProductsProvided
✅ Update_Should_NotChange_When_AllFieldsAreSame
✅ Update_Should_NotChange_When_AllFieldsNull
✅ Update_Should_NotChange_When_CategoriesIsNotSet
✅ Update_Should_NotChange_When_DescriptionIsNull
✅ Update_Should_NotChange_When_DescriptionIsSame
✅ Update_Should_NotChange_When_ProductsIsNull
✅ Update_Should_NotChange_When_ValidFromIsSame
✅ Update_Should_NotChange_When_ValidToIsSame
✅ Update_Should_NotChange_When_ValuesAreSame
✅ Update_Should_NotChangeProducts_When_ProductsIsNull_And_OriginalIsEmpty
✅ Update_Should_OnlyModifyChangedProperties
✅ Update_Should_ReturnError_When_NameIsEmpty
✅ Update_Should_ReturnError_When_NameIsNullOrWhitespace
✅ Update_Should_ReturnError_When_NameIsWhitespace
✅ Update_Should_ReturnError_When_ValidToBeforeValidFrom
✅ Update_Should_ReturnError_When_ValidToBeforeValidFrom_BothProvided
✅ Update_Should_SetDescriptionToEmptyString_When_EmptyStringProvided
✅ Update_Should_SetDescriptionToNull_When_NullProvided
✅ Update_Should_SetProductsToEmpty_When_EmptyListProvided
✅ Update_Should_SetProductsToNull_When_NullProvided
✅ Update_Should_Succeed_When_AllFieldsNull
✅ Update_Should_UpdateAllFields_When_AllProvided
✅ Update_Should_UpdateValidFrom_Only
✅ Update_Should_UpdateValidTo_Only

✅ Catalog.UnitTests.Domain.Suppliers.SupplierErrorsTests

✅ EmptyDescription_Should_Have_Correct_Code_And_Description
✅ EmptyName_Should_Have_Correct_Code_And_Description
✅ EmptyWebsite_Should_Have_Correct_Code_And_Description
✅ InvalidWebsite_Should_Have_Correct_Code_And_Description

✅ Catalog.UnitTests.Domain.Suppliers.SupplierTests

✅ Create_Should_ReturnError_When_DescriptionIsEmpty(invalidDescription: "   ")
✅ Create_Should_ReturnError_When_DescriptionIsEmpty(invalidDescription: "")
✅ Create_Should_ReturnError_When_DescriptionIsWhitespace
✅ Create_Should_ReturnError_When_NameIsInvalid(invalidName: "   ")
✅ Create_Should_ReturnError_When_NameIsInvalid(invalidName: "")
✅ Create_Should_ReturnError_When_NameIsInvalid(invalidName: null)
✅ Create_Should_ReturnError_When_NameIsWhitespace
✅ Create_Should_ReturnError_When_WebsiteIsInvalid(invalidWebsite: "   ")
✅ Create_Should_ReturnError_When_WebsiteIsInvalid(invalidWebsite: "")
✅ Create_Should_ReturnError_When_WebsiteIsInvalid(invalidWebsite: null)
✅ Create_Should_ReturnError_When_WebsiteIsMalformed(badWebsite: "ftp://badurl")
✅ Create_Should_ReturnError_When_WebsiteIsMalformed(badWebsite: "http:/missing-slash.com")
✅ Create_Should_ReturnError_When_WebsiteIsMalformed(badWebsite: "not-a-url")
✅ Create_Should_ReturnError_When_WebsiteIsNull
✅ Create_Should_ReturnError_When_WebsiteIsWhitespace
✅ Create_Should_ReturnMultipleErrors_When_AllFieldsInvalid
✅ Create_Should_ReturnMultipleErrors_When_MultipleFieldsInvalid
✅ Create_Should_SetCorrectProperties
✅ Create_Should_Succeed_When_DescriptionIsNull
✅ Create_Should_Succeed_With_Uppercase_Http_Or_Https
✅ Update_Should_ChangeDescription_When_NewValueProvided
✅ Update_Should_NotChange_When_DescriptionIsSame
✅ Update_Should_NotChange_When_ValuesAreSame
✅ Update_Should_NotChange_When_WebsiteIsSame
✅ Update_Should_OnlyModifyChangedProperties
✅ Update_Should_ReturnError_When_DescriptionIsEmpty
✅ Update_Should_ReturnError_When_NameIsEmpty
✅ Update_Should_ReturnError_When_WebsiteIsInvalid
✅ Update_Should_ReturnError_When_WebsiteIsMalformed
✅ Update_Should_ReturnError_When_WebsiteIsWhitespace
✅ Update_Should_ReturnMultipleErrors_When_MultipleFieldsInvalid
✅ Update_Should_SetWebsite_When_PreviouslyNull
✅ Update_Should_SetWebsite_When_ValidUrlProvided
✅ Update_Should_Succeed_When_AllFieldsNull
✅ Update_Should_UpdateAllFields_When_AllProvided