added basic shopping cart functionality and associated tests