приблизний список модульних та інтеграційних тестів для курсового проєкту

Unit-тести

OmdbServiceTests

  • SearchAsync_WithValidQuery_ReturnsSearchResponse
  • SearchAsync_WithEmptyQuery_ThrowsArgumentException
  • SearchAsync_WithWhitespaceQuery_ThrowsArgumentException
  • SearchAsync_ClampsPageBelowOne
  • SearchAsync_ClampsPageAboveOneHundred
  • SearchAsync_TrimsQuery
  • SearchAsync_SendsApiKey
  • SearchAsync_SendsSearchQuery
  • SearchAsync_SendsPage
  • SearchAsync_EncodesQueryParameters
  • SearchAsync_WhenOmdbReturnsValidResponse_DeserializesResponse
  • SearchAsync_WhenOmdbReturnsFalseResponse_ReturnsErrorDto
  • SearchAsync_WhenOmdbReturnsEmptyResponse_ReturnsErrorDto
  • SearchAsync_WhenHttpRequestFails_ThrowsHttpRequestException
  • SearchAsync_PassesCancellationToken
  • GetByImdbIdAsync_WithValidId_ReturnsFilmDto
  • GetByImdbIdAsync_WithEmptyId_ThrowsArgumentException
  • GetByImdbIdAsync_WithWhitespaceId_ThrowsArgumentException
  • GetByImdbIdAsync_TrimsImdbId
  • GetByImdbIdAsync_SendsApiKey
  • GetByImdbIdAsync_SendsImdbId
  • GetByImdbIdAsync_SendsFullPlotParameter
  • GetByImdbIdAsync_EncodesQueryParameters
  • GetByImdbIdAsync_WhenOmdbReturnsValidResponse_DeserializesFilm
  • GetByImdbIdAsync_WhenOmdbReturnsFalseResponse_ReturnsErrorDto
  • GetByImdbIdAsync_WhenOmdbReturnsEmptyResponse_ReturnsErrorDto
  • GetByImdbIdAsync_WhenHttpRequestFails_ThrowsHttpRequestException
  • GetByImdbIdAsync_PassesCancellationToken

AddressServiceTests

  • GetAllAsync_ReturnsAllAddresses
  • GetByIdAsync_WithExistingId_ReturnsAddress
  • GetByIdAsync_WithNonExistingId_ReturnsNull
  • CreateAsync_WithValidAddress_CreatesAddress
  • CreateAsync_WithInvalidAddress_ThrowsValidationException
  • UpdateAsync_WithExistingAddress_UpdatesAddress
  • UpdateAsync_WithNonExistingAddress_ThrowsKeyNotFoundException
  • DeleteAsync_WithExistingAddress_DeletesAddress
  • DeleteAsync_WithNonExistingAddress_ThrowsKeyNotFoundException
  • GetByUserIdAsync_WithExistingUser_ReturnsAddresses
  • GetByUserIdAsync_WithNoAddresses_ReturnsEmptyCollection

CartItemServiceTests

  • GetAllAsync_ReturnsAllCartItems
  • GetByIdAsync_WithExistingId_ReturnsCartItem
  • GetByIdAsync_WithNonExistingId_ReturnsNull
  • GetByCartIdAsync_ReturnsCartItemsForCart
  • CreateAsync_WithValidCartItem_CreatesCartItem
  • CreateAsync_WithInvalidProduct_ThrowsKeyNotFoundException
  • CreateAsync_WithInvalidCart_ThrowsKeyNotFoundException
  • CreateAsync_WithNegativeQuantity_ThrowsValidationException
  • UpdateAsync_WithExistingCartItem_UpdatesCartItem
  • UpdateAsync_WithNonExistingCartItem_ThrowsKeyNotFoundException
  • DeleteAsync_WithExistingCartItem_DeletesCartItem
  • DeleteAsync_WithNonExistingCartItem_ThrowsKeyNotFoundException
  • CalculateSubtotal_ReturnsCorrectValue

