diff --git a/CHANGELOG.md b/CHANGELOG.md index 9369874..9c78b30 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [x.x.x] - Unreleased +### Added + +- Add case for a template resource_type in append_data method in PaginatedChildrenResult model + ## [4.2.0] - 2026-07-09 ### Added diff --git a/smartsheet/models/paginated_children_result.py b/smartsheet/models/paginated_children_result.py index d6f68d7..9870f22 100644 --- a/smartsheet/models/paginated_children_result.py +++ b/smartsheet/models/paginated_children_result.py @@ -24,9 +24,10 @@ from .sheet import Sheet from .sight import Sight from .report import Report +from .template import Template # Type alias for children that can be any of these types -ChildType = Union[Folder, Sheet, Sight, Report] +ChildType = Union[Folder, Sheet, Sight, Report, Template] class PaginatedChildrenResult(TokenPaginatedResult[ChildType]): @@ -64,6 +65,8 @@ def append_data(self, item): self._data.append(Sight(item, self._base)) elif resource_type == 'report': self._data.append(Report(item, self._base)) + elif resource_type == 'template': + self._data.append(Template(item, self._base)) else: # If no resource type or unknown type, append as-is self._data.append(item) diff --git a/tests/mock_api/test_mock_api_folders.py b/tests/mock_api/test_mock_api_folders.py index 70c203d..8bfec5b 100644 --- a/tests/mock_api/test_mock_api_folders.py +++ b/tests/mock_api/test_mock_api_folders.py @@ -1,7 +1,7 @@ # pylint: disable=C0103,W0232 import pytest -from smartsheet.models import Folder, PaginatedChildrenResult, Sheet, Sight, Report +from smartsheet.models import Folder, PaginatedChildrenResult, Sheet, Sight, Report, Template from smartsheet.exceptions import ApiError from tests.mock_api.mock_api_test_helper import MockApiTestHelper, clean_api_error @@ -44,7 +44,7 @@ def test_get_folder_children_no_params(self): response = self.client.Folders.get_folder_children(456) assert isinstance(response, PaginatedChildrenResult) - assert len(response.data) == 4 + assert len(response.data) == 5 # Verify first child (subfolder) subfolder = response.data[0] @@ -73,6 +73,13 @@ def test_get_folder_children_no_params(self): assert report.name == "Status Report" assert report.access_level == "VIEWER" + # Verify fifth child (template) + template = response.data[4] + assert isinstance(template, Template) + assert template.id == 990 + assert template.name == "Project Template" + assert template.access_level == "VIEWER" + @clean_api_error def test_get_folder_children_filter_sights_and_reports(self): self.client.as_test_scenario('Get Folder Children - Filter Sights and Reports') diff --git a/tests/mock_api/test_mock_api_workspaces.py b/tests/mock_api/test_mock_api_workspaces.py index 07e695c..acdba9f 100644 --- a/tests/mock_api/test_mock_api_workspaces.py +++ b/tests/mock_api/test_mock_api_workspaces.py @@ -1,7 +1,7 @@ # pylint: disable=C0103,W0232 import pytest -from smartsheet.models import Workspace, PaginatedChildrenResult, Folder, Sheet, Sight, Report +from smartsheet.models import Workspace, PaginatedChildrenResult, Folder, Sheet, Sight, Report, Template from smartsheet.exceptions import ApiError from tests.mock_api.mock_api_test_helper import MockApiTestHelper, clean_api_error @@ -49,7 +49,7 @@ def test_get_workspace_children_no_params(self): response = self.client.Workspaces.get_workspace_children(123) assert isinstance(response, PaginatedChildrenResult) - assert len(response.data) == 4 + assert len(response.data) == 5 # Verify first child (folder) - exact values from scenario folder = response.data[0] @@ -82,6 +82,13 @@ def test_get_workspace_children_no_params(self): assert report.permalink == "https://app.smartsheet.com/b/home?lx=*****************" assert report.access_level == "ADMIN" + # Verify fifth child (template) - exact values from scenario + template = response.data[4] + assert isinstance(template, Template) + assert template.id == 995 + assert template.name == "Budget Template" + assert template.access_level == "ADMIN" + @clean_api_error def test_get_workspace_children_filter_sheets_and_folders(self):