| updateSku(Long, Long, CatalogModels.UpdateSkuCommand) |  | 0% |  | 0% | 3 | 3 | 21 | 21 | 1 | 1 |
| lambda$updateProduct$7(Long, CatalogModels.UpdateProductCommand, TransactionStatus) |  | 0% | | n/a | 1 | 1 | 15 | 15 | 1 | 1 |
| listBrands() |  | 0% | | n/a | 1 | 1 | 6 | 6 | 1 | 1 |
| requireMediaOwner(Long, Long) |   | 26% |   | 16% | 3 | 4 | 4 | 7 | 0 | 1 |
| updateProduct(Long, CatalogModels.UpdateProductCommand) |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| lambda$publishProduct$8(Long, int, TransactionStatus) |   | 87% |   | 50% | 2 | 3 | 2 | 16 | 0 | 1 |
| validateSkuCommands(List) |   | 70% |   | 66% | 2 | 4 | 2 | 8 | 0 | 1 |
| extensionFor(String) |   | 55% |   | 25% | 3 | 4 | 3 | 5 | 0 | 1 |
| normalizeMediaType(String) |   | 68% |   | 50% | 2 | 3 | 1 | 5 | 0 | 1 |
| confirmMedia(Long, Long, String, int) |   | 91% |   | 50% | 1 | 2 | 1 | 9 | 0 | 1 |
| lambda$unpublishProduct$9(Long, int, TransactionStatus) |   | 90% |   | 50% | 1 | 2 | 1 | 11 | 0 | 1 |
| categoryView(CategoryEntity) |   | 77% |   | 50% | 1 | 2 | 1 | 4 | 0 | 1 |
| requireActiveCategory(Long) |   | 76% |   | 50% | 2 | 3 | 1 | 4 | 0 | 1 |
| requireActiveBrand(Long) |   | 76% |   | 50% | 2 | 3 | 1 | 4 | 0 | 1 |
| validateMedia(String, long) |   | 76% |   | 50% | 3 | 4 | 1 | 4 | 0 | 1 |
| brandView(BrandEntity) |   | 70% |   | 50% | 1 | 2 | 1 | 3 | 0 | 1 |
| requireProduct(Long) |   | 66% |   | 50% | 1 | 2 | 1 | 4 | 0 | 1 |
| requireUpdated(int) |   | 44% |   | 50% | 1 | 2 | 1 | 3 | 0 | 1 |
| lambda$listProductsByCursor$1(String, String, Long, int, TransactionStatus) |   | 96% |   | 91% | 1 | 7 | 0 | 15 | 0 | 1 |
| lambda$listProducts$0(Long, String, long, long, TransactionStatus) |   | 96% |   | 50% | 1 | 2 | 0 | 10 | 0 | 1 |
| listActiveProductSummaries(List) |   | 89% |   | 50% | 1 | 2 | 1 | 5 | 0 | 1 |
| hasMoreThanTwoFractionDigits(BigDecimal) |   | 77% |   | 50% | 1 | 2 | 0 | 1 | 0 | 1 |
| createProduct(CatalogModels.CreateProductCommand) |  | 100% |  | 100% | 0 | 2 | 0 | 34 | 0 | 1 |
| productSummarySnapshots(List) |  | 100% |  | 100% | 0 | 2 | 0 | 17 | 0 | 1 |
| loadProductDetail(ProductSpuEntity) |  | 100% | | n/a | 0 | 1 | 0 | 9 | 0 | 1 |
| lambda$productSummarySnapshots$2(Map, Map, Map, Map, ProductSpuEntity) |  | 100% | | n/a | 0 | 1 | 0 | 15 | 0 | 1 |
| createUploadIntent(Long, String, long) |  | 100% | | n/a | 0 | 1 | 0 | 9 | 0 | 1 |
| createCategory(Long, String, String, int) |  | 100% |  | 100% | 0 | 2 | 0 | 14 | 0 | 1 |
| lambda$confirmMedia$10(Long, Long, String, String, ObjectStorage.StoredObject, int, TransactionStatus) |  | 100% | | n/a | 0 | 1 | 0 | 12 | 0 | 1 |
| createBrand(String, String) |  | 100% | | n/a | 0 | 1 | 0 | 10 | 0 | 1 |
| productDetail(ProductSpuEntity, CategoryEntity, BrandEntity, List, List) |  | 100% | | n/a | 0 | 1 | 0 | 11 | 0 | 1 |
| CatalogService(CategoryMapper, BrandMapper, ProductSpuMapper, ProductSkuMapper, ProductMediaMapper, ObjectStorage, ProductDetailCache, CatalogSearchOutboxService, MediaStorageProperties, TransactionTemplate) |  | 100% | | n/a | 0 | 1 | 0 | 12 | 0 | 1 |
| signMediaUrls(CatalogModels.ProductDetail) |  | 100% | | n/a | 0 | 1 | 0 | 11 | 0 | 1 |
| lambda$listActiveProductSummaries$4(List, TransactionStatus) |  | 100% | | n/a | 0 | 1 | 0 | 8 | 0 | 1 |
| validatePrices(BigDecimal, BigDecimal) |  | 100% |   | 64% | 5 | 8 | 0 | 7 | 0 | 1 |
| listProducts(long, long, Long, String) |  | 100% | | n/a | 0 | 1 | 0 | 7 | 0 | 1 |
| listCategories() |  | 100% | | n/a | 0 | 1 | 0 | 6 | 0 | 1 |
| listProductsByCursor(int, Long, String, String) |  | 100% | | n/a | 0 | 1 | 0 | 6 | 0 | 1 |
| lambda$signProductSummaries$11(CatalogService.ProductSummarySnapshot) |  | 100% |  | 100% | 0 | 2 | 0 | 10 | 0 | 1 |
| entitiesById(List, Function) |  | 100% |  | 100% | 0 | 2 | 0 | 5 | 0 | 1 |
| loadActiveProductDetail(Long) |  | 100% |   | 75% | 1 | 3 | 0 | 4 | 0 | 1 |
| skuView(ProductSkuEntity) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| signMediaUrl(CatalogModels.MediaView) |  | 100% | | n/a | 0 | 1 | 0 | 8 | 0 | 1 |
| mediaView(ProductMediaEntity) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| safeDownloadUrl(String) |  | 100% | | n/a | 0 | 1 | 0 | 5 | 0 | 1 |
| decodeCursor(String) |  | 100% |  | 100% | 0 | 2 | 0 | 5 | 0 | 1 |
| getProduct(Long) |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| publishProduct(Long, int) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| unpublishProduct(Long, int) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| requireVersion(Integer, int) |  | 100% |   | 75% | 1 | 3 | 0 | 3 | 0 | 1 |
| static {...} |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| ids(List, Function) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| signProductSummaries(List) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| lambda$listActiveProductSummaries$3(ProductSpuEntity) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$getProduct$6() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$getProduct$5(Long) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |