Merge pull request #17218 from nsoranzo/release_23.2_fix_TS_API_create_repo_categories

[23.2] Fix categories in ToolShed repo create API
This commit is contained in:
John Chilton
2023-12-20 10:28:42 -05:00
committed by GitHub
5 changed files with 21 additions and 13 deletions
+7 -2
View File
@@ -231,13 +231,13 @@ class ToolShedPopulator:
api_asserts.assert_status_code_is_ok(response)
return RepositoryUpdate(__root__=response.json())
def new_repository(self, category_id, prefix=DEFAULT_PREFIX) -> Repository:
def new_repository(self, category_ids: Union[List[str], str], prefix: str = DEFAULT_PREFIX) -> Repository:
name = random_name(prefix=prefix)
synopsis = random_name(prefix=prefix)
request = CreateRepositoryRequest(
name=name,
synopsis=synopsis,
category_ids=category_id,
category_ids=category_ids,
)
return self.create_repository(request)
@@ -282,6 +282,11 @@ class ToolShedPopulator:
response.raise_for_status()
return RepositoriesByCategory(**response.json())
def assert_category_has_n_repositories(self, category_id: str, n: int):
category_repos = self.repositories_by_category(category_id)
assert category_repos.repository_count == n
assert len(category_repos.repositories) == n
def get_ordered_installable_revisions(self, owner: str, name: str) -> OrderedInstallableRevisions:
request = GetOrderedInstallableRevisionsRequest(owner=owner, name=name)
revisions_response = self._api_interactor.get(
@@ -24,16 +24,18 @@ COLUMN_MAKER_PATH = resource_path(__package__, "../test_data/column_maker/column
class TestShedRepositoriesApi(ShedApiTestCase):
def test_create(self):
populator = self.populator
category_id = populator.new_category(prefix="testcreate").id
category1_id = populator.new_category(prefix="testcreate").id
populator.assert_category_has_n_repositories(category1_id, 0)
repos_by_category = populator.repositories_by_category(category_id)
repos = repos_by_category.repositories
assert len(repos) == 0
populator.new_repository(category1_id)
populator.assert_category_has_n_repositories(category1_id, 1)
populator.new_repository(category_id)
repos_by_category = populator.repositories_by_category(category_id)
repos = repos_by_category.repositories
assert len(repos) == 1
# Test creating repository with multiple categories
category2_id = populator.new_category(prefix="testcreate").id
populator.assert_category_has_n_repositories(category2_id, 0)
populator.new_repository([category1_id, category2_id])
populator.assert_category_has_n_repositories(category1_id, 2)
populator.assert_category_has_n_repositories(category2_id, 1)
def test_update_repository(self):
populator = self.populator
+2 -1
View File
@@ -3,6 +3,7 @@ import logging
import os
import re
from typing import (
List,
Optional,
Tuple,
TYPE_CHECKING,
@@ -190,7 +191,7 @@ def create_repository(
description,
long_description,
user_id,
category_ids=None,
category_ids: Optional[List[str]] = None,
remote_repository_url=None,
homepage_url=None,
) -> Tuple["Repository", str]:
@@ -305,7 +305,7 @@ export interface components {
/** CreateRepositoryRequest */
CreateRepositoryRequest: {
/** Category IDs */
"category_ids[]": string
"category_ids[]": string[] | string
/** Description */
description?: string
/** Homepage Url */
+1 -1
View File
@@ -113,7 +113,7 @@ class CreateRepositoryRequest(BaseModel):
alias="type",
title="Type",
)
category_ids: str = Field(
category_ids: Optional[Union[List[str], str]] = Field(
...,
alias="category_ids[]",
title="Category IDs",