def test_spend_should_raise_exception_when_user_does_not_have_enough_coins(
         self):
     wallet = Wallet.get_users_wallet(self.user)
     wallet.add(6)
     with self.assertRaises(CannotAffordError):
         wallet = Wallet.get_users_wallet(self.user)
         wallet.spend(10)
Пример #2
0
    def test_success_multiple_listings(self):
        Listing.objects.create(item=self.item,
                               count=20,
                               price=20,
                               direction=Listing.Direction.SELL,
                               submitter=self.seller)
        Listing.objects.create(item=self.item,
                               count=20,
                               price=10,
                               direction=Listing.Direction.SELL,
                               submitter=self.seller)
        wallet = Wallet.get_users_wallet(self.user)
        wallet.add(200 + 100)

        result = self.item.make_buy_transaction(self.user, count=25)
        self.assertEquals(25, result['items_purchased'])
        self.assertEquals(200 + 100, result['coins_spent'])

        self.assertEqual(0, Wallet.get_users_wallet(self.user).coins)
        self.assertEqual(300, Wallet.get_users_wallet(self.seller).coins)
        self.assertEqual(
            25,
            InventoryItem.objects.get(user=self.user, item=self.item).count)
        self.assertEqual(1, Listing.objects.filter(item=self.item).count())
        self.assertEqual(15,
                         Listing.objects.filter(item=self.item).first().count)
        self.assertEqual(20,
                         Listing.objects.filter(item=self.item).first().price)
 def test_spend(self):
     wallet = Wallet.get_users_wallet(self.user)
     wallet.add(6)
     wallet = Wallet.get_users_wallet(self.user)
     wallet.spend(5)
     wallet = Wallet.get_users_wallet(self.user)
     self.assertEqual(1, wallet.coins)
Пример #4
0
    def test_user_has_no_coins(self):
        listing = Listing.objects.create(item=self.item,
                                         count=5,
                                         price=10,
                                         direction=Listing.Direction.SELL,
                                         submitter=self.seller)

        result = self.item.make_buy_transaction(self.user, count=5)
        self.assertEquals(0, result['items_purchased'])
        self.assertEquals(0, result['coins_spent'])

        self.assertEqual(0, Wallet.get_users_wallet(self.user).coins)
        self.assertEqual(0, Wallet.get_users_wallet(self.seller).coins)
        self.assertFalse(
            InventoryItem.objects.filter(user=self.user,
                                         item=self.item).exists())
        self.assertEqual(listing, Listing.objects.get(pk=listing.pk))
Пример #5
0
def dashboard(request):
    sell_listings = Listing.objects.filter(submitter=request.user, direction=Listing.Direction.SELL).order_by('-pk')
    buy_listings = Listing.objects.filter(submitter=request.user, direction=Listing.Direction.BUY).order_by('-pk')
    inventory_items = InventoryItem.objects.filter(user=request.user)
    return render(request, 'app/dashboard.html', {
        'wallet': Wallet.get_users_wallet(request.user),
        'sell_listings': sell_listings,
        'buy_listings': buy_listings,
        'inventory_items': inventory_items,
    })
Пример #6
0
 def test_cancel_buy_listing(self):
     listing = Listing.objects.create(item=self.item,
                                      count=5,
                                      price=10,
                                      submitter=self.user,
                                      direction=Listing.Direction.BUY)
     listing.cancel()
     self.assertEqual(0, Listing.objects.count())
     self.assertEqual(50, Wallet.get_users_wallet(self.user).coins)
     self.assertEqual(0, InventoryItem.objects.count())
Пример #7
0
    def test_success_listing_deleted(self):
        Listing.objects.create(item=self.item,
                               count=5,
                               price=10,
                               direction=Listing.Direction.SELL,
                               submitter=self.seller)
        wallet = Wallet.get_users_wallet(self.user)
        wallet.add(50)

        result = self.item.make_buy_transaction(self.user, count=5)
        self.assertEquals(5, result['items_purchased'])
        self.assertEquals(50, result['coins_spent'])

        self.assertEqual(0, Wallet.get_users_wallet(self.user).coins)
        self.assertEqual(50, Wallet.get_users_wallet(self.seller).coins)
        self.assertEqual(
            5,
            InventoryItem.objects.get(user=self.user, item=self.item).count)
        self.assertFalse(Listing.objects.filter(item=self.item).exists())
Пример #8
0
    def test_partial_success_not_enough_listings(self):
        Listing.objects.create(item=self.item,
                               count=20,
                               price=20,
                               direction=Listing.Direction.SELL,
                               submitter=self.seller)
        Listing.objects.create(item=self.item,
                               count=20,
                               price=10,
                               direction=Listing.Direction.SELL,
                               submitter=self.seller)
        wallet = Wallet.get_users_wallet(self.user)
        wallet.add(800)

        result = self.item.make_buy_transaction(self.user, count=50)
        self.assertEquals(40, result['items_purchased'])
        self.assertEquals(200 + 400, result['coins_spent'])

        self.assertEqual(200, Wallet.get_users_wallet(self.user).coins)
        self.assertEqual(600, Wallet.get_users_wallet(self.seller).coins)
        self.assertEqual(
            40,
            InventoryItem.objects.get(user=self.user, item=self.item).count)
        self.assertEqual(0, Listing.objects.filter(item=self.item).count())
 def test_add(self):
     wallet = Wallet.get_users_wallet(self.user)
     wallet.add(6)
     wallet = Wallet.get_users_wallet(self.user)
     self.assertEqual(6, wallet.coins)
Пример #10
0
 def test_get_users_wallet(self):
     wallet = Wallet.get_users_wallet(self.user)
     self.assertEqual(self.user, wallet.user)
     self.assertEqual(0, wallet.coins)