def update_monster(id): payload = request.get_json() if monster := Monster.find(id): if name := payload.get("name", None): if checker := Monster.find_by(name): if monster.id != checker.id: abort( Response( response= f"Name: '{name}' belongs to another monster.", status=405, ))
def add_monster(): payload = request.get_json() if not payload: abort(400) name = payload.get("name", None) if Monster.find_by(name): abort( Response( response=f"Monster '{name}' already created.", status=405, )) race = payload.get("race", None) health_points = payload.get("health_points", None) armor_points = payload.get("armor_points", None) attack_damage = payload.get("attack_damage", None) xp_drop = payload.get("xp_drop", None) monster = Monster( name=name, race=race, health_points=health_points, armor_points=armor_points, attack_damage=attack_damage, xp_drop=xp_drop, ) monster.insert() return jsonify(monster.short())
def test_ok_found_monster(self): monster = Monster.find_by("monster_name") id = monster.id response = self.client().get( f"/monsters/{id}", headers=self.headers, ) self.assertEqual(response.status_code, 200)
def test_ok_add_monster_to_dungeon(self): monster = Monster.find_by("monster_name") monster_id = monster.id dungeon = Dungeon.find_by(1) dungeon_id = dungeon.id response = self.client().post( f"/dungeons/{dungeon_id}/monsters", headers=self.headers, json={"monster_id": monster_id}, ) self.assertEqual(response.status_code, 200)
def test_ok_remove_monster_to_dungeon(self): monster = Monster.find_by("monster_name") monster_id = monster.id dungeon = Dungeon.find_by(1) dungeon_id = dungeon.id dungeon.monsters.append(monster) response = self.client().delete( f"/dungeons/{dungeon_id}/monsters", headers=self.headers, json={"monster_id": monster_id}, ) self.assertEqual(response.status_code, 200)
def test_ok_create_monster(self): payload = { "name": "new_name", "race": "monster_race", } response = self.client().post( "/monsters", headers=self.headers, json=payload, ) self.assertEqual(response.status_code, 200) monster = Monster.find_by("new_name") monster.delete()
def test_ok_update_monster(self): monster = Monster.find_by("monster_name") id = monster.id payload = { "name": "monster_name", "attack_damage": "3", "xp_drop": "100", } response = self.client().patch( f"/monsters/{id}", headers=self.headers, json=payload, ) self.assertEqual(response.status_code, 200)
def tearDown(cls): if monster := Monster.find_by("monster_name"): monster.delete()