Esempio n. 1
0
    def test_cmd_reload_funds(self):
        # Should reload to the command setting
        command_attributes = {
            'reload_amount': 100,
            'reload_threshold': 99
        }
        user = MockUser()
        comment = MockComment(author=user)
        economy = Economy(MockReddit(), self.BASE_CONFIG)

        self.assertEqual(len(comment.replies), 0)

        economy.cmd_reload_funds(comment, command_attributes)
        inventory = economy.retrieve_user_inventory(user)
        self.assertEqual(inventory['funds_available'], 100)
        self.assertEqual(len(comment.replies), 1)
        self.assertIn('funds were reloaded', comment.last_reply)

        # Should not reload if over the threshold
        economy.cmd_reload_funds(comment, command_attributes)
        inventory = economy.retrieve_user_inventory(user)

        self.assertEqual(inventory['funds_available'], 100)
        self.assertEqual(len(comment.replies), 2)
        self.assertIn("funds weren't reloaded", comment.last_reply)
Esempio n. 2
0
    def test_cmd_buy(self):
        # Should purchase if the user has the funds available
        buy_command_attributes = {
            'text': '!buy',
            'item_price': 10
        }

        reload_command_attributes = {
            'reload_amount': 100,
            'reload_threshold': 1000000
        }

        user = MockUser()
        comment = MockComment(author=user, body='!buy 10')
        economy = Economy(MockReddit(), self.BASE_CONFIG)

        self.assertEqual(len(comment.replies), 0)

        economy.cmd_reload_funds(comment, reload_command_attributes)

        inventory = economy.retrieve_user_inventory(user)
        self.assertEqual(inventory['funds_available'], 100)
        self.assertEqual(inventory['items_available'], 0)
        self.assertEqual(len(comment.replies), 1)

        economy.cmd_buy(comment, buy_command_attributes)

        inventory = economy.retrieve_user_inventory(user)
        self.assertEqual(inventory['funds_available'], 0)
        self.assertEqual(inventory['items_available'], 10)
        self.assertEqual(len(comment.replies), 2)
        self.assertIn('inventory has increased', comment.last_reply)

        # Should not allow purchase if no funds
        economy.cmd_buy(comment, buy_command_attributes)

        inventory = economy.retrieve_user_inventory(user)
        self.assertEqual(inventory['funds_available'], 0)
        self.assertEqual(inventory['items_available'], 10)
        self.assertEqual(len(comment.replies), 3)
        self.assertIn('transaction was not completed', comment.last_reply)