CartServiceTests

  • GetAllAsync_ReturnsAllCarts
  • GetByIdAsync_WithExistingId_ReturnsCart
  • GetByIdAsync_WithNonExistingId_ReturnsNull
  • GetByUserIdAsync_WithExistingUser_ReturnsCart
  • GetByUserIdAsync_WhenCartDoesNotExist_ReturnsNull
  • CreateAsync_WithValidCart_CreatesCart
  • CreateAsync_WithInvalidUser_ThrowsKeyNotFoundException
  • UpdateAsync_WithExistingCart_UpdatesCart
  • UpdateAsync_WithNonExistingCart_ThrowsKeyNotFoundException
  • DeleteAsync_WithExistingCart_DeletesCart
  • DeleteAsync_WithNonExistingCart_ThrowsKeyNotFoundException
  • CalculateTotal_WithCartItems_ReturnsCorrectTotal
  • CalculateTotal_WithEmptyCart_ReturnsZero
  • AddItemAsync_AddsItemToCart
  • AddItemAsync_WithExistingProduct_UpdatesQuantity
  • RemoveItemAsync_RemovesItemFromCart
  • ClearAsync_RemovesAllCartItems

CategoryServiceTests

  • GetAllAsync_ReturnsAllCategories
  • GetByIdAsync_WithExistingId_ReturnsCategory
  • GetByIdAsync_WithNonExistingId_ReturnsNull
  • CreateAsync_WithValidCategory_CreatesCategory
  • CreateAsync_WithDuplicateName_ThrowsValidationException
  • CreateAsync_WithInvalidCategory_ThrowsValidationException
  • UpdateAsync_WithExistingCategory_UpdatesCategory
  • UpdateAsync_WithNonExistingCategory_ThrowsKeyNotFoundException
  • UpdateAsync_WithDuplicateName_ThrowsValidationException
  • DeleteAsync_WithExistingCategory_DeletesCategory
  • DeleteAsync_WithNonExistingCategory_ThrowsKeyNotFoundException
  • DeleteAsync_WithProducts_ThrowsInvalidOperationException

OrderItemServiceTests

  • GetAllAsync_ReturnsAllOrderItems
  • GetByIdAsync_WithExistingId_ReturnsOrderItem
  • GetByIdAsync_WithNonExistingId_ReturnsNull
  • GetByOrderIdAsync_ReturnsOrderItemsForOrder
  • CreateAsync_WithValidOrderItem_CreatesOrderItem
  • CreateAsync_WithInvalidOrder_ThrowsKeyNotFoundException
  • CreateAsync_WithInvalidProduct_ThrowsKeyNotFoundException
  • CreateAsync_WithInvalidQuantity_ThrowsValidationException
  • UpdateAsync_WithExistingOrderItem_UpdatesOrderItem
  • UpdateAsync_WithNonExistingOrderItem_ThrowsKeyNotFoundException
  • DeleteAsync_WithExistingOrderItem_DeletesOrderItem
  • DeleteAsync_WithNonExistingOrderItem_ThrowsKeyNotFoundException
  • CalculateSubtotal_ReturnsCorrectValue

OrderServiceTests

  • GetAllAsync_ReturnsAllOrders
  • GetByIdAsync_WithExistingId_ReturnsOrder
  • GetByIdAsync_WithNonExistingId_ReturnsNull
  • GetByUserIdAsync_ReturnsUserOrders
  • CreateAsync_WithValidOrder_CreatesOrder
  • CreateAsync_WithInvalidUser_ThrowsKeyNotFoundException
  • CreateAsync_WithEmptyItems_ThrowsValidationException
  • CreateAsync_CalculatesTotalCorrectly
  • CreateAsync_CreatesOrderItems
  • UpdateAsync_WithExistingOrder_UpdatesOrder
  • UpdateAsync_WithNonExistingOrder_ThrowsKeyNotFoundException
  • UpdateAsync_UpdatesOrderStatus
  • DeleteAsync_WithExistingOrder_DeletesOrder
  • DeleteAsync_WithNonExistingOrder_ThrowsKeyNotFoundException
  • CalculateTotal_ReturnsCorrectTotal
  • CalculateTotal_WithEmptyOrder_ReturnsZero

