Example #1
0
    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)
Example #2
0
    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)
Example #3
0
    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)
Example #4
0
    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)
Example #6
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)
Example #7
0
    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)