From 0b3a56d031f65db47f8aad84577c7ef1f0eeae5c Mon Sep 17 00:00:00 2001 From: mgwynn Date: Fri, 11 Jun 2021 15:00:57 -0400 Subject: [PATCH] Incorporating review comments. Adding checks for json contents. Added class. Minor reformatting. --- scripts/o3de/o3de/project_properties.py | 2 +- .../tests/unit_test_project_properties.py | 72 ++++++++++++------- 2 files changed, 46 insertions(+), 28 deletions(-) diff --git a/scripts/o3de/o3de/project_properties.py b/scripts/o3de/o3de/project_properties.py index aefe5c53e9..166ae9ac5f 100644 --- a/scripts/o3de/o3de/project_properties.py +++ b/scripts/o3de/o3de/project_properties.py @@ -58,7 +58,7 @@ def edit_project_props(proj_path, proj_name, new_origin, new_display, else: logger.warning(f'user_tags property not found for removal of {remove_tags}.') if replace_tags: - tag_list = [replace_tags] if isinstance(replace_tags, str) else replace_tags + tag_list = replace_tags.split() if isinstance(replace_tags, str) else replace_tags proj_json['user_tags'] = tag_list manifest.save_o3de_manifest(proj_json, pathlib.Path(proj_path) / 'project.json') diff --git a/scripts/o3de/tests/unit_test_project_properties.py b/scripts/o3de/tests/unit_test_project_properties.py index 957b5a19df..d467d9c3d0 100644 --- a/scripts/o3de/tests/unit_test_project_properties.py +++ b/scripts/o3de/tests/unit_test_project_properties.py @@ -31,34 +31,52 @@ TEST_DEFAULT_PROJECT_DATA = { "icon_path": "preview.png" } -def get_project_json_data(project_name, project_path) -> str: - if project_path == '': - return None - return TEST_DEFAULT_PROJECT_DATA +@pytest.fixture(scope='class') +def init_project_json_data(request): + class ProjectJsonData: + def __init__(self): + self.data = TEST_DEFAULT_PROJECT_DATA + request.cls.project_json = ProjectJsonData() -def save_o3de_manifest(new_proj_data, project_path): - temp = new_proj_data +@pytest.mark.usefixtures('init_project_json_data') +class TestEditProjectProperties: + @pytest.mark.parametrize("project_path, project_name, project_origin, project_display,\ + project_summary, project_icon, add_tags, delete_tags,\ + replace_tags, expected_result", [ + pytest.param(pathlib.PurePath('E:/TestProject'), + 'test', 'editing by pytest', 'Unit Test', 'pyTest project', 'pytest.bmp', 'A B C', + 'B', 'D E F', 0), + pytest.param('', + 'test', 'editing by pytest', 'Unit Test', 'pyTest project', 'pytest.bmp', 'A B C', + 'B', 'D E F', 1) + ] + ) + def test_edit_project_properties(self,project_path, project_name, project_origin, project_display, + project_summary, project_icon, add_tags, delete_tags, + replace_tags, expected_result): -@pytest.mark.parametrize("project_path, project_name, project_origin, project_display,\ - project_summary, project_icon, add_tags, delete_tags,\ - replace_tags, expected_result", [ - pytest.param(pathlib.PurePath('E:/TestProject'), - 'test', 'editing by pytest', 'Unit Test', 'pyTest project', 'pytest.bmp', 'A B C', - 'B', 'D E F', 0), - pytest.param('', - 'test', 'editing by pytest', 'Unit Test', 'pyTest project', 'pytest.bmp', 'A B C', - 'B', 'D E F', 1) - ] -) + def get_project_json_data(project_name: str, project_path) -> dict: + if not project_path: + self.project_json.data = None + return None + return self.project_json.data -def test_edit_project_properties(project_path, project_name, project_origin, project_display, - project_summary, project_icon, add_tags, delete_tags, - replace_tags, expected_result): - - with patch('o3de.manifest.get_project_json_data', side_effect=get_project_json_data) as get_project_json_data_patch, \ - patch('o3de.manifest.save_o3de_manifest', side_effect=save_o3de_manifest) as save_o3de_manifest_patch: - result = project_properties.edit_project_props(project_path, project_name, project_origin, - project_display, project_summary, project_icon, - add_tags, delete_tags, replace_tags) - assert result == expected_result + def save_o3de_manifest(new_proj_data: dict, project_path) -> None: + self.project_json.data = new_proj_data + with patch('o3de.manifest.get_project_json_data', side_effect=get_project_json_data) as get_project_json_data_patch, \ + patch('o3de.manifest.save_o3de_manifest', side_effect=save_o3de_manifest) as save_o3de_manifest_patch: + result = project_properties.edit_project_props(project_path, project_name, project_origin, + project_display, project_summary, project_icon, + add_tags, delete_tags, replace_tags) + assert result == expected_result + if project_path: + assert self.project_json.data + assert self.project_json.data.get('origin', '') == project_origin + assert self.project_json.data.get('display_name', '') == project_display + assert self.project_json.data.get('summary', '') == project_summary + assert self.project_json.data.get('icon_path', '') == project_icon + expected_tag_set = set(replace_tags.split()) + assert expected_tag_set.issubset(self.project_json.data.get('user_tags', set())) + else: + assert not self.project_json.data