findById
Como é possivel ver no método nós utilizamos um Id como parâmetro, bem como um Product. Daí é o de sempre, criar um existingId e nonExistingId + uma instância de Product.
Podemos criar uma ProductFactory também. Destacando que o Product possui uma Category, então dentro da ProductFactory, podemos utilizar também a CategoryFactory!
Atualizado