def test_if_logged_in_then_can_retrieve_balance(self):
        self.login("17simple")
        res = self.get("/associations/marketplace/biero/balance/17simple/")
        self.assertStatusCode(res, 200)

        content = json.loads(res.content)
        self.assertEqual(
            Decimal(content["balance"]),
            compute_balance(User.objects.get(pk="17simple"),
                            Marketplace.objects.get(pk="biero")),
        )
        def check_funding(biero_funding):
            self.login(consumer.id)
            self.assertEqual(compute_balance(consumer, biero), biero_funding)

            biero_content = json.loads(
                self.get(
                    f"/associations/marketplace/biero/balance/{consumer.id}/").
                content)

            biero_balance = (0 if biero_content == [] else Decimal(
                biero_content["balance"]))
            self.assertEqual(biero_balance, biero_funding)
 def test_balance_widget(self):
     for user in ALL_USERS:
         self.login(user)
         res = self.balance_widget()
         self.assertStatusCode(res, 200)
         self.assertEqual(
             res.data["balances"],
             [{
                 "balance": compute_balance(user, marketplace.id),
                 "marketplace": marketplace.id,
                 "user": user,
             } for marketplace in Marketplace.objects.all()],
         )
    def test_if_library_administrator_then_can_retrieve_all_users_balances(
            self):
        self.login("17market_biero")
        res = self.get("/associations/marketplace/biero/balance/")
        self.assertStatusCode(res, 200)

        content = json.loads(res.content)["balances"]

        for market_balance in content:
            self.assertEqual(market_balance["marketplace"], "biero")
            user_id = market_balance["user"]
            self.assertEqual(
                Decimal(market_balance["balance"]),
                compute_balance(
                    User.objects.get(pk=user_id),
                    Marketplace.objects.get(pk=market_balance["marketplace"]),
                ),
            )