ProductServiceTests

  • GetAllAsync_ReturnsAllProducts
  • GetByIdAsync_WithExistingId_ReturnsProduct
  • GetByIdAsync_WithNonExistingId_ReturnsNull
  • GetByCategoryIdAsync_ReturnsProductsForCategory
  • SearchAsync_WithMatchingName_ReturnsProducts
  • SearchAsync_WithNoMatches_ReturnsEmptyCollection
  • CreateAsync_WithValidProduct_CreatesProduct
  • CreateAsync_WithInvalidCategory_ThrowsKeyNotFoundException
  • CreateAsync_WithInvalidPrice_ThrowsValidationException
  • CreateAsync_WithNegativeStock_ThrowsValidationException
  • UpdateAsync_WithExistingProduct_UpdatesProduct
  • UpdateAsync_WithNonExistingProduct_ThrowsKeyNotFoundException
  • UpdateAsync_WithInvalidCategory_ThrowsKeyNotFoundException
  • UpdateAsync_WithInvalidPrice_ThrowsValidationException
  • DeleteAsync_WithExistingProduct_DeletesProduct
  • DeleteAsync_WithNonExistingProduct_ThrowsKeyNotFoundException
  • UpdateStock_WithValidQuantity_UpdatesStock
  • UpdateStock_WithNegativeQuantity_ThrowsValidationException
  • DecreaseStock_WhenEnoughStock_DecreasesStock
  • DecreaseStock_WhenInsufficientStock_ThrowsInvalidOperationException

LoginValidatorTests

  • Validate_WithValidLogin_Succeeds
  • Validate_WithEmptyEmail_Fails
  • Validate_WithInvalidEmail_Fails
  • Validate_WithEmptyPassword_Fails
  • Validate_WithShortPassword_Fails

RegisterValidatorTests

  • Validate_WithValidRegistration_Succeeds
  • Validate_WithEmptyEmail_Fails
  • Validate_WithInvalidEmail_Fails
  • Validate_WithEmptyPassword_Fails
  • Validate_WithShortPassword_Fails
  • Validate_WithMismatchedPasswords_Fails
  • Validate_WithEmptyName_Fails
  • Validate_WithInvalidName_Fails

CreateCartItemValidatorTests

  • Validate_WithValidCartItem_Succeeds
  • Validate_WithInvalidCartId_Fails
  • Validate_WithInvalidProductId_Fails
  • Validate_WithZeroQuantity_Fails
  • Validate_WithNegativeQuantity_Fails

CreateCategoryValidatorTests

  • Validate_WithValidCategory_Succeeds
  • Validate_WithEmptyName_Fails
  • Validate_WithTooLongName_Fails

CreateOrderValidatorTests

  • Validate_WithValidOrder_Succeeds
  • Validate_WithInvalidUserId_Fails
  • Validate_WithEmptyItems_Fails
  • Validate_WithInvalidAddress_Fails

CreateProductValidatorTests

  • Validate_WithValidProduct_Succeeds
  • Validate_WithEmptyName_Fails
  • Validate_WithInvalidPrice_Fails
  • Validate_WithNegativeStock_Fails
  • Validate_WithInvalidCategoryId_Fails

UpdateCategoryValidatorTests

  • Validate_WithValidCategory_Succeeds
  • Validate_WithEmptyName_Fails
  • Validate_WithTooLongName_Fails
  • Validate_WithInvalidId_Fails

UpdateProductValidatorTests

  • Validate_WithValidProduct_Succeeds
  • Validate_WithEmptyName_Fails
  • Validate_WithInvalidPrice_Fails
  • Validate_WithNegativeStock_Fails
  • Validate_WithInvalidCategoryId_Fails
  • Validate_WithInvalidId_Fails

AddressMappingTests

  • ToDto_WithValidEntity_ReturnsCorrectDto
  • ToEntity_WithValidDto_ReturnsCorrectEntity
  • ToDto_WithNullEntity_ReturnsNull
  • ToEntity_WithNullDto_ReturnsNull

CartItemMappingTests

  • ToDto_WithValidEntity_ReturnsCorrectDto
  • ToEntity_WithValidDto_ReturnsCorrectEntity
  • ToDto_WithNullEntity_ReturnsNull
  • ToEntity_WithNullDto_ReturnsNull

CategoryMappingTests

  • ToDto_WithValidEntity_ReturnsCorrectDto
  • ToEntity_WithValidDto_ReturnsCorrectEntity
  • ToDto_WithNullEntity_ReturnsNull
  • ToEntity_WithNullDto_ReturnsNull

OrderItemMappingTests

  • ToDto_WithValidEntity_ReturnsCorrectDto
  • ToEntity_WithValidDto_ReturnsCorrectEntity
  • ToDto_WithNullEntity_ReturnsNull
  • ToEntity_WithNullDto_ReturnsNull

ProductMappingTests

  • ToDto_WithValidEntity_ReturnsCorrectDto
  • ToEntity_WithValidDto_ReturnsCorrectEntity
  • ToDto_WithNullEntity_ReturnsNull
  • ToEntity_WithNullDto_ReturnsNull

