| updateProduct(Long, PortfolioDtos.UpdateProductRequest, String, WorkspaceContext) |  | 0% |  | 0% | 10 | 10 | 33 | 33 | 1 | 1 |
| upsertCandidate(Long, Long, PortfolioDtos.UpsertProductCandidateRequest, String, WorkspaceContext) |   | 71% |   | 43% | 8 | 9 | 7 | 31 | 0 | 1 |
| listCandidates(Long, Long, String, WorkspaceContext) |  | 0% | | n/a | 1 | 1 | 5 | 5 | 1 | 1 |
| upsertTaxonomyCoverage(Long, PortfolioDtos.UpsertTaxonomyCoverageRequest, String, WorkspaceContext) |   | 73% |   | 50% | 2 | 3 | 4 | 15 | 0 | 1 |
| createProduct(PortfolioDtos.CreateProductRequest, String, WorkspaceContext) |   | 93% |   | 50% | 4 | 5 | 1 | 28 | 0 | 1 |
| getProduct(Long, String, WorkspaceContext) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| requireNodeCode(String) |   | 78% |   | 50% | 1 | 2 | 1 | 5 | 0 | 1 |
| normalizeKey(String, String) |   | 77% |   | 50% | 1 | 2 | 1 | 5 | 0 | 1 |
| normalizePercentage(int, String) |   | 63% |   | 50% | 2 | 3 | 1 | 3 | 0 | 1 |
| lambda$requireProduct$4(Long) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$listCandidates$3(Long) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$upsertCandidate$1(Long) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| requireProduct(Long, String, WorkspaceContext) |   | 82% |   | 50% | 1 | 2 | 0 | 3 | 0 | 1 |
| normalizeConfidence(double) |   | 81% |   | 50% | 3 | 4 | 1 | 3 | 0 | 1 |
| lambda$upsertTaxonomyCoverage$0(ProductCatalogEntry, String, int, PortfolioDtos.UpsertTaxonomyCoverageRequest, String, WorkspaceContext, Instant) |  | 95% |   | 50% | 1 | 2 | 0 | 4 | 0 | 1 |
| toProductView(ProductCatalogEntry) |  | 100% | | n/a | 0 | 1 | 0 | 26 | 0 | 1 |
| toCandidateView(SolutionProductCandidate) |  | 100% | | n/a | 0 | 1 | 0 | 14 | 0 | 1 |
| lambda$upsertCandidate$2(ProjectSolution, ProductCatalogEntry, int, String, PortfolioDtos.UpsertProductCandidateRequest, double, PortfolioTypes.ReviewStatus, PortfolioTypes.ProductSelectionStatus, String, WorkspaceContext, Instant) |  | 100% | | n/a | 0 | 1 | 0 | 5 | 0 | 1 |
| ProductCatalogService(ProductCatalogEntryRepository, ProductTaxonomyCoverageRepository, SolutionProductCandidateRepository, ProjectSolutionRepository, TaxonomyNodeRepository, ProjectPortfolioService) |  | 100% | | n/a | 0 | 1 | 0 | 8 | 0 | 1 |
| lambda$toProductView$5(ProductTaxonomyCoverage) |  | 100% | | n/a | 0 | 1 | 0 | 8 | 0 | 1 |
| listProducts(String, WorkspaceContext) |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| normalizeCurrency(String) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| static {...} |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |