Skip to content

Commit

Permalink
Merge pull request #159 from rjra2611/feature-add-organization-id-prj…
Browse files Browse the repository at this point in the history
…ect-config.json

Feature add organization-id in project config.json
  • Loading branch information
Martin-Molinero authored Sep 20, 2022
2 parents 6c7387c + 99f26f4 commit b75eea8
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 1 deletion.
1 change: 1 addition & 0 deletions lean/components/cloud/pull_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ def _pull_project(self, project: QCProject) -> None:
project_config.set("algorithm-language", project.language.name)
project_config.set("parameters", {parameter.key: parameter.value for parameter in project.parameters})
project_config.set("description", project.description)
project_config.set("organization-id", project.organizationId)

def _pull_files(self, project: QCProject, local_project_path: Path) -> None:
"""Pull the files of a single project.
Expand Down
3 changes: 3 additions & 0 deletions lean/components/cloud/push_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,9 @@ def _push_project(self, project: Path, cloud_projects: List[QCProject], organiza
# We need to retrieve the created project again to get all project details
cloud_project = self._api_client.projects.get(new_project.projectId)

# set organization-id in project config
project_config.set("organization-id", cloud_project.organizationId)

# Push local files to cloud
self._push_files(project, cloud_project)

Expand Down
36 changes: 36 additions & 0 deletions tests/commands/cloud/test_pull.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
from dependency_injector import providers

from lean.commands import lean
from lean.components.cloud.pull_manager import PullManager
from lean.container import container
from tests.test_helpers import create_api_project, create_fake_lean_cli_directory

Expand Down Expand Up @@ -134,3 +135,38 @@ def test_cloud_pull_aborts_when_project_input_matches_no_cloud_projects() -> Non
assert result.exit_code != 0

pull_manager.pull_projects.assert_not_called()

def test_cloud_pull_updates_lean_config() -> None:
create_fake_lean_cli_directory()

def my_side_effect(*args, **kwargs):
return True

cloud_projects = [create_api_project(1, "Project 1")]

api_client = mock.Mock()
api_client.projects.get_all.return_value = cloud_projects
container.api_client.override(providers.Object(api_client))

project_config = mock.Mock()

project_config_manager = mock.Mock()
project_config_manager.get_project_config = mock.MagicMock(return_value=project_config)

project_manager = mock.Mock()
project_manager.get_source_files = mock.MagicMock(return_value=[])

platform_manager = mock.Mock()
container.platform_manager.override(providers.Object(platform_manager))

pull_manager = PullManager(mock.Mock(), api_client, project_manager, project_config_manager, platform_manager)
container.pull_manager.override(providers.Object(pull_manager))

pull_manager.get_local_project_path = mock.MagicMock(side_effect=my_side_effect)
pull_manager._pull_files = mock.MagicMock(side_effect=my_side_effect)

result = CliRunner().invoke(lean, ["cloud", "pull", "--project", "1"])

assert result.exit_code == 0

project_config.set.assert_called_with("organization-id", "123")
35 changes: 34 additions & 1 deletion tests/commands/cloud/test_push.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,6 @@ def test_cloud_push_pushes_single_project_when_project_option_given() -> None:

push_manager.push_projects.assert_called_once_with([Path.cwd() / "Python Project"], None)


def test_cloud_push_aborts_when_given_directory_is_not_lean_project() -> None:
create_fake_lean_cli_directory()

Expand Down Expand Up @@ -138,3 +137,37 @@ def test_cloud_push_creates_project_with_optional_organization_id(organization_i

mock_get_all_projects.assert_called_once()
mock_create_project.assert_called_once_with(path, QCLanguage.Python, organization_id)

def test_cloud_push_updates_lean_config() -> None:

create_fake_lean_cli_directory()

def my_side_effect(*args, **kwargs):
return "Python"

api_client = mock.Mock()
api_client = api_client.projects.create = mock.MagicMock(return_value=create_api_project(1, "Python Project"))
fake_cloud_files = [QCFullFile(name="removed_file.py", content="", modified=datetime.now(), isLibrary=False)]
api_client.files.get_all = mock.MagicMock(return_value=fake_cloud_files)
api_client.files.delete = mock.Mock()

api_client.projects.get_all = mock.MagicMock(return_value=[])
api_client.projects.get = mock.MagicMock(return_value=create_api_project(1, "Python Project"))

project_config = mock.Mock()
project_config.get = mock.MagicMock(side_effect=my_side_effect)

project_config_manager = mock.Mock()
project_config_manager.get_project_config = mock.MagicMock(return_value=project_config)

project_manager = mock.Mock()
project_manager.get_source_files = mock.MagicMock(return_value=[])

push_manager = PushManager(mock.Mock(), api_client, project_manager, project_config_manager)
container.push_manager.override(providers.Object(push_manager))

result = CliRunner().invoke(lean, ["cloud", "push", "--project", "Python Project"])

assert result.exit_code == 0

project_config.set.assert_called_with("organization-id", "123")

0 comments on commit b75eea8

Please sign in to comment.