def test_percent_value_lte_hundred(self):
     """
     Discount Code Validate Percentage Value - Tests if function runs without an exception
     :return:
     """
     schema = DiscountCodeSchemaTicket()
     original_data = {'data': {}}
     data = {'type': 'percent', 'value': 90, 'tickets': []}
     DiscountCodeSchemaTicket.validate_value(schema, data, original_data)
 def test_percent_value_gt_hundred(self):
     """
     Discount Code Validate Percentage Value - Tests if exception is raised when percentage value is greater than 100
     :return:
     """
     schema = DiscountCodeSchemaTicket()
     original_data = {'data': {}}
     data = {'type': 'percent', 'value': 110, 'tickets': []}
     with self.assertRaises(UnprocessableEntityError):
         DiscountCodeSchemaTicket.validate_value(schema, data, original_data)
    def test_amount_lte_ticket_price(self):
        """
        Discount Code Validate Amount Value - Tests if function runs without an exception
        :return:
        """
        with self.app.test_request_context():
            TicketFactory(price=100)

            schema = DiscountCodeSchemaTicket()
            original_data = {'data': {}}
            data = {'type': 'amount', 'value': 70, 'tickets': ['1']}
            DiscountCodeSchemaTicket.validate_value(schema, data,
                                                    original_data)
    def test_free_ticket(self):
        """
        Discount Code Validate Amount Value - Tests exception when discount code is created for free ticket
        :return:
        """
        with self.app.test_request_context():
            TicketFactory(price=0)

            schema = DiscountCodeSchemaTicket()
            original_data = {'data': {}}
            data = {'type': 'amount', 'value': 150, 'tickets': ['1']}
            with pytest.raises(UnprocessableEntityError):
                DiscountCodeSchemaTicket.validate_value(
                    schema, data, original_data)
    def test_amount_gt_ticket_price(self):
        """
        Discount Code Validate Amount Value - Tests if exception is raised when discount value is gt ticket price
        :return:
        """
        with self.app.test_request_context():
            TicketFactory(price=100)

            schema = DiscountCodeSchemaTicket()
            original_data = {'data': {}}
            data = {'type': 'amount', 'value': 150, 'tickets': ['1']}
            with pytest.raises(UnprocessableEntityError):
                DiscountCodeSchemaTicket.validate_value(
                    schema, data, original_data)