Skip to content

Commit f1f7878

Browse files
jorwoodsjacalata
authored andcommitted
chore: convert workbook tests to pytest (#1645)
* chore: workook tests converted to pytest * chore: convert all assets to Paths * chore: convert tests to pytest * style: black * chore: remove asset and read_assets references * chore: narrow download_revision return type * chore: add type hints to fixture --------- Co-authored-by: Jordan Woods <13803242+jorwoods@users.noreply.github.com>
1 parent c19f581 commit f1f7878

File tree

2 files changed

+44
-91
lines changed

2 files changed

+44
-91
lines changed

tableauserverclient/server/endpoint/workbooks_endpoint.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,24 @@ def update_connections(
386386
logger.info(f"Updated connections for workbook {workbook_item.id}: {', '.join(updated_ids)}")
387387
return connection_items
388388

389+
T = TypeVar("T", bound=FileObjectW)
390+
391+
@overload
392+
def download(
393+
self,
394+
workbook_id: str,
395+
filepath: T,
396+
include_extract: bool = True,
397+
) -> T: ...
398+
399+
@overload
400+
def download(
401+
self,
402+
workbook_id: str,
403+
filepath: Optional[FilePath] = None,
404+
include_extract: bool = True,
405+
) -> str: ...
406+
389407
# Download workbook contents with option of passing in filepath
390408
@api(version="2.0")
391409
@parameter_added_in(no_extract="2.5")

test/test_workbook.py

Lines changed: 26 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -13,32 +13,31 @@
1313
from tableauserverclient.models import UserItem, GroupItem, PermissionsRule
1414
from tableauserverclient.server.endpoint.exceptions import InternalServerError, UnsupportedAttributeError
1515
from tableauserverclient.server.request_factory import RequestFactory
16-
from ._utils import read_xml_asset, read_xml_assets, asset
1716

1817
TEST_ASSET_DIR = Path(__file__).parent / "assets"
1918

20-
ADD_TAGS_XML = os.path.join(TEST_ASSET_DIR, "workbook_add_tags.xml")
21-
GET_BY_ID_XML = os.path.join(TEST_ASSET_DIR, "workbook_get_by_id.xml")
22-
GET_BY_ID_XML_PERSONAL = os.path.join(TEST_ASSET_DIR, "workbook_get_by_id_personal.xml")
23-
GET_EMPTY_XML = os.path.join(TEST_ASSET_DIR, "workbook_get_empty.xml")
24-
GET_INVALID_DATE_XML = os.path.join(TEST_ASSET_DIR, "workbook_get_invalid_date.xml")
25-
GET_XML = os.path.join(TEST_ASSET_DIR, "workbook_get.xml")
26-
GET_XML_ALL_FIELDS = os.path.join(TEST_ASSET_DIR, "workbook_get_all_fields.xml")
27-
ODATA_XML = os.path.join(TEST_ASSET_DIR, "odata_connection.xml")
28-
POPULATE_CONNECTIONS_XML = os.path.join(TEST_ASSET_DIR, "workbook_populate_connections.xml")
29-
POPULATE_PDF = os.path.join(TEST_ASSET_DIR, "populate_pdf.pdf")
30-
POPULATE_POWERPOINT = os.path.join(TEST_ASSET_DIR, "populate_powerpoint.pptx")
31-
POPULATE_PERMISSIONS_XML = os.path.join(TEST_ASSET_DIR, "workbook_populate_permissions.xml")
32-
POPULATE_PREVIEW_IMAGE = os.path.join(TEST_ASSET_DIR, "RESTAPISample Image.png")
33-
POPULATE_VIEWS_XML = os.path.join(TEST_ASSET_DIR, "workbook_populate_views.xml")
34-
POPULATE_VIEWS_USAGE_XML = os.path.join(TEST_ASSET_DIR, "workbook_populate_views_usage.xml")
35-
PUBLISH_XML = os.path.join(TEST_ASSET_DIR, "workbook_publish.xml")
36-
PUBLISH_ASYNC_XML = os.path.join(TEST_ASSET_DIR, "workbook_publish_async.xml")
37-
REFRESH_XML = os.path.join(TEST_ASSET_DIR, "workbook_refresh.xml")
38-
REVISION_XML = os.path.join(TEST_ASSET_DIR, "workbook_revision.xml")
39-
UPDATE_XML = os.path.join(TEST_ASSET_DIR, "workbook_update.xml")
40-
UPDATE_PERMISSIONS = os.path.join(TEST_ASSET_DIR, "workbook_update_permissions.xml")
41-
UPDATE_CONNECTIONS_XML = os.path.join(TEST_ASSET_DIR, "workbook_update_connections.xml")
19+
ADD_TAGS_XML = TEST_ASSET_DIR / "workbook_add_tags.xml"
20+
GET_BY_ID_XML = TEST_ASSET_DIR / "workbook_get_by_id.xml"
21+
GET_BY_ID_XML_PERSONAL = TEST_ASSET_DIR / "workbook_get_by_id_personal.xml"
22+
GET_EMPTY_XML = TEST_ASSET_DIR / "workbook_get_empty.xml"
23+
GET_INVALID_DATE_XML = TEST_ASSET_DIR / "workbook_get_invalid_date.xml"
24+
GET_XML = TEST_ASSET_DIR / "workbook_get.xml"
25+
GET_XML_ALL_FIELDS = TEST_ASSET_DIR / "workbook_get_all_fields.xml"
26+
ODATA_XML = TEST_ASSET_DIR / "odata_connection.xml"
27+
POPULATE_CONNECTIONS_XML = TEST_ASSET_DIR / "workbook_populate_connections.xml"
28+
POPULATE_PDF = TEST_ASSET_DIR / "populate_pdf.pdf"
29+
POPULATE_POWERPOINT = TEST_ASSET_DIR / "populate_powerpoint.pptx"
30+
POPULATE_PERMISSIONS_XML = TEST_ASSET_DIR / "workbook_populate_permissions.xml"
31+
POPULATE_PREVIEW_IMAGE = TEST_ASSET_DIR / "RESTAPISample Image.png"
32+
POPULATE_VIEWS_XML = TEST_ASSET_DIR / "workbook_populate_views.xml"
33+
POPULATE_VIEWS_USAGE_XML = TEST_ASSET_DIR / "workbook_populate_views_usage.xml"
34+
PUBLISH_XML = TEST_ASSET_DIR / "workbook_publish.xml"
35+
PUBLISH_ASYNC_XML = TEST_ASSET_DIR / "workbook_publish_async.xml"
36+
REFRESH_XML = TEST_ASSET_DIR / "workbook_refresh.xml"
37+
REVISION_XML = TEST_ASSET_DIR / "workbook_revision.xml"
38+
UPDATE_XML = TEST_ASSET_DIR / "workbook_update.xml"
39+
UPDATE_PERMISSIONS = TEST_ASSET_DIR / "workbook_update_permissions.xml"
40+
UPDATE_CONNECTIONS_XML = TEST_ASSET_DIR / "workbook_update_connections.xml"
4241

4342

4443
@pytest.fixture(scope="function")
@@ -708,74 +707,10 @@ def test_publish_with_thumbnails_user_id(server: TSC.Server) -> None:
708707
assert re.search(b'thumbnailsUserId=\\"ee8c6e70-43b6-11e6-af4f-f7b0d8e20761\\"', request_body)
709708

710709

711-
def test_update_workbook_connections(self) -> None:
712-
populate_xml, response_xml = read_xml_assets(POPULATE_CONNECTIONS_XML, UPDATE_CONNECTIONS_XML)
713-
714-
with requests_mock.Mocker() as m:
715-
workbook_id = "1a2b3c4d-5e6f-7a8b-9c0d-112233445566"
716-
connection_luids = ["abc12345-def6-7890-gh12-ijklmnopqrst", "1234abcd-5678-efgh-ijkl-0987654321mn"]
717-
718-
workbook = TSC.WorkbookItem(workbook_id)
719-
workbook._id = workbook_id
720-
self.server.version = "3.26"
721-
url = f"{self.server.baseurl}/{workbook_id}/connections"
722-
m.get(
723-
"http://test/api/3.26/sites/dad65087-b08b-4603-af4e-2887b8aafc67/workbooks/1a2b3c4d-5e6f-7a8b-9c0d-112233445566/connections",
724-
text=populate_xml,
725-
)
726-
m.put(
727-
"http://test/api/3.26/sites/dad65087-b08b-4603-af4e-2887b8aafc67/workbooks/1a2b3c4d-5e6f-7a8b-9c0d-112233445566/connections",
728-
text=response_xml,
729-
)
730-
731-
connection_items = self.server.workbooks.update_connections(
732-
workbook_item=workbook,
733-
connection_luids=connection_luids,
734-
authentication_type="AD Service Principal",
735-
username="svc-client",
736-
password="secret-token",
737-
embed_password=True,
738-
)
739-
updated_ids = [conn.id for conn in connection_items]
740-
741-
self.assertEqual(updated_ids, connection_luids)
742-
743-
def test_update_workbook_connections(self) -> None:
744-
populate_xml, response_xml = read_xml_assets(POPULATE_CONNECTIONS_XML, UPDATE_CONNECTIONS_XML)
745-
746-
with requests_mock.Mocker() as m:
747-
workbook_id = "1a2b3c4d-5e6f-7a8b-9c0d-112233445566"
748-
connection_luids = ["abc12345-def6-7890-gh12-ijklmnopqrst", "1234abcd-5678-efgh-ijkl-0987654321mn"]
749-
750-
workbook = TSC.WorkbookItem(workbook_id)
751-
workbook._id = workbook_id
752-
self.server.version = "3.26"
753-
url = f"{self.server.baseurl}/{workbook_id}/connections"
754-
m.get(
755-
"http://test/api/3.26/sites/dad65087-b08b-4603-af4e-2887b8aafc67/workbooks/1a2b3c4d-5e6f-7a8b-9c0d-112233445566/connections",
756-
text=populate_xml,
757-
)
758-
m.put(
759-
"http://test/api/3.26/sites/dad65087-b08b-4603-af4e-2887b8aafc67/workbooks/1a2b3c4d-5e6f-7a8b-9c0d-112233445566/connections",
760-
text=response_xml,
761-
)
762-
763-
connection_items = self.server.workbooks.update_connections(
764-
workbook_item=workbook,
765-
connection_luids=connection_luids,
766-
authentication_type="AD Service Principal",
767-
username="svc-client",
768-
password="secret-token",
769-
embed_password=True,
770-
)
771-
updated_ids = [conn.id for conn in connection_items]
772-
773-
self.assertEqual(updated_ids, connection_luids)
774-
self.assertEqual("AD Service Principal", connection_items[0].auth_type)
775-
776-
def test_get_workbook_all_fields(self) -> None:
777-
self.server.version = "3.21"
778-
baseurl = self.server.workbooks.baseurl
710+
def test_publish_with_thumbnails_group_id(server: TSC.Server) -> None:
711+
response_xml = PUBLISH_XML.read_text()
712+
with requests_mock.mock() as m:
713+
m.post(server.workbooks.baseurl, text=response_xml)
779714

780715
new_workbook = TSC.WorkbookItem(
781716
name="Sample",

0 commit comments

Comments
 (0)