Update

@Transactional
public ProductDTO update(Long id, ProductDTO dto) {
    try {
        Product entity = repository.getReferenceById(id);
        copyDtoToEntity(dto, entity);
        entity = repository.save(entity);
        return new ProductDTO(entity);
    }
    catch (EntityNotFoundException e) {
        throw new ResourceNotFoundException("Recurso não encontrado");
    }
}

Temos dois cenários, um de Id existente e outro de não existente.

Método Update do Service, passamos um ID + o corpo do que será alterado

Como já mockamos o save (do insert), precisamos fazer o do getReferenceById.

Mock

Atualizado