def delete(self, uid=None): #log.debug("Delete VIP") have_error = False params = {} if not uid: params['error'] = "No vip card number provided." self.error(400) self.renderJson(params) else: self.uid = int(uid) customer = Customer.byID(self.uid) if customer: if customer.deleteCustomer(self.uid): return_val = { "complete": "The vip account given was successfully deleted." } self.response.set_status(204) self.renderJson(return_val) else: error_dict = { 'error': 'The vip card number provided does not exist.' } self.error(404) self.renderJson(error_dict)
def put(self, uid=None): #log.debug("Edit VIP") have_error = False params = {} try: params = json_util.decodeDict(json.loads(self.request.body)) except ValueError: self.error(400) self.renderJson( {'error': "The information provided was incomplete."}) if not uid: params['error_card_number'] = "No vip card number provided." have_error = True if self.checkParamsErrors(params) or have_error: params['error'] = "The information provided was incomplete." self.error(400) self.renderJson(params) else: #make sure the user doesn't already exist self.uid = int(uid) customer = Customer.byID(self.uid) if customer: self.name = params['name'] self.dob = self.checkDOB(params['dob']) self.phone = params['phone'] new_info_cust = Customer.findCustomer(self.name, self.dob, self.phone) if not new_info_cust: if customer.updateInfo(self.uid, name=self.name, dob=self.dob, phone=self.phone): return_val = { "complete": "The vip account was successfully updated." } self.renderJson(return_val) else: msg = 'The info provided matches that of an existing customer.' error_dict = {'error': msg} self.error(400) self.renderJson(error_dict) else: msg = 'The vip card number provided does not exist.' error_dict = {'error': msg} self.error(404) self.renderJson(error_dict)
def get(self, uid=None): #log.debug("Get VIP") have_error = False params = {} if not uid: self.error(404) params['error'] = "No vip card number provided." self.renderJson(params) else: self.uid = int(uid) #make sure the user doesn't already exist customer = Customer.byID(self.uid) if customer: self.renderJson(customer.asDict()) else: self.error(404) params[ 'error'] = "The customer info requested could not be found." self.renderJson(params)
def testCreatePreorder(self): main.addTestItems() params = { "name": "Coffee Dude", "dob": "1999-01-02", "phone": "(775) 448-1234" } add_reply = addVip(self, params, 201) customer = Customer.byID(add_reply["card_number"]) all_items = Item.getItems() today = datetime.date.today() order_date = (today + datetime.timedelta(10)).strftime("%Y-%m-%d") print print("Testing Happy path...") item_list = [all_items[5].itemID] params = { 'card_number': customer.card_number, 'preorder_date': order_date, 'item_list': item_list, 'cart_number': 1 } reply = sendRequest(self, 'POST', params=params) print("Testing preorder with Coffee...") item_list = [all_items[1].itemID, all_items[2].itemID] params = { 'card_number': customer.card_number, 'preorder_date': order_date, 'item_list': item_list, 'cart_number': 1 } reply = sendRequest(self, 'POST', params=params, returnCode=400) #pprint(reply) item_list = [all_items[3].itemID] params = { 'card_number': customer.card_number, 'preorder_date': order_date, 'item_list': item_list, 'cart_number': 1 } for i in range(5): reply = sendRequest(self, 'POST', params=params) print("Testing preorder with over regular limit...") reply = sendRequest(self, 'POST', params=params, returnCode=400) item_list = [all_items[4].itemID] params = { 'card_number': customer.card_number, 'preorder_date': order_date, 'item_list': item_list, 'cart_number': 1 } for i in range(3): reply = sendRequest(self, 'POST', params=params) print("Testing preorder with over best seller limit...") reply = sendRequest(self, 'POST', params=params, returnCode=400) #pprint(reply) print("Testing missing VIP ID...") params = { 'preorder_date': order_date, 'item_list': item_list, 'cart_number': 1 } reply = sendRequest(self, 'POST', params=params, returnCode=400) print("Testing VIP ID not found...") params = { 'card_number': 9999, 'preorder_date': order_date, 'item_list': item_list, 'cart_number': 1 } reply = sendRequest(self, 'POST', params=params, returnCode=400) print("Testing empty preorder...") item_list = [] params = { 'card_number': customer.card_number, 'preorder_date': order_date, 'item_list': item_list, 'cart_number': 1 } reply = sendRequest(self, 'POST', params=params, returnCode=400) print("Testing invalid item...") item_list = [999] params = { 'card_number': customer.card_number, 'preorder_date': order_date, 'item_list': item_list, 'cart_number': 1 } reply = sendRequest(self, 'POST', params=params, returnCode=400) print("Testing preorder daily report...") reply = sendRequest(self, 'GET', uri='/dailypreorder/') self.assertNotEqual(len(reply["preorders"]), 0)
def testCreatePurchase(self): main.addTestItems() params = { "name": "Coffee Dude", "dob": "1999-01-02", "phone": "(775) 448-1234" } add_reply = addVip(self, params, 201) customer = Customer.byID(add_reply["card_number"]) all_items = Item.getItems() item_list = [all_items[1].itemID, all_items[3].itemID] print print("Testing Happy path...") params = { 'card_number': customer.card_number, 'item_list': item_list, 'cart_number': 1 } reply = sendRequest(self, 'POST', params=params) print("Testing customer points updated...") customer2 = Customer.byID(add_reply["card_number"]) self.assertNotEqual(customer.points, customer2.points) pointsDelta = customer2.points - customer.points item_list = [all_items[2].itemID, all_items[3].itemID] params = { 'card_number': customer.card_number, 'item_list': item_list, 'cart_number': 1 } reply = sendRequest(self, 'POST', params=params) # This one should have VIP discount print("Testing customer points updated with discount...") customer3 = Customer.byID(add_reply["card_number"]) pointsDelta2 = customer3.points - customer2.points self.assertNotEqual(pointsDelta, pointsDelta2) print("Testing missing VIP ID...") params = { 'card_number': None, 'item_list': item_list, 'cart_number': 1 } reply = sendRequest(self, 'POST', params=params, returnCode=400) print("Testing VIP ID not found...") params = { 'card_number': 9999, 'item_list': item_list, 'cart_number': 1 } reply = sendRequest(self, 'POST', params=params, returnCode=400) print("Testing empty order...") item_list = [] params = { 'card_number': customer.card_number, 'item_list': item_list, 'cart_number': 1 } reply = sendRequest(self, 'POST', params=params, returnCode=400) print("Testing invalid item...") item_list = [999] params = { 'card_number': customer.card_number, 'item_list': item_list, 'cart_number': 1 } reply = sendRequest(self, 'POST', params=params, returnCode=400) print("Testing purchase daily report...") reply = sendRequest(self, 'GET', uri='/dailypurchase/') #pprint(reply) self.assertNotEqual(len(reply["purchases"]), 0)
def post(self): #log.debug("PreOrderHandler") have_error = False params = {} try: params = json_util.decodeDict(json.loads(self.request.body)) except ValueError: self.error(400) self.renderJson( {'error': "The information provided was incomplete."}) if not 'card_number' in params.keys(): params['error_card_number'] = "No vip card number provided." have_error = True else: customer = Customer.byID(params["card_number"]) if not customer: params[ 'error_card_number'] = "The vip card number provided does not exist." have_error = True if not 'item_list' in params.keys() or len(params['item_list']) == 0: params['error_items'] = "No list of items preordered was provided." have_error = True else: error_items = "Invalid item ID provided:" have_item_error = False for itemID in params['item_list']: if not Item.byID(itemID): error_items = error_items + " " + str(itemID) + "," have_item_error = True if have_item_error: params['error_items'] = rstrip(error_items, ',') have_error = True if not 'cart_number' in params.keys(): params[ 'error_cart_num'] = "The cart number where the preorder was placed was not provided." have_error = True if not 'preorder_date' in params.keys(): params[ 'error_preorder_date'] = "The fulfillment date for the preorder was not provided." have_error = True else: self.pre_order_date = self.checkPreorderDate( params["preorder_date"]) if not self.pre_order_date: params[ 'error_preorder_date'] = "The fulfillment date provided for the preorder was not valid." have_error = True if have_error: params['error'] = "The information provided was incomplete." self.error(400) self.renderJson(params) else: result = Preorder.newPreorder(params['card_number'], self.pre_order_date, params['item_list'], params["cart_number"]) if isinstance(result, bool): result = {"complete": "Preorder successfully added."} self.renderJson(result) else: params[ 'error'] = "There was an error while completing the preorder." params['error_items'] = result self.error(400) self.renderJson(params)
def post(self): #log.debug("PurchaseHandler") have_error = False params = {} try: params = json_util.decodeDict(json.loads(self.request.body)) except ValueError: self.error(400) self.renderJson( {'error': "The information provided was incomplete."}) if not 'card_number' in params.keys(): params['error_card_number'] = "No vip card number provided." have_error = True else: self.customer = Customer.byID(params["card_number"]) if not self.customer: params[ 'error_card_number'] = "The vip card number provided does not exist." have_error = True self.order_list = [] if not 'item_list' in params.keys() or len(params['item_list']) == 0: params['error_items'] = "No list of items was provided." have_error = True else: error_items = "Invalid item ID provided:" have_item_error = False for itemID in params['item_list']: item = Item.byID(itemID) if not item: error_items = error_items + " " + str(itemID) + "," have_item_error = True else: self.order_list.append(item) if have_item_error: params['error_items'] = rstrip(error_items, ',') have_error = True if not 'cart_number' in params.keys(): params[ 'error_cart_num'] = "The cart number where this order was placed was not provided." have_error = True if have_error: params['error'] = "The information provided was incomplete." self.error(400) self.renderJson(params) else: purcahse = Purchase.newPurchase(self.customer, self.order_list, params["cart_number"]) if purcahse: result = { "complete": "Order successfully added.", "purchase": purcahse.asDict() } self.renderJson(result) else: params[ 'error'] = "There was an error while completing the order." self.error(400) self.renderJson(params)