product validations and unit tests