diff --git a/test/test_datasource.py b/test/test_datasource.py index 7f4cca75..56eb11ab 100644 --- a/test/test_datasource.py +++ b/test/test_datasource.py @@ -895,7 +895,8 @@ def test_publish_description(server: TSC.Server) -> None: ds_elem = body.find(".//datasource") assert ds_elem is not None assert ds_elem.attrib["description"] == "Sample description" - + + def test_get_datasource_no_owner(server: TSC.Server) -> None: with requests_mock.mock() as m: m.get(server.datasources.baseurl, text=GET_NO_OWNER.read_text()) diff --git a/test/test_metrics.py b/test/test_metrics.py index 7628abb1..fdb21f8f 100644 --- a/test/test_metrics.py +++ b/test/test_metrics.py @@ -1,7 +1,8 @@ -import unittest import requests_mock from pathlib import Path +import pytest + import tableauserverclient as TSC from tableauserverclient.datetime_helpers import format_datetime @@ -11,95 +12,100 @@ METRICS_UPDATE = assets / "metrics_update.xml" -class TestMetrics(unittest.TestCase): - def setUp(self) -> None: - self.server = TSC.Server("http://test", False) - - # Fake signin - self.server._site_id = "dad65087-b08b-4603-af4e-2887b8aafc67" - self.server._auth_token = "j80k54ll2lfMZ0tv97mlPvvSCRyD0DOM" - self.server.version = "3.9" - - self.baseurl = self.server.metrics.baseurl - - def test_metrics_get(self) -> None: - with requests_mock.mock() as m: - m.get(self.baseurl, text=METRICS_GET.read_text()) - all_metrics, pagination_item = self.server.metrics.get() - - self.assertEqual(len(all_metrics), 2) - self.assertEqual(pagination_item.total_available, 27) - self.assertEqual(all_metrics[0].id, "6561daa3-20e8-407f-ba09-709b178c0b4a") - self.assertEqual(all_metrics[0].name, "Example metric") - self.assertEqual(all_metrics[0].description, "Description of my metric.") - self.assertEqual(all_metrics[0].webpage_url, "https://test/#/site/site-name/metrics/3") - self.assertEqual(format_datetime(all_metrics[0].created_at), "2020-01-02T01:02:03Z") - self.assertEqual(format_datetime(all_metrics[0].updated_at), "2020-01-02T01:02:03Z") - self.assertEqual(all_metrics[0].suspended, True) - self.assertEqual(all_metrics[0].project_id, "32e79edb-6cfd-47dc-ad79-e8ec2fbb1d33") - self.assertEqual(all_metrics[0].project_name, "Default") - self.assertEqual(all_metrics[0].owner_id, "32e79edb-6cfd-47dc-ad79-e8ec2fbb1d33") - self.assertEqual(all_metrics[0].view_id, "29dae0cd-1862-4a20-a638-e2c2dfa682d4") - self.assertEqual(len(all_metrics[0].tags), 0) - - self.assertEqual(all_metrics[1].id, "721760d9-0aa4-4029-87ae-371c956cea07") - self.assertEqual(all_metrics[1].name, "Another Example metric") - self.assertEqual(all_metrics[1].description, "Description of another metric.") - self.assertEqual(all_metrics[1].webpage_url, "https://test/#/site/site-name/metrics/4") - self.assertEqual(format_datetime(all_metrics[1].created_at), "2020-01-03T01:02:03Z") - self.assertEqual(format_datetime(all_metrics[1].updated_at), "2020-01-04T01:02:03Z") - self.assertEqual(all_metrics[1].suspended, False) - self.assertEqual(all_metrics[1].project_id, "486e0de0-2258-45bd-99cf-b62013e19f4e") - self.assertEqual(all_metrics[1].project_name, "Assets") - self.assertEqual(all_metrics[1].owner_id, "1bbbc2b9-847d-443c-9a1f-dbcf112b8814") - self.assertEqual(all_metrics[1].view_id, "7dbfdb63-a6ca-4723-93ee-4fefc71992d3") - self.assertEqual(len(all_metrics[1].tags), 2) - self.assertIn("Test", all_metrics[1].tags) - self.assertIn("Asset", all_metrics[1].tags) - - def test_metrics_get_by_id(self) -> None: - luid = "6561daa3-20e8-407f-ba09-709b178c0b4a" - with requests_mock.mock() as m: - m.get(f"{self.baseurl}/{luid}", text=METRICS_GET_BY_ID.read_text()) - metric = self.server.metrics.get_by_id(luid) - - self.assertEqual(metric.id, "6561daa3-20e8-407f-ba09-709b178c0b4a") - self.assertEqual(metric.name, "Example metric") - self.assertEqual(metric.description, "Description of my metric.") - self.assertEqual(metric.webpage_url, "https://test/#/site/site-name/metrics/3") - self.assertEqual(format_datetime(metric.created_at), "2020-01-02T01:02:03Z") - self.assertEqual(format_datetime(metric.updated_at), "2020-01-02T01:02:03Z") - self.assertEqual(metric.suspended, True) - self.assertEqual(metric.project_id, "32e79edb-6cfd-47dc-ad79-e8ec2fbb1d33") - self.assertEqual(metric.project_name, "Default") - self.assertEqual(metric.owner_id, "32e79edb-6cfd-47dc-ad79-e8ec2fbb1d33") - self.assertEqual(metric.view_id, "29dae0cd-1862-4a20-a638-e2c2dfa682d4") - self.assertEqual(len(metric.tags), 0) - - def test_metrics_delete(self) -> None: - luid = "6561daa3-20e8-407f-ba09-709b178c0b4a" - with requests_mock.mock() as m: - m.delete(f"{self.baseurl}/{luid}") - self.server.metrics.delete(luid) - - def test_metrics_update(self) -> None: - luid = "6561daa3-20e8-407f-ba09-709b178c0b4a" - metric = TSC.MetricItem() - metric._id = luid - - with requests_mock.mock() as m: - m.put(f"{self.baseurl}/{luid}", text=METRICS_UPDATE.read_text()) - metric = self.server.metrics.update(metric) - - self.assertEqual(metric.id, "6561daa3-20e8-407f-ba09-709b178c0b4a") - self.assertEqual(metric.name, "Example metric") - self.assertEqual(metric.description, "Description of my metric.") - self.assertEqual(metric.webpage_url, "https://test/#/site/site-name/metrics/3") - self.assertEqual(format_datetime(metric.created_at), "2020-01-02T01:02:03Z") - self.assertEqual(format_datetime(metric.updated_at), "2020-01-02T01:02:03Z") - self.assertEqual(metric.suspended, True) - self.assertEqual(metric.project_id, "32e79edb-6cfd-47dc-ad79-e8ec2fbb1d33") - self.assertEqual(metric.project_name, "Default") - self.assertEqual(metric.owner_id, "32e79edb-6cfd-47dc-ad79-e8ec2fbb1d33") - self.assertEqual(metric.view_id, "29dae0cd-1862-4a20-a638-e2c2dfa682d4") - self.assertEqual(len(metric.tags), 0) +@pytest.fixture(scope="function") +def server() -> TSC.Server: + """Fixture to create a TSC.Server instance for testing.""" + server = TSC.Server("http://test", False) + + # Fake signin + server._site_id = "dad65087-b08b-4603-af4e-2887b8aafc67" + server._auth_token = "j80k54ll2lfMZ0tv97mlPvvSCRyD0DOM" + server.version = "3.9" + + return server + + +def test_metrics_get(server: TSC.Server) -> None: + with requests_mock.mock() as m: + m.get(server.metrics.baseurl, text=METRICS_GET.read_text()) + all_metrics, pagination_item = server.metrics.get() + + assert len(all_metrics) == 2 + assert pagination_item.total_available == 27 + assert all_metrics[0].id == "6561daa3-20e8-407f-ba09-709b178c0b4a" + assert all_metrics[0].name == "Example metric" + assert all_metrics[0].description == "Description of my metric." + assert all_metrics[0].webpage_url == "https://test/#/site/site-name/metrics/3" + assert format_datetime(all_metrics[0].created_at) == "2020-01-02T01:02:03Z" + assert format_datetime(all_metrics[0].updated_at) == "2020-01-02T01:02:03Z" + assert all_metrics[0].suspended + assert all_metrics[0].project_id == "32e79edb-6cfd-47dc-ad79-e8ec2fbb1d33" + assert all_metrics[0].project_name == "Default" + assert all_metrics[0].owner_id == "32e79edb-6cfd-47dc-ad79-e8ec2fbb1d33" + assert all_metrics[0].view_id == "29dae0cd-1862-4a20-a638-e2c2dfa682d4" + assert len(all_metrics[0].tags) == 0 + + assert all_metrics[1].id == "721760d9-0aa4-4029-87ae-371c956cea07" + assert all_metrics[1].name == "Another Example metric" + assert all_metrics[1].description == "Description of another metric." + assert all_metrics[1].webpage_url == "https://test/#/site/site-name/metrics/4" + assert format_datetime(all_metrics[1].created_at) == "2020-01-03T01:02:03Z" + assert format_datetime(all_metrics[1].updated_at) == "2020-01-04T01:02:03Z" + assert all_metrics[1].suspended is False + assert all_metrics[1].project_id == "486e0de0-2258-45bd-99cf-b62013e19f4e" + assert all_metrics[1].project_name == "Assets" + assert all_metrics[1].owner_id == "1bbbc2b9-847d-443c-9a1f-dbcf112b8814" + assert all_metrics[1].view_id == "7dbfdb63-a6ca-4723-93ee-4fefc71992d3" + assert len(all_metrics[1].tags) == 2 + assert "Test" in all_metrics[1].tags + assert "Asset" in all_metrics[1].tags + + +def test_metrics_get_by_id(server: TSC.Server) -> None: + luid = "6561daa3-20e8-407f-ba09-709b178c0b4a" + with requests_mock.mock() as m: + m.get(f"{server.metrics.baseurl}/{luid}", text=METRICS_GET_BY_ID.read_text()) + metric = server.metrics.get_by_id(luid) + + assert metric.id == "6561daa3-20e8-407f-ba09-709b178c0b4a" + assert metric.name == "Example metric" + assert metric.description == "Description of my metric." + assert metric.webpage_url == "https://test/#/site/site-name/metrics/3" + assert format_datetime(metric.created_at) == "2020-01-02T01:02:03Z" + assert format_datetime(metric.updated_at) == "2020-01-02T01:02:03Z" + assert metric.suspended + assert metric.project_id == "32e79edb-6cfd-47dc-ad79-e8ec2fbb1d33" + assert metric.project_name == "Default" + assert metric.owner_id == "32e79edb-6cfd-47dc-ad79-e8ec2fbb1d33" + assert metric.view_id == "29dae0cd-1862-4a20-a638-e2c2dfa682d4" + assert len(metric.tags) == 0 + + +def test_metrics_delete(server: TSC.Server) -> None: + luid = "6561daa3-20e8-407f-ba09-709b178c0b4a" + with requests_mock.mock() as m: + m.delete(f"{server.metrics.baseurl}/{luid}") + server.metrics.delete(luid) + + +def test_metrics_update(server: TSC.Server) -> None: + luid = "6561daa3-20e8-407f-ba09-709b178c0b4a" + metric = TSC.MetricItem() + metric._id = luid + + with requests_mock.mock() as m: + m.put(f"{server.metrics.baseurl}/{luid}", text=METRICS_UPDATE.read_text()) + metric = server.metrics.update(metric) + + assert metric.id == "6561daa3-20e8-407f-ba09-709b178c0b4a" + assert metric.name == "Example metric" + assert metric.description == "Description of my metric." + assert metric.webpage_url == "https://test/#/site/site-name/metrics/3" + assert format_datetime(metric.created_at) == "2020-01-02T01:02:03Z" + assert format_datetime(metric.updated_at) == "2020-01-02T01:02:03Z" + assert metric.suspended + assert metric.project_id == "32e79edb-6cfd-47dc-ad79-e8ec2fbb1d33" + assert metric.project_name == "Default" + assert metric.owner_id == "32e79edb-6cfd-47dc-ad79-e8ec2fbb1d33" + assert metric.view_id == "29dae0cd-1862-4a20-a638-e2c2dfa682d4" + assert len(metric.tags) == 0