FilmsControllerTests

  • Search_WithMissingQuery_ReturnsBadRequest
  • Search_WithEmptyQuery_ReturnsBadRequest
  • Search_WithWhitespaceQuery_ReturnsBadRequest
  • Search_WithValidQuery_ReturnsOk
  • Search_WithValidQuery_PassesQueryToService
  • Search_WithValidPage_PassesPageToService
  • Search_WithDefaultPage_PassesPageOneToService
  • Search_WhenServiceReturnsFalseResponse_ReturnsNotFound
  • Search_WhenServiceReturnsFalseResponse_UsesServiceError
  • Search_WhenServiceReturnsFalseResponseWithoutError_UsesDefaultMessage
  • Search_WhenServiceThrowsHttpRequestException_ReturnsBadGateway
  • Search_WhenServiceThrowsHttpRequestException_UsesExceptionMessage
  • GetByImdbId_WithValidId_ReturnsOk
  • GetByImdbId_PassesIdToService
  • GetByImdbId_WhenServiceReturnsFalseResponse_ReturnsNotFound
  • GetByImdbId_WhenServiceReturnsFalseResponse_UsesServiceError
  • GetByImdbId_WhenServiceThrowsHttpRequestException_ReturnsBadGateway
  • GetByImdbId_WhenServiceThrowsHttpRequestException_UsesExceptionMessage

WeatherForecastControllerTests

  • Get_ReturnsFiveForecasts
  • Get_ReturnsForecastsForNextFiveDays
  • Get_ReturnsValidTemperatureRange
  • Get_ReturnsValidSummary
  • Get_ReturnsNonNullForecasts

Integration-тести

FilmsControllerIntegrationTests

  • Search_WithValidQuery_ReturnsOk
  • Search_WithMissingQuery_ReturnsBadRequest
  • Search_WithEmptyQuery_ReturnsBadRequest
  • Search_WithWhitespaceQuery_ReturnsBadRequest
  • Search_WithValidPage_ReturnsExpectedPage
  • Search_WithInvalidPage_ReturnsExpectedValidationResult
  • Search_WhenOmdbReturnsValidResponse_ReturnsExpectedData
  • Search_WhenOmdbReturnsFalseResponse_ReturnsNotFound
  • Search_WhenOmdbReturnsError_ReturnsExpectedError
  • Search_WhenOmdbUnavailable_ReturnsBadGateway
  • Search_ReturnsExpectedJsonStructure
  • Search_ReturnsExpectedContentType
  • GetByImdbId_WithValidId_ReturnsOk
  • GetByImdbId_WithInvalidId_ReturnsNotFound
  • GetByImdbId_WithEmptyId_ReturnsBadRequest
  • GetByImdbId_WhenOmdbReturnsValidResponse_ReturnsExpectedData
  • GetByImdbId_WhenOmdbReturnsFalseResponse_ReturnsNotFound
  • GetByImdbId_WhenOmdbUnavailable_ReturnsBadGateway
  • GetByImdbId_ReturnsExpectedJsonStructure
  • GetByImdbId_ReturnsExpectedContentType

WeatherForecastControllerIntegrationTests

  • Get_ReturnsOk
  • Get_ReturnsFiveForecasts
  • Get_ReturnsExpectedJsonStructure
  • Get_ReturnsExpectedContentType
  • Get_ReturnsDatesForNextFiveDays
  • Get_ReturnsValidTemperatureRange
  • Get_ReturnsValidSummary

AddressIntegrationTests

  • GetAll_ReturnsOk
  • GetAll_ReturnsAllAddresses
  • GetById_WithExistingId_ReturnsOk
  • GetById_WithNonExistingId_ReturnsNotFound
  • Create_WithValidAddress_ReturnsCreated
  • Create_WithInvalidAddress_ReturnsBadRequest
  • Update_WithExistingAddress_ReturnsOk
  • Update_WithNonExistingAddress_ReturnsNotFound
  • Delete_WithExistingAddress_ReturnsNoContent
  • Delete_WithNonExistingAddress_ReturnsNotFound
  • GetByUserId_ReturnsUserAddresses

