Ejemplo n.º 1
0
    def test_cmd_sell(self):
        # Should sell if the user has the items available
        buy_command_attributes = {'text': '!buy', 'item_price': 0}

        sell_command_attributes = {'text': '!sell', 'item_price': 10}

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

        economy.cmd_buy(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(sell_comment.replies), 0)

        economy.cmd_sell(sell_comment, sell_command_attributes)

        inventory = economy.retrieve_user_inventory(user)
        self.assertEqual(inventory['funds_available'], 100)
        self.assertEqual(inventory['items_available'], 0)
        self.assertEqual(len(sell_comment.replies), 1)
        self.assertIn('inventory has decreased', sell_comment.last_reply)

        # Should not allow sell if no items
        economy.cmd_sell(sell_comment, sell_command_attributes)

        inventory = economy.retrieve_user_inventory(user)
        self.assertEqual(inventory['funds_available'], 100)
        self.assertEqual(inventory['items_available'], 0)
        self.assertEqual(len(sell_comment.replies), 2)
        self.assertIn('transaction was not completed', sell_comment.last_reply)
Ejemplo 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)