def test_create_node_and_save(tmp_path, echoes_game_data, skip_qtbot): # Setup tmp_path.joinpath("test-game", "game").mkdir(parents=True) tmp_path.joinpath("human-readable").mkdir() db_path = Path(tmp_path.joinpath("test-game", "game")) window = DataEditorWindow(echoes_game_data, db_path, True, True) window.set_warning_dialogs_disabled(True) skip_qtbot.addWidget(window) # Run window._do_create_node("Some Node", None) window._save_as_internal_database() # Assert exported_data = data_reader.read_split_file(db_path) exported_game = data_reader.decode_data(exported_data) pretty_print.write_human_readable_game(exported_game, tmp_path.joinpath("human-readable")) new_files = { f.name: f.read_text("utf-8") for f in tmp_path.joinpath("human-readable").glob("*.txt") } existing_files = { f.name: f.read_text("utf-8") for f in tmp_path.joinpath("test-game", "game").glob("*.txt") } assert list(new_files.keys()) == list(existing_files.keys()) assert new_files == existing_files
def test_create_new_dock(skip_qtbot, tmp_path, blank_game_data): db_path = Path(tmp_path.joinpath("test-game", "game")) game_data = default_data.read_json_then_binary(RandovaniaGame.BLANK)[1] window = DataEditorWindow(game_data, db_path, True, True) window.set_warning_dialogs_disabled(True) skip_qtbot.addWidget(window) window.focus_on_area_by_name("Back-Only Lock Room") current_area = window.current_area target_area = window.game_description.world_list.area_by_area_location( AreaIdentifier("Intro", "Explosive Depot")) assert current_area.node_with_name("Dock to Explosive Depot") is None assert target_area.node_with_name("Dock to Back-Only Lock Room") is None # Run window._create_new_dock(NodeLocation(0, 0, 0), target_area) # Assert new_node = current_area.node_with_name("Dock to Explosive Depot") assert new_node is not None assert window.current_node is new_node assert target_area.node_with_name( "Dock to Back-Only Lock Room") is not None