[Waterstrong]: Use mock in unit test, and refactor the shopping cart module and finish most of the unit tests