| updateProduct(Long, Product, BindingResult, Model, RedirectAttributes) |  | 0% |  | 0% | 5 | 5 | 27 | 27 | 1 | 1 |
| showAllProducts(Model) |  | 0% |  | 0% | 2 | 2 | 24 | 24 | 1 | 1 |
| addProduct(Product, BindingResult, Model, RedirectAttributes) |  | 0% |  | 0% | 4 | 4 | 19 | 19 | 1 | 1 |
| addCategory(String, String, RedirectAttributes) |  | 0% |  | 0% | 5 | 5 | 16 | 16 | 1 | 1 |
| toggleProductStatus(Long) |  | 0% |  | 0% | 4 | 4 | 12 | 12 | 1 | 1 |
| showCategoriesPage(Model) |  | 0% | | n/a | 1 | 1 | 11 | 11 | 1 | 1 |
| showEditProductForm(Long, Model, RedirectAttributes) |  | 0% |  | 0% | 2 | 2 | 11 | 11 | 1 | 1 |
| deleteProduct(Long) |  | 0% | | n/a | 1 | 1 | 9 | 9 | 1 | 1 |
| lambda$filterProducts$5(String, Product) |  | 0% |  | 0% | 10 | 10 | 4 | 4 | 1 | 1 |
| lambda$searchProducts$3(String, Product) |  | 0% |  | 0% | 6 | 6 | 3 | 3 | 1 | 1 |
| showAddProductForm(Model) |  | 0% | | n/a | 1 | 1 | 6 | 6 | 1 | 1 |
| getProductStats() |  | 0% | | n/a | 1 | 1 | 6 | 6 | 1 | 1 |
| lambda$filterProducts$4(String, Product) |  | 0% |  | 0% | 5 | 5 | 2 | 2 | 1 | 1 |
| searchProducts(String) |  | 0% | | n/a | 1 | 1 | 5 | 5 | 1 | 1 |
| filterProducts(String, String) |  | 0% | | n/a | 1 | 1 | 5 | 5 | 1 | 1 |
| lambda$showAllProducts$0(Product) |  | 0% |  | 0% | 2 | 2 | 1 | 1 | 1 | 1 |
| getAvailableCategories() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| lambda$showCategoriesPage$2(Product) |  | 0% |  | 0% | 3 | 3 | 1 | 1 | 1 | 1 |
| isValidPrice(BigDecimal) |  | 0% |  | 0% | 3 | 3 | 1 | 1 | 1 | 1 |
| lambda$deleteProduct$1(Long) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| isValidCategory(String) |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| AdminProductController() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |