def add_test_data_to_db(): """Adds test data to the database, create_db must be called first. """ ships = [ {'name': 'Achilles', 'sh_class': 'Leander', 'type': 'Light Cruiser', 'country': 'NZL', 'build_date': '1000-01-01'}, {'name': 'Admiral Graf Spee', 'sh_class': 'Deutschland', 'type': 'Heavy Cruiser', 'country': 'GER', 'build_date': '1000-01-01'}, {'name': 'Cumberland', 'sh_class': 'County-Kent', 'type': 'Heavy Cruiser', 'country': 'UK', 'build_date': '1000-01-01'}, {'name': 'Exeter', 'sh_class': 'York', 'type': 'Heavy Cruiser', 'country': 'UK', 'build_date': '1000-01-01'}, {'name': 'Ajax', 'sh_class': 'Leander', 'type': 'Light Cruiser', 'country': 'UK', 'build_date': '1000-01-01'} ] battles = [ {'name': 'River Platte', 'conflict': 'WWII', 'date': '1939-12-13'}, {'name': 'Battle of the Java Sea', 'conflict': 'WWII', 'date': '1942-02-27'} ] with models.database.atomic(): Ship.insert_many(ships).execute() Battle.insert_many(battles).execute() river_platte = Battle.select().where(Battle.name == 'River Platte').get() java_sea = Battle.select().where(Battle.name == 'Battle of the Java Sea').get() for ship in Ship.select(): if ship.name == 'Ajax': ShipBattle.create(ship=ship, battle=java_sea) ShipBattle.create(ship=ship, battle=river_platte) models.database.close()
def write_logs_in_file(self, log_file): today = datetime.date.today() date_from = today - datetime.timedelta(days=31) battles = Battle.select().filter( Battle.happened_at >= date_from).order_by( Battle.happened_at.desc()) rows = [ ('Дата сражения', 'Продолжительность (шагов игры)', 'Первый результат', 'Второй результат', 'Третий результат', 'Четвертый результат'), [ '---', ] * 6, ] for battle in battles: battle_result = json.loads(battle.result) collected = list(battle_result['collected'].items()) collected.sort(key=lambda x: -x[1]) dead = battle_result.get('dead') cells = [ battle.happened_at.strftime('%Y-%m-%d %H:%M:%S'), str(battle_result['game_steps']), ] for student, result in collected: cell = f'{result} - {student}' if dead and dead[student]: cell += ' /dead/' cells.append(cell) rows.append(cells) with open(log_file, 'w') as table: table.write( f"##### Результаты соревнований с {date_from.strftime('%d.%m.%Y')} " f"по {today.strftime('%d.%m.%Y')}\n\n") for row in rows: table.write('{}\n'.format(' | '.join(row)))
def test_reset_db_message(self, create_db, clean_up): db_creator = DbCreatorActor.start(self._db_path) db_creator.tell(PopulateDbMessage(None).to_dict()) db_creator.ask(ResetDbMessage(None).to_dict()) assert len(Ship.select()) == 0 assert len(Battle.select()) == 0 assert len(ShipBattle.select()) == 0 db_creator.stop() clean_up()
def test_populate_db_message(self, create_db, clean_up): db_creator = DbCreatorActor.start(self._db_path) db_creator.ask(PopulateDbMessage(None).to_dict()) assert self._db_path.exists() assert len(Ship.select()) == 5 assert len(Battle.select()) == 2 assert len(ShipBattle.select()) == 6 db_creator.stop() clean_up()