CartIntegrationTests

  • GetAll_ReturnsOk
  • GetById_WithExistingId_ReturnsOk
  • GetById_WithNonExistingId_ReturnsNotFound
  • GetByUserId_ReturnsUserCart
  • Create_WithValidCart_ReturnsCreated
  • Create_WithInvalidCart_ReturnsBadRequest
  • Update_WithExistingCart_ReturnsOk
  • Update_WithNonExistingCart_ReturnsNotFound
  • Delete_WithExistingCart_ReturnsNoContent
  • Delete_WithNonExistingCart_ReturnsNotFound
  • AddItem_WithValidData_ReturnsCreated
  • AddItem_WithInvalidProduct_ReturnsNotFound
  • AddItem_WithInvalidQuantity_ReturnsBadRequest
  • RemoveItem_WithExistingItem_ReturnsNoContent
  • Clear_WithExistingCart_ReturnsNoContent
  • GetById_ReturnsCalculatedTotal

CartItemIntegrationTests

  • GetAll_ReturnsOk
  • GetById_WithExistingId_ReturnsOk
  • GetById_WithNonExistingId_ReturnsNotFound
  • GetByCartId_ReturnsCartItems
  • Create_WithValidCartItem_ReturnsCreated
  • Create_WithInvalidCart_ReturnsNotFound
  • Create_WithInvalidProduct_ReturnsNotFound
  • Create_WithInvalidQuantity_ReturnsBadRequest
  • Update_WithExistingCartItem_ReturnsOk
  • Update_WithNonExistingCartItem_ReturnsNotFound
  • Delete_WithExistingCartItem_ReturnsNoContent
  • Delete_WithNonExistingCartItem_ReturnsNotFound

CategoryIntegrationTests

  • GetAll_ReturnsOk
  • GetAll_ReturnsAllCategories
  • GetById_WithExistingId_ReturnsOk
  • GetById_WithNonExistingId_ReturnsNotFound
  • Create_WithValidCategory_ReturnsCreated
  • Create_WithInvalidCategory_ReturnsBadRequest
  • Create_WithDuplicateName_ReturnsConflict
  • Update_WithExistingCategory_ReturnsOk
  • Update_WithNonExistingCategory_ReturnsNotFound
  • Update_WithDuplicateName_ReturnsConflict
  • Delete_WithExistingCategory_ReturnsNoContent
  • Delete_WithNonExistingCategory_ReturnsNotFound
  • Delete_WithProducts_ReturnsConflict

OrderIntegrationTests

  • GetAll_ReturnsOk
  • GetAll_ReturnsOrders
  • GetById_WithExistingId_ReturnsOk
  • GetById_WithNonExistingId_ReturnsNotFound
  • GetByUserId_ReturnsUserOrders
  • Create_WithValidOrder_ReturnsCreated
  • Create_WithInvalidUser_ReturnsNotFound
  • Create_WithEmptyItems_ReturnsBadRequest
  • Create_CalculatesTotalCorrectly
  • Create_CreatesOrderItems
  • Update_WithExistingOrder_ReturnsOk
  • Update_WithNonExistingOrder_ReturnsNotFound
  • Update_ChangesOrderStatus
  • Delete_WithExistingOrder_ReturnsNoContent
  • Delete_WithNonExistingOrder_ReturnsNotFound

OrderItemIntegrationTests

  • GetAll_ReturnsOk
  • GetById_WithExistingId_ReturnsOk
  • GetById_WithNonExistingId_ReturnsNotFound
  • GetByOrderId_ReturnsOrderItems
  • Create_WithValidOrderItem_ReturnsCreated
  • Create_WithInvalidOrder_ReturnsNotFound
  • Create_WithInvalidProduct_ReturnsNotFound
  • Create_WithInvalidQuantity_ReturnsBadRequest
  • Update_WithExistingOrderItem_ReturnsOk
  • Update_WithNonExistingOrderItem_ReturnsNotFound
  • Delete_WithExistingOrderItem_ReturnsNoContent
  • Delete_WithNonExistingOrderItem_ReturnsNotFound

ProductIntegrationTests

  • GetAll_ReturnsOk
  • GetAll_ReturnsProducts
  • GetById_WithExistingId_ReturnsOk
  • GetById_WithNonExistingId_ReturnsNotFound
  • GetByCategoryId_ReturnsCategoryProducts
  • Search_WithMatchingName_ReturnsProducts
  • Search_WithNoMatches_ReturnsEmptyCollection
  • Create_WithValidProduct_ReturnsCreated
  • Create_WithInvalidProduct_ReturnsBadRequest
  • Create_WithInvalidCategory_ReturnsNotFound
  • Update_WithExistingProduct_ReturnsOk
  • Update_WithNonExistingProduct_ReturnsNotFound
  • Update_WithInvalidCategory_ReturnsNotFound
  • Delete_WithExistingProduct_ReturnsNoContent
  • Delete_WithNonExistingProduct_ReturnsNotFound
  • UpdateStock_WithValidQuantity_ReturnsOk
  • UpdateStock_WithInvalidQuantity_ReturnsBadRequest

