Esempio n. 1
0
 def test_purchase(self):
     account_obj = AccountFactory.create()
     wallet_obj = WalletFactory.create(owner_id=account_obj.id)
     WalletTrxFactory.create(
         wallet=wallet_obj,
         amount=Money(1000, 'SEK'),
         trx_status=TrxStatus.FINALIZED
     )
     product_obj1 = ProductFactory.create(
         code='1337733113370',
         name='Billys Original',
         price=Money(13, 'SEK')
     )
     product_obj2 = ProductFactory.create(
         code='7331733113370',
         name='Kebaba',
         price=Money(30, 'SEK')
     )
     products = [
         (product_obj1.id, 3),
         (product_obj2.id, 1),
     ]
     api.purchase(account_obj.id, products)
     product_obj1.refresh_from_db()
     product_obj2.refresh_from_db()
     self.assertEqual(product_obj1.qty, -3)
     self.assertEqual(product_obj2.qty, -1)
     _, balance = wallet_api.get_balance(account_obj.id)
     self.assertEqual(balance, Money(931, 'SEK'))
Esempio n. 2
0
 def test_list_purchases(self):
     account_obj = AccountFactory.create()
     wallet_obj = WalletFactory.create(owner_id=account_obj.id)
     WalletTrxFactory.create(wallet=wallet_obj,
                             amount=Money(1000, 'SEK'),
                             trx_status=TrxStatus.FINALIZED)
     product_obj1 = ProductFactory.create(code='1337733113370',
                                          name='Billys Original',
                                          price=Money(13, 'SEK'))
     products = [
         (product_obj1.id, 3),
     ]
     api.purchase(account_obj.id, products)
     objs = api.list_purchases(account_obj.id)
     self.assertEqual(len(objs), 1)
Esempio n. 3
0
 def test_cancel_card_purchase(self):
     account_obj = AccountFactory.create()
     wallet_obj = WalletFactory.create(owner_id=account_obj.id)
     WalletTrxFactory.create(wallet=wallet_obj,
                             amount=Money(1000, 'SEK'),
                             trx_status=TrxStatus.FINALIZED)
     product_obj1 = ProductFactory.create(code='1337733113370',
                                          name='Billys Original',
                                          price=Money(13, 'SEK'))
     product_obj2 = ProductFactory.create(code='7331733113370',
                                          name='Kebaba',
                                          price=Money(30, 'SEK'))
     products = [
         (product_obj1.id, 3),
         (product_obj2.id, 1),
     ]
     purchase_obj = api.purchase(account_obj.id, products)
     api.cancel_purchase(purchase_obj.id)
     purchase_obj, _ = api.get_purchase(purchase_obj.id)
     self.assertEqual(purchase_obj.status, enums.PurchaseStatus.CANCELED)
     product_obj1.refresh_from_db()
     product_obj2.refresh_from_db()
     self.assertEqual(product_obj1.qty, 0)
     self.assertEqual(product_obj2.qty, 0)
     _, balance = wallet_api.get_balance(account_obj.id)
     self.assertEqual(balance, Money(1000, 'SEK'))
     _, balance = wallet_api.get_balance(settings.FOOBAR_MAIN_WALLET)
     self.assertEqual(balance, Money(0, 'SEK'))
Esempio n. 4
0
 def test_purchase(self):
     account_obj = AccountFactory.create()
     wallet_obj = WalletFactory.create(owner_id=account_obj.id)
     WalletTrxFactory.create(
         wallet=wallet_obj,
         amount=Money(1000, 'SEK'),
         trx_type=TrxType.FINALIZED
     )
     product_obj1 = ProductFactory.create(
         code='1337733113370',
         name='Billys Original',
         price=Money(13, 'SEK')
     )
     product_obj2 = ProductFactory.create(
         code='7331733113370',
         name='Kebaba',
         price=Money(30, 'SEK')
     )
     products = [
         (product_obj1.id, 3),
         (product_obj2.id, 1),
     ]
     purchase_obj = api.purchase(account_obj.id, products)
     self.assertEqual(purchase_obj.amount, Money(69, 'SEK'))
     product_obj1.refresh_from_db()
     product_obj2.refresh_from_db()
     self.assertEqual(product_obj1.qty, -3)
     self.assertEqual(product_obj2.qty, -1)
     _, balance = wallet_api.get_balance(account_obj.id)
     self.assertEqual(balance, Money(931, 'SEK'))
     _, balance = wallet_api.get_balance(settings.FOOBAR_MAIN_WALLET)
     self.assertEqual(balance, Money(69, 'SEK'))
Esempio n. 5
0
 def test_cancel_cash_purchase(self):
     product_obj1 = ProductFactory.create(
         code='1337733113370',
         name='Billys Original',
         price=Money(13, 'SEK')
     )
     product_obj2 = ProductFactory.create(
         code='7331733113370',
         name='Kebaba',
         price=Money(30, 'SEK')
     )
     products = [
         (product_obj1.id, 3),
         (product_obj2.id, 1),
     ]
     purchase_obj = api.purchase(None, products)
     api.cancel_purchase(purchase_obj.id)
     purchase_obj, _ = api.get_purchase(purchase_obj.id)
     self.assertEqual(purchase_obj.status, enums.PurchaseStatus.CANCELED)
     product_obj1.refresh_from_db()
     product_obj2.refresh_from_db()
     self.assertEqual(product_obj1.qty, 0)
     self.assertEqual(product_obj2.qty, 0)
     _, balance = wallet_api.get_balance(settings.FOOBAR_CASH_WALLET)
     self.assertEqual(balance, Money(0, 'SEK'))
Esempio n. 6
0
 def create(self, request):
     serializer = PurchaseSerializer(data=request.data)
     if not serializer.is_valid():
         return Response(
             serializer.errors,
             status=status.HTTP_400_BAD_REQUEST
         )
     try:
         api.purchase(**serializer.as_purchase_kwargs())
     except InsufficientFunds:
         return Response(
             'Insufficient funds',
             status=status.HTTP_400_BAD_REQUEST
         )
     return Response(
         data=serializer.data,
         status=status.HTTP_200_OK
     )
Esempio n. 7
0
 def test_cash_purchase(self):
     product_obj1 = ProductFactory.create(code='1337733113370',
                                          name='Billys Original',
                                          price=Money(13, 'SEK'))
     product_obj2 = ProductFactory.create(code='7331733113370',
                                          name='Kebaba',
                                          price=Money(30, 'SEK'))
     products = [
         (product_obj1.id, 3),
         (product_obj2.id, 1),
     ]
     api.purchase(None, products)
     product_obj1.refresh_from_db()
     product_obj2.refresh_from_db()
     self.assertEqual(product_obj1.qty, -3)
     self.assertEqual(product_obj2.qty, -1)
     _, balance = wallet_api.get_balance(settings.FOOBAR_CASH_WALLET)
     self.assertEqual(balance, Money(69, 'SEK'))
Esempio n. 8
0
 def create(self, request):
     serializer = PurchaseRequestSerializer(data=request.data)
     serializer.is_valid(raise_exception=True)
     try:
         purchase_obj = api.purchase(**serializer.as_purchase_kwargs())
     except InsufficientFunds:
         return Response('Insufficient funds',
                         status=status.HTTP_400_BAD_REQUEST)
     serializer = PurchaseSerializer(purchase_obj)
     return Response(serializer.data, status=status.HTTP_200_OK)
Esempio n. 9
0
 def test_get_purchase(self):
     account_obj = AccountFactory.create()
     wallet_obj = WalletFactory.create(owner_id=account_obj.id)
     WalletTrxFactory.create(
         wallet=wallet_obj,
         amount=Money(1000, 'SEK'),
         trx_type=TrxType.FINALIZED
     )
     product_obj1 = ProductFactory.create(
         code='1337733113370',
         name='Billys Original',
         price=Money(13, 'SEK')
     )
     products = [
         (product_obj1.id, 3),
     ]
     purchase_obj = api.purchase(account_obj.id, products)
     obj = api.get_purchase(purchase_obj.id)
     self.assertIsNotNone(obj)