Esempio n. 1
0
    def upgrade(self, sess, comment, investor):
        if investor.firm == 0:
            return comment.reply_wrap(message.nofirm_failure_org)

        if (investor.firm_role != "ceo") and (investor.firm_role != "cfo"):
            return comment.reply_wrap(message.not_ceo_or_cfo_org)

        firm = sess.query(Firm).\
            filter(Firm.id == investor.firm).\
            first()

        # level 1 = 4,000,000
        # level 2 = 16,000,000
        # level 3 = 64,000,000
        # etc.
        upgrade_cost = 4**(firm.rank + 1) * 1000000
        if firm.balance < upgrade_cost:
            return comment.reply_wrap(
                message.modify_upgrade_insufficient_funds_org(
                    firm, upgrade_cost))

        firm.rank += 1
        firm.balance -= upgrade_cost

        max_members = max_members_for_rank(firm.rank)
        max_execs = max_execs_for_rank(firm.rank)
        max_assocs = max_assocs_for_rank(firm.rank)

        return comment.reply_wrap(
            message.modify_upgrade(firm, max_members, max_execs, max_assocs))
Esempio n. 2
0
    def test_upgrade(self):
        self.command('!create')
        self.set_balance(5000000)
        self.command('!createfirm Foobar')
        self.set_firm_balance('Foobar', 5000000)
        replies = self.command('!upgrade')
        self.assertEqual(len(replies), 1)
        self.assertEqual(replies[0], message.modify_upgrade(MockFirm('Foobar', balance=1000, rank=1), 16, 4))

        sess = self.Session()
        firm = sess.query(Firm).filter(Firm.name == 'Foobar').first()
        self.assertEqual(firm.balance, 1000000)