def test_invalid_ref_number(self, mock_action_get_by_id): """ Invalid ref number, cannot find action """ mock_action_get_by_id.return_value = None with self.assertRaises(ReplyError) as e: Reply.handler("1", "Y", None) self.assertEquals("Reply ref num is invalid. Ref num: 1", e.exception.message)
def test_invalid_response(self, mock_action_get_by_id): """ Response is not Y, y, N, n """ ref = "1" mock_action_get_by_id.return_value = Action() with self.assertRaises(ReplyError) as e: Reply.handler(ref, ["F"], Player()) self.assertEquals(e.exception.message, "Reply {} is invalid. Ref num: {}".\ format("F", ref))
def test_disarm(self, mock_action_get_by_id, mock_disarm_handler): """ Test disarm """ ref = "1" action = Action() action.action = "DISARM" mock_action_get_by_id.return_value = action mock_disarm_handler.return_value = None # Don't care about response because handled by other unit tests. Reply.handler(ref, ["Y"], Player()) mock_disarm_handler.assert_called_once_with(action, "Y")
def test_valid_kill_no_team_push(selfi, mock_action_get_by_id, mock_kill_handler): """ Valid kill, but team not killed """ ref = "1" action = Action() action.action = "KILL" mock_action_get_by_id.return_value = action mock_kill_handler.return_value = None Reply.handler(ref, ["Y"], Player()) mock_kill_handler.assert_called_once_with(action, "Y")
def inner_handler(cls, message): """ Return [(number, msg),...]""" action, params = CommandHandler.get_command(message.Body) attacker = Util.get_attacker(message.From) if action == "KILL": return Kill.handler(attacker, params) elif action[1:] == "REPLY": ref = params.pop(0)[:-1] return Reply.handler(ref, params, attacker) elif action == "BOMB": return Bomb.handler(attacker, params) elif action == "INVUL": return Invul.handler(attacker, params) elif action == "DISARM": return Disarm.handler(attacker, params) elif action == "SNIPE": if message.From != WEI_HAN: raise CommandError(action) sniper = Player.query(Player.codename == params[0]).get() if sniper == None: raise DbError(params[0]) return Snipe.handler(sniper, params[1]) elif action == "?": msg = "Guide for SAMSU Assassins:\n" msg += "KILL <target codename>\n" msg += "BOMB <mm> <dd> <hour> <min> <place>\n" msg += "INVUL <target codename> <mm> <dd> <hour> <min>\n" msg += "DISARM <target codename>\n" msg += "SNIPE - send message and picture to {}\n".format(WEI_HAN) msg += "REPLY - [REPLY <number>] Y or [REPLY <number>] N\n" msg += "If you receive an UNKNOWN ERROR or don't get a message that you expect, contact Wei Han at 312-731-0539." return [(attacker.key.id(), msg)] else: raise CommandError(action)