Exemplo n.º 1
0
def add_products_to_cart():
    if request.is_json:
        request_dict = request.get_json()
        products = request_dict.get('products')
        response = GuestRole.save_products_to_basket(products)
        # if response:
        return jsonify(msg=response['msg'], data=response['response'])
 def setUp(self) -> None:
     if not ("testing" in rel_path):
         raise ReferenceError("The Data Base is not the testing data base.\n"
                              "\t\t\t\tPlease go to src.main.DataAccessLayer.ConnectionProxy.RealDb.rel_path\n"
                              "\t\t\t\t and change rel_path to test_rel_path.\n"
                              "\t\t\t\tThanks :D")
     self.__guest_role = GuestRole()
     self.__trade_control_mock = TradeControl.get_instance()
     self.__security_mock = Security.get_instance()
     self.__payment_proxy_mock = PaymentProxy.get_instance()
     self.__delivery_proxy_mock = DeliveryProxy.get_instance()
     self.__nickname = "anna9218"
     self.__password = "******"
     self.__store_name = "Some Store"
     self.__product_name = "Some Product"
     self.__keyword = "Some Keyword"
     self.__category = "Some Category"
Exemplo n.º 3
0
def login():
    if request.is_json:
        request_dict = request.get_json()
        nickname = request_dict.get('nickname')
        password = request_dict.get('password')
        response = GuestRole.login(nickname,
                                   password)  # seems OK, need to verify later
        if response:
            return jsonify(msg=response['msg'], data=response['response'])
    return jsonify(msg="Login failed", data=response['response'], status=400)
Exemplo n.º 4
0
def search_products_by():
    if request.is_json:
        request_dict = request.get_json()
        search_option = request_dict.get(
            'search_option')  # by name, keyword or category
        input_str = request_dict.get('input')
        response = GuestRole.search_products_by(
            search_option, input_str)  # list of Products (Object)
        return jsonify(msg=response["msg"], data=response["response"])
    return jsonify(msg="Oops, communication error.", data=[])
Exemplo n.º 5
0
def display_stores_products():
    if request.is_json:
        request_dict = request.get_json()
        store_name = request_dict.get('store_name')
        store_info_flag = request_dict.get('store_info_flag')
        products_info_flag = request_dict.get('products_info_flag')
        response = GuestRole.display_stores_or_products_info(
            store_name, store_info_flag, products_info_flag)
        if response:
            return jsonify(msg=response["msg"], data=response["response"])
        return jsonify(msg="get store products failed",
                       data=response["response"],
                       status=400)
Exemplo n.º 6
0
def register():
    req = request
    if request.is_json:
        request_dict = request.get_json()
        nickname = request_dict.get('nickname')
        password = request_dict.get('password')
        response = GuestRole.register(nickname, password)  # seems OK, checked
        if response:
            return jsonify(msg=response['msg'], data=response['response'])
        # return jsonify(msg="Registered successfully!")
    return jsonify(msg="Registration failed",
                   data=response['response'],
                   status=400)
Exemplo n.º 7
0
def purchase_products():
    response = GuestRole.purchase_products()
    if response:
        # print(response)
        # print(purchases)
        # print(purchases[0])
        # print(purchases[0]["store_name"])

        # print("after handle")
        return jsonify(data=response)
    return jsonify(msg="purchase products failed",
                   data=response["response"],
                   status=400)
Exemplo n.º 8
0
def filter_products_by():
    if request.is_json:
        request_dict = request.get_json()
        filter_option = request_dict.get(
            'filter_option')  # by name, keyword or category
        products_ls = request_dict.get('products_ls')

        if filter_option == 1:
            min_price = request_dict.get('min_price')
            max_price = request_dict.get('max_price')
            response = GuestRole.filter_products_by(
                products_ls,
                filter_option,
                min_price=min_price,
                max_price=max_price)  # list of Products (Object)
        else:
            if filter_option == 2:
                category = request_dict.get('category')
                response = GuestRole.filter_products_by(
                    products_ls, filter_option,
                    category=category)  # list of Products (Object)

        return jsonify(msg=response["msg"], data=response["response"])
    return jsonify(msg="Oops, communication error.", data=[])
