diff --git a/lib/galaxy/managers/quotas.py b/lib/galaxy/managers/quotas.py index 31e7fcc48e6d..8b91b94a94a8 100644 --- a/lib/galaxy/managers/quotas.py +++ b/lib/galaxy/managers/quotas.py @@ -12,7 +12,10 @@ Union, ) -from sqlalchemy import select +from sqlalchemy import ( + and_, + select, +) from galaxy import ( model, @@ -115,10 +118,10 @@ def _parse_amount(self, amount: str) -> Optional[Union[int, bool]]: return False def rename_quota(self, quota, params) -> str: - stmt = select(Quota).where(Quota.name == params.name).limit(1) + stmt = select(Quota).where(and_(Quota.name == params.name, Quota.id != quota.id)).limit(1) if not params.name: raise ActionInputError("Enter a valid name.") - elif params.name != quota.name and self.sa_session.scalars(stmt).first(): + elif self.sa_session.scalars(stmt).first(): raise ActionInputError("A quota with that name already exists.") else: old_name = quota.name diff --git a/test/integration/test_quota.py b/test/integration/test_quota.py index 07137786a353..0debde6ac627 100644 --- a/test/integration/test_quota.py +++ b/test/integration/test_quota.py @@ -85,6 +85,26 @@ def test_update(self): json_response = show_response.json() assert json_response["name"] == new_quota_name + def test_update_description(self): + quota_name = "test-update-quota-description" + quota = self._create_quota_with_name(quota_name) + quota_id = quota["id"] + + # update description (one needs to specify a name even if should not be changed) + quota_description = "description of test-updated-quota-name" + update_payload = { + "name": quota_name, + "description": quota_description, + } + put_response = self._put(f"quotas/{quota_id}", data=update_payload, json=True) + put_response.raise_for_status() + + show_response = self._get(f"quotas/{quota_id}") + show_response.raise_for_status() + json_response = show_response.json() + assert json_response["name"] == quota_name + assert json_response["description"] == quota_description + def test_delete(self): quota_name = "test-delete-quota" quota = self._create_quota_with_name(quota_name)