added product model plus cart and their tests almost all passing