Integration-тести Infrastructure

AddressRepositoryIntegrationTests

  • GetAllAsync_ReturnsPersistedAddresses
  • GetByIdAsync_ReturnsPersistedAddress
  • GetByIdAsync_WhenAddressDoesNotExist_ReturnsNull
  • AddAsync_PersistsAddress
  • UpdateAsync_PersistsChanges
  • DeleteAsync_RemovesAddress
  • GetByUserIdAsync_ReturnsUserAddresses

CartRepositoryIntegrationTests

  • GetAllAsync_ReturnsPersistedCarts
  • GetByIdAsync_ReturnsPersistedCart
  • GetByUserIdAsync_ReturnsUserCart
  • AddAsync_PersistsCart
  • UpdateAsync_PersistsChanges
  • DeleteAsync_RemovesCart

CartItemRepositoryIntegrationTests

  • GetAllAsync_ReturnsPersistedCartItems
  • GetByIdAsync_ReturnsPersistedCartItem
  • GetByCartIdAsync_ReturnsCartItems
  • AddAsync_PersistsCartItem
  • UpdateAsync_PersistsChanges
  • DeleteAsync_RemovesCartItem

CategoryRepositoryIntegrationTests

  • GetAllAsync_ReturnsPersistedCategories
  • GetByIdAsync_ReturnsPersistedCategory
  • AddAsync_PersistsCategory
  • UpdateAsync_PersistsChanges
  • DeleteAsync_RemovesCategory

OrderRepositoryIntegrationTests

  • GetAllAsync_ReturnsPersistedOrders
  • GetByIdAsync_ReturnsPersistedOrder
  • GetByUserIdAsync_ReturnsUserOrders
  • AddAsync_PersistsOrder
  • UpdateAsync_PersistsChanges
  • DeleteAsync_RemovesOrder

OrderItemRepositoryIntegrationTests

  • GetAllAsync_ReturnsPersistedOrderItems
  • GetByIdAsync_ReturnsPersistedOrderItem
  • GetByOrderIdAsync_ReturnsOrderItems
  • AddAsync_PersistsOrderItem
  • UpdateAsync_PersistsChanges
  • DeleteAsync_RemovesOrderItem

ProductRepositoryIntegrationTests

  • GetAllAsync_ReturnsPersistedProducts
  • GetByIdAsync_ReturnsPersistedProduct
  • GetByCategoryIdAsync_ReturnsCategoryProducts
  • AddAsync_PersistsProduct
  • UpdateAsync_PersistsChanges
  • DeleteAsync_RemovesProduct

Integration-тести DI та Application Startup

ApplicationStartupIntegrationTests

  • Application_StartsSuccessfully
  • Application_RegistersControllers
  • Application_RegistersApplicationServices
  • Application_RegistersInfrastructureServices
  • Application_RegistersRepositories
  • Application_RegistersValidators
  • Application_RegistersMappings
  • Application_RegistersOmdbService
  • Application_MapsControllers
  • Application_MapsFilmsEndpoints
  • Application_MapsWeatherForecastEndpoint
  • Application_ResolvesAllRequiredDependencies

Integration-тести взаємодії шарів

ServiceRepositoryIntegrationTests

  • ProductService_CreateAsync_PersistsProduct
  • ProductService_UpdateAsync_PersistsChanges
  • ProductService_DeleteAsync_RemovesProduct
  • CategoryService_CreateAsync_PersistsCategory
  • CategoryService_UpdateAsync_PersistsChanges
  • CategoryService_DeleteAsync_RemovesCategory
  • CartService_CreateAsync_PersistsCart
  • CartService_AddItemAsync_PersistsCartItem
  • CartService_RemoveItemAsync_RemovesCartItem
  • OrderService_CreateAsync_PersistsOrder
  • OrderService_CreateAsync_PersistsOrderItems
  • OrderService_UpdateAsync_PersistsChanges
  • OrderService_DeleteAsync_RemovesOrder
添加评论
点赞收藏
点踩分享查看原文
评论
?
参与讨论