def test_invalid_change_due(self):
     self.sales_data["change_due"] = -399
     response = self.query_with_token(self.access_token,
                                      create_sale.format(**self.sales_data))
     self.assertIsNotNone(response['errors'])
     self.assertEqual(response['errors'][0]['message'],
                      "The Change due should not be less than 0")
 def test_invalid_paid_amount(self):
     self.sales_data["paid_amount"] = -590
     response = self.query_with_token(self.access_token,
                                      create_sale.format(**self.sales_data))
     self.assertIsNotNone(response['errors'])
     self.assertEqual(response['errors'][0]['message'],
                      "The paid amount should be greater than 1")
 def test_with_invalid_payment_method(self):
     self.sales_data['payment_method'] = "credit-card-cash"
     self.sales_data['amount_to_pay'] = faker.random_int(min=1, max=100)
     response = self.query_with_token(self.access_token,
                                      create_sale.format(**self.sales_data))
     message = SALES_ERROR_RESPONSES['invalid_payment']
     self.assertEqual(response['errors'][0]['message'], message)
 def test_invalid_discount(self):
     self.sales_data["discount_total"] = -48.5
     response = self.query_with_token(self.access_token,
                                      create_sale.format(**self.sales_data))
     self.assertIsNotNone(response['errors'])
     self.assertEqual(response['errors'][0]['message'],
                      "Discount must be greater between 0 and 100")
 def test_buy_items_with_less_credit(self):
     self.sales_data['payment_method'] = "credit"
     self.sales_data['amount_to_pay'] = faker.random_int(min=600)
     response = self.query_with_token(self.access_token,
                                      create_sale.format(**self.sales_data))
     message = SALES_ERROR_RESPONSES['less_credit']
     self.assertEqual(response['errors'][0]['message'], message)
 def test_create_sale_successfully(self):
     self.create_receipt_template()
     response = self.query_with_token(self.access_token,
                                      create_sale.format(**self.sales_data))
     message = SALES_SUCCESS_RESPONSES["create_sales_success"]
     self.assertNotIn("errors", response)
     self.assertEqual(response['data']['createSale']['message'], message)
 def test_non_existing_batch(self):
     self.sales_data["batchId"] = 10000
     response = self.query_with_token(self.access_token,
                                      create_sale.format(**self.sales_data))
     self.assertIsNotNone(response['errors'])
     self.assertEqual(
         response['errors'][0]['message'],
         ERROR_RESPONSES['no_matching_ids'].format('BatchInfo', 10000))
 def test_buy_items_with_credit(self):
     self.sales_data['payment_method'] = "credit"
     self.sales_data['amount_to_pay'] = faker.random_int(min=1, max=100)
     response = self.query_with_token(self.access_token,
                                      create_sale.format(**self.sales_data))
     message = SALES_SUCCESS_RESPONSES["create_sales_success"]
     self.assertNotIn("errors", response)
     self.assertEqual(response['data']['createSale']['message'], message)
 def test_invalid_product_discount(self):
     self.sales_data["discount"] = -12
     response = self.query_with_token(self.access_token,
                                      create_sale.format(**self.sales_data))
     self.assertIsNotNone(response['errors'])
     self.assertEqual(
         response['errors'][0]['message'],
         SALES_ERROR_RESPONSES['negative_discount'].format(
             self.sales_data['batchId']))
 def test_less_stock_than_actual_sale(self):
     self.sales_data["quantity"] = 500
     response = self.query_with_token(self.access_token,
                                      create_sale.format(**self.sales_data))
     self.assertIsNotNone(response['errors'])
     self.assertEqual(
         response['errors'][0]['message'],
         SALES_ERROR_RESPONSES['less_quantities'].format(
             self.sales_data['batchId']))
 def test_mail_receipt_to_customer(self):
     self.create_receipt_template()
     sale_creation_mutation = self.query_with_token(
         self.access_token,
         create_sale.format(**self.sales_data,
                            customer_id=self.customer_1.id))
     receipt_id = sale_creation_mutation['data']['createSale']['receipt'][
         'id']
     response = self.query_with_token(
         self.access_token, mail_receipt.format(receipt_id=receipt_id))
     self.assertEqual(RECEIPT_SUCCESS_RESPONSES["mailer_success"],
                      response['data']['mailReceipt']['message'])
 def test_mail_receipt_without_email(self):
     self.create_receipt_template()
     sale_creation_mutation = self.query_with_token(
         self.access_token,
         create_sale.format(**self.sales_data,
                            customer_id=self.customer.id))
     receipt_id = sale_creation_mutation['data']['createSale']['receipt'][
         'id']
     response = self.query_with_token(
         self.access_token, mail_receipt.format(receipt_id=receipt_id))
     self.assertEqual(RECEIPT_ERROR_RESPONSES['mailer_no_email'],
                      response['errors'][0]['message'])
    def test_buy_items_with_wrong_credit_currency(self):
        wallet_2 = CustomerCreditFactory()

        sales_data_2 = self.sales_data

        sales_data_2['payment_method'] = "credit"
        sales_data_2['amount_to_pay'] = faker.random_int(min=1, max=100)
        sales_data_2['customer_id'] = wallet_2.customer_id
        response = self.query_with_token(self.access_token,
                                         create_sale.format(**sales_data_2))
        message = SALES_ERROR_RESPONSES['wrong_currency']
        self.assertEqual(response['errors'][0]['message'], message)