From e2087511fcd3ac172d0a1787f70db061f95b69f2 Mon Sep 17 00:00:00 2001 From: QXgu Date: Wed, 19 Apr 2023 23:11:56 -0400 Subject: [PATCH 1/5] PILOT-2676: Fix project file listing white page error --- app/services/file_manager/file_list.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/services/file_manager/file_list.py b/app/services/file_manager/file_list.py index f2193b05..5abf963c 100644 --- a/app/services/file_manager/file_list.py +++ b/app/services/file_manager/file_list.py @@ -67,9 +67,10 @@ def list_files_without_pagination(self, paths, zone, page, page_size): def list_files_with_pagination(self, paths, zone, page, page_size): while True: files = self.list_files(paths, zone, page, page_size) - if len(files) < page_size and page == 0: - break - elif len(files) < page_size and page != 0: + file_list = files.split('...')[:-1] if files != '' else [] + if len(file_list) < page_size and page == 0: + choice = ['exit'] + elif len(file_list) < page_size and page != 0: choice = ['previous page', 'exit'] elif page == 0: choice = ['next page', 'exit'] From fc6178b1b647cf67335d9730e26fe2f5ba72be03 Mon Sep 17 00:00:00 2001 From: QXgu Date: Thu, 20 Apr 2023 16:02:22 -0400 Subject: [PATCH 2/5] Add unit test --- tests/app/commands/test_file.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/app/commands/test_file.py b/tests/app/commands/test_file.py index a82fd154..8c96ba36 100644 --- a/tests/app/commands/test_file.py +++ b/tests/app/commands/test_file.py @@ -4,11 +4,13 @@ import click +from app.commands.file import file_list from app.commands.file import file_put from app.commands.file import file_resume from app.services.file_manager.file_upload.models import FileObject from app.services.output_manager.error_handler import ECustomizedError from app.services.output_manager.error_handler import customized_error_msg +from tests.conftest import decoded_token def test_file_upload_command_success_with_attribute(mocker, cli_runner): @@ -59,3 +61,15 @@ def test_resumable_upload_command_failed_with_file_not_exists(mocker, cli_runner result = cli_runner.invoke(file_resume, ['--resumable-manifest', 'test.json', '--thread', 1]) assert result.exit_code == 0 assert result.output == customized_error_msg(ECustomizedError.INVALID_RESUMABLE) + '\n' + + +def test_file_list_with_pagination(mocker, cli_runner): + mocker.patch( + 'app.services.user_authentication.token_manager.SrvTokenManager.decode_access_token', + return_value=decoded_token(), + ) + mock_list = mocker.patch( + 'app.services.file_manager.file_list.SrvFileList.list_files', return_value='...file1 ...file2...' + ) + cli_runner.invoke(file_list, ['testproject/admin', '-z', 'greenroom']) + mock_list.assert_called_once() From 4687a643b38914aa80050d278dc48a48a311a086 Mon Sep 17 00:00:00 2001 From: QXgu Date: Fri, 21 Apr 2023 15:59:12 -0400 Subject: [PATCH 3/5] Update the unit tests --- tests/app/commands/test_file.py | 39 ++++++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/tests/app/commands/test_file.py b/tests/app/commands/test_file.py index 8c96ba36..f9939b79 100644 --- a/tests/app/commands/test_file.py +++ b/tests/app/commands/test_file.py @@ -3,6 +3,7 @@ # Contact Indoc Research for any questions regarding the use of this source code. import click +import questionary from app.commands.file import file_list from app.commands.file import file_put @@ -63,13 +64,41 @@ def test_resumable_upload_command_failed_with_file_not_exists(mocker, cli_runner assert result.output == customized_error_msg(ECustomizedError.INVALID_RESUMABLE) + '\n' -def test_file_list_with_pagination(mocker, cli_runner): +def test_file_list_with_pagination(requests_mock, mocker, cli_runner): mocker.patch( 'app.services.user_authentication.token_manager.SrvTokenManager.decode_access_token', return_value=decoded_token(), ) - mock_list = mocker.patch( - 'app.services.file_manager.file_list.SrvFileList.list_files', return_value='...file1 ...file2...' + + mocker.patch('app.services.file_manager.file_list.search_item', return_value=None) + requests_mock.get( + 'http://bff_cli' + '/v1/testproject/files/query', + json={ + 'code': 200, + 'error_msg': '', + 'result': [{'type': 'file', 'name': 'file1'}, {'type': 'file', 'name': 'file2'}], + }, + ) + mocker.patch.object(questionary, 'select') + questionary.select.return_value.ask.return_value = 'exit' + result = cli_runner.invoke(file_list, ['testproject/admin', '-z', 'greenroom']) + outputs = result.output.split('\n') + assert outputs[0] == 'file1 file2 ' + + +def test_empty_file_list_with_pagination(requests_mock, mocker, cli_runner): + mocker.patch( + 'app.services.user_authentication.token_manager.SrvTokenManager.decode_access_token', + return_value=decoded_token(), + ) + + mocker.patch('app.services.file_manager.file_list.search_item', return_value=None) + requests_mock.get( + 'http://bff_cli' + '/v1/testproject/files/query', + json={'code': 200, 'error_msg': '', 'result': []}, ) - cli_runner.invoke(file_list, ['testproject/admin', '-z', 'greenroom']) - mock_list.assert_called_once() + mocker.patch.object(questionary, 'select') + questionary.select.return_value.ask.return_value = 'exit' + result = cli_runner.invoke(file_list, ['testproject/admin', '-z', 'greenroom']) + outputs = result.output.split('\n') + assert outputs[0] == ' ' From a3f76a5745df0a0b4f89dea40686ce6c217c4258 Mon Sep 17 00:00:00 2001 From: QXgu Date: Thu, 4 May 2023 10:23:29 -0400 Subject: [PATCH 4/5] Update the version --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 99a24127..4a942f44 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "app" -version = "2.2.3" +version = "2.2.4" description = "This service is designed to support pilot platform" authors = ["Indoc Research"] From 097e7915bca2303ac1215b1bfe01e02fd750ee5c Mon Sep 17 00:00:00 2001 From: QXgu Date: Thu, 4 May 2023 10:29:14 -0400 Subject: [PATCH 5/5] Update the version --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 4a942f44..9f1aaf98 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "app" -version = "2.2.4" +version = "2.4.0" description = "This service is designed to support pilot platform" authors = ["Indoc Research"]