added product validations and most of the unit tests are finished and passing