Exemplo n.º 9
0
def confirm_purchase():
    if request.is_json:
        request_dict = request.get_json()
        delivery_details = request_dict.get('delivery_details')
        payment_details = request_dict.get('payment_details')
        details = request_dict.get("purchases")
        response = GuestRole.confirm_payment(delivery_details, payment_details,
                                             details)
        if response['response']:
            # purchases = details["purchases"]
            # map(lambda purchase: handle_purchase_msg(purchase["store_name"]), purchases)
            for purchase in details["purchases"]:
                handle_purchase_msg(purchase["store_name"])
        if response:
            return jsonify(msg=response['msg'], data=response['response'])
    return jsonify(msg="purchase confirmation failed",
                   data=response["response"],
                   status=400)
Exemplo n.º 10
0
def update_or_remove_from_shopping_cart():
    # flag: str, products_details: [{"product_name": str, "store_name": str, "amount": int}]) \

    if request.is_json:
        request_dict = request.get_json()
        action_type = request_dict.get('action_type')
        products_details = [{
            'product_name': request_dict.get("product_name"),
            'store_name': request_dict.get("store_name"),
            'amount': request_dict.get("amount")
        }]
        response = GuestRole.update_shopping_cart(action_type,
                                                  products_details)
        if response:
            return jsonify(msg=response['msg'], data=response['response'])
    return jsonify(msg="purchase confirmation failed",
                   data=response["response"],
                   status=400)
class GuestRoleTest(unittest.TestCase):
    def setUp(self) -> None:
        if not ("testing" in rel_path):
            raise ReferenceError("The Data Base is not the testing data base.\n"
                                 "\t\t\t\tPlease go to src.main.DataAccessLayer.ConnectionProxy.RealDb.rel_path\n"
                                 "\t\t\t\t and change rel_path to test_rel_path.\n"
                                 "\t\t\t\tThanks :D")
        self.__guest_role = GuestRole()
        self.__trade_control_mock = TradeControl.get_instance()
        self.__security_mock = Security.get_instance()
        self.__payment_proxy_mock = PaymentProxy.get_instance()
        self.__delivery_proxy_mock = DeliveryProxy.get_instance()
        self.__nickname = "anna9218"
        self.__password = "******"
        self.__store_name = "Some Store"
        self.__product_name = "Some Product"
        self.__keyword = "Some Keyword"
        self.__category = "Some Category"

    # use case 2.2
    def test_register(self):
        self.__security_mock.get_instance().validated_password = MagicMock(return_value=True)
        self.__trade_control_mock.get_instance().register_guest = MagicMock(return_value=True)
        res = self.__guest_role.register(self.__nickname, self.__password)  # should succeed
        self.assertTrue(res)

        self.__security_mock.get_instance().validated_password = MagicMock(return_value=False)
        self.__trade_control_mock.get_instance().register_guest = MagicMock(return_value=True)
        res = self.__guest_role.register(self.__nickname, self.__password)
        self.assertFalse(res['response'])

        self.__security_mock.get_instance().validated_password = MagicMock(return_value=False)
        self.__trade_control_mock.get_instance().register_guest = MagicMock(return_value=False)
        res = self.__guest_role.register(self.__nickname, self.__password)
        self.assertFalse(res['response'])

        self.__security_mock.get_instance().validated_password = MagicMock(return_value=True)
        self.__trade_control_mock.get_instance().register_guest = MagicMock(return_value=False)
        res = self.__guest_role.register(self.__nickname, self.__password)
        self.assertFalse(res)

    # use case 2.3
    def test_login(self):
        self.__trade_control_mock.get_instance().login_subscriber = MagicMock(return_value=True)
        res = self.__guest_role.login(self.__nickname, self.__password)  # should succeed
        self.assertTrue(res)

        self.__trade_control_mock.get_instance().login_subscriber = MagicMock(return_value=False)
        res = self.__guest_role.login(self.__nickname, self.__password)
        self.assertFalse(res)

    # use case 2.4
    def test_display_stores_or_products_info(self):
        self.__trade_control_mock.get_instance().get_store_info = MagicMock(return_value=True)
        res = self.__guest_role.display_stores_or_products_info(self.__store_name, True, False)
        self.assertTrue(res)

        self.__trade_control_mock.get_instance().get_store_info = MagicMock(return_value=False)
        res = self.__guest_role.display_stores_or_products_info(self.__store_name, True, False)
        self.assertFalse(res)

        self.__trade_control_mock.get_instance().get_store_inventory = MagicMock(return_value=True)
        res = self.__guest_role.display_stores_or_products_info(self.__store_name, False, True)
        self.assertTrue(res)

        self.__trade_control_mock.get_instance().get_store_inventory = MagicMock(return_value=False)
        res = self.__guest_role.display_stores_or_products_info(self.__store_name, False, True)
        self.assertFalse(res)

    # use case 2.5.1
    def test_search_products_by(self):
        self.__trade_control_mock.get_instance().get_products_by = MagicMock(return_value=[])
        res = self.__guest_role.search_products_by(1, self.__product_name)
        self.assertEqual([], res)

        self.__trade_control_mock.get_instance().get_products_by = MagicMock(return_value=[])
        res = self.__guest_role.search_products_by(2, self.__keyword)
        self.assertEqual([], res)

        self.__trade_control_mock.get_instance().get_products_by = MagicMock(return_value=[])
        res = self.__guest_role.search_products_by(3, self.__category)
        self.assertEqual([], res)

    # use case 2.5.2
    def test_filter_products_by(self):
        self.__trade_control_mock.get_instance().filter_products_by = MagicMock(return_value=[])
        res = self.__guest_role.filter_products_by([], [])
        self.assertEqual([], res)

    # use case 2.6
    def test_save_products_to_basket(self):
        self.__trade_control_mock.get_instance().save_products_to_basket = MagicMock(return_value=[])
        res = self.__guest_role.save_products_to_basket([])
        self.assertEqual([], res)

    # use case 2.7
    def test_view_shopping_cart(self):
        self.__trade_control_mock.get_instance().view_shopping_cart = MagicMock(return_value=[])
        res = self.__guest_role.view_shopping_cart()
        self.assertEqual([], res)

    # use case 2.7
    def test_update_shopping_cart(self):
        self.__trade_control_mock.get_instance().remove_from_shopping_cart = MagicMock(return_value=True)
        res = self.__guest_role.update_shopping_cart("remove", [])
        self.assertTrue(res)

        self.__trade_control_mock.get_instance().remove_from_shopping_cart = MagicMock(return_value=False)
        res = self.__guest_role.update_shopping_cart("remove", [])
        self.assertFalse(res)

        self.__trade_control_mock.get_instance().update_quantity_in_shopping_cart = MagicMock(return_value=True)
        res = self.__guest_role.update_shopping_cart("update", [])
        self.assertTrue(res)

        self.__trade_control_mock.get_instance().update_quantity_in_shopping_cart = MagicMock(return_value=False)
        res = self.__guest_role.update_shopping_cart("update", [])
        self.assertFalse(res)

    # --------------------------------------------------------------------
    # use case 2.8
    def test_purchase_products(self):
        self.__trade_control_mock.get_instance().purchase_products = MagicMock(return_value=[])
        res = self.__guest_role.purchase_products()
        self.assertEqual([], res)

    def tearDown(self):
        self.__trade_control_mock.__delete__()
        self.__security_mock.__delete__()

    def __repr__(self):
        return repr("GuestRoleTest")

    if __name__ == '__main__':
        unittest.main()
Exemplo n.º 12
0
def view_shopping_cart():
    response = GuestRole.view_shopping_cart()
    return jsonify(data=response["response"], msg=response["msg"])
Exemplo n.º 13
0
def display_stores():
    response = GuestRole.display_stores()  # BUG
    return jsonify(data=response)