Пример #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))
Пример #2
0
 def test_insufficient_funds(self):
     self.command('!create')
     self.set_balance(5000000)
     self.command('!createfirm Foobar')
     replies = self.command('!upgrade')
     self.assertEqual(len(replies), 1)
     self.assertEqual(replies[0], message.modify_upgrade_insufficient_funds_org(MockFirm('Foobar', balance=1000), 4000000))