Skip to content

Commit 912b4f1

Browse files
authored
chore: pytestify metrics (#1720)
* fix: black ci errors * chore: pytestify metrics --------- Co-authored-by: Jordan Woods <[email protected]>
1 parent bc11d2e commit 912b4f1

File tree

1 file changed

+99
-93
lines changed

1 file changed

+99
-93
lines changed

test/test_metrics.py

Lines changed: 99 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
import unittest
21
import requests_mock
32
from pathlib import Path
43

4+
import pytest
5+
56
import tableauserverclient as TSC
67
from tableauserverclient.datetime_helpers import format_datetime
78

@@ -11,95 +12,100 @@
1112
METRICS_UPDATE = assets / "metrics_update.xml"
1213

1314

14-
class TestMetrics(unittest.TestCase):
15-
def setUp(self) -> None:
16-
self.server = TSC.Server("http://test", False)
17-
18-
# Fake signin
19-
self.server._site_id = "dad65087-b08b-4603-af4e-2887b8aafc67"
20-
self.server._auth_token = "j80k54ll2lfMZ0tv97mlPvvSCRyD0DOM"
21-
self.server.version = "3.9"
22-
23-
self.baseurl = self.server.metrics.baseurl
24-
25-
def test_metrics_get(self) -> None:
26-
with requests_mock.mock() as m:
27-
m.get(self.baseurl, text=METRICS_GET.read_text())
28-
all_metrics, pagination_item = self.server.metrics.get()
29-
30-
self.assertEqual(len(all_metrics), 2)
31-
self.assertEqual(pagination_item.total_available, 27)
32-
self.assertEqual(all_metrics[0].id, "6561daa3-20e8-407f-ba09-709b178c0b4a")
33-
self.assertEqual(all_metrics[0].name, "Example metric")
34-
self.assertEqual(all_metrics[0].description, "Description of my metric.")
35-
self.assertEqual(all_metrics[0].webpage_url, "https://test/#/site/site-name/metrics/3")
36-
self.assertEqual(format_datetime(all_metrics[0].created_at), "2020-01-02T01:02:03Z")
37-
self.assertEqual(format_datetime(all_metrics[0].updated_at), "2020-01-02T01:02:03Z")
38-
self.assertEqual(all_metrics[0].suspended, True)
39-
self.assertEqual(all_metrics[0].project_id, "32e79edb-6cfd-47dc-ad79-e8ec2fbb1d33")
40-
self.assertEqual(all_metrics[0].project_name, "Default")
41-
self.assertEqual(all_metrics[0].owner_id, "32e79edb-6cfd-47dc-ad79-e8ec2fbb1d33")
42-
self.assertEqual(all_metrics[0].view_id, "29dae0cd-1862-4a20-a638-e2c2dfa682d4")
43-
self.assertEqual(len(all_metrics[0].tags), 0)
44-
45-
self.assertEqual(all_metrics[1].id, "721760d9-0aa4-4029-87ae-371c956cea07")
46-
self.assertEqual(all_metrics[1].name, "Another Example metric")
47-
self.assertEqual(all_metrics[1].description, "Description of another metric.")
48-
self.assertEqual(all_metrics[1].webpage_url, "https://test/#/site/site-name/metrics/4")
49-
self.assertEqual(format_datetime(all_metrics[1].created_at), "2020-01-03T01:02:03Z")
50-
self.assertEqual(format_datetime(all_metrics[1].updated_at), "2020-01-04T01:02:03Z")
51-
self.assertEqual(all_metrics[1].suspended, False)
52-
self.assertEqual(all_metrics[1].project_id, "486e0de0-2258-45bd-99cf-b62013e19f4e")
53-
self.assertEqual(all_metrics[1].project_name, "Assets")
54-
self.assertEqual(all_metrics[1].owner_id, "1bbbc2b9-847d-443c-9a1f-dbcf112b8814")
55-
self.assertEqual(all_metrics[1].view_id, "7dbfdb63-a6ca-4723-93ee-4fefc71992d3")
56-
self.assertEqual(len(all_metrics[1].tags), 2)
57-
self.assertIn("Test", all_metrics[1].tags)
58-
self.assertIn("Asset", all_metrics[1].tags)
59-
60-
def test_metrics_get_by_id(self) -> None:
61-
luid = "6561daa3-20e8-407f-ba09-709b178c0b4a"
62-
with requests_mock.mock() as m:
63-
m.get(f"{self.baseurl}/{luid}", text=METRICS_GET_BY_ID.read_text())
64-
metric = self.server.metrics.get_by_id(luid)
65-
66-
self.assertEqual(metric.id, "6561daa3-20e8-407f-ba09-709b178c0b4a")
67-
self.assertEqual(metric.name, "Example metric")
68-
self.assertEqual(metric.description, "Description of my metric.")
69-
self.assertEqual(metric.webpage_url, "https://test/#/site/site-name/metrics/3")
70-
self.assertEqual(format_datetime(metric.created_at), "2020-01-02T01:02:03Z")
71-
self.assertEqual(format_datetime(metric.updated_at), "2020-01-02T01:02:03Z")
72-
self.assertEqual(metric.suspended, True)
73-
self.assertEqual(metric.project_id, "32e79edb-6cfd-47dc-ad79-e8ec2fbb1d33")
74-
self.assertEqual(metric.project_name, "Default")
75-
self.assertEqual(metric.owner_id, "32e79edb-6cfd-47dc-ad79-e8ec2fbb1d33")
76-
self.assertEqual(metric.view_id, "29dae0cd-1862-4a20-a638-e2c2dfa682d4")
77-
self.assertEqual(len(metric.tags), 0)
78-
79-
def test_metrics_delete(self) -> None:
80-
luid = "6561daa3-20e8-407f-ba09-709b178c0b4a"
81-
with requests_mock.mock() as m:
82-
m.delete(f"{self.baseurl}/{luid}")
83-
self.server.metrics.delete(luid)
84-
85-
def test_metrics_update(self) -> None:
86-
luid = "6561daa3-20e8-407f-ba09-709b178c0b4a"
87-
metric = TSC.MetricItem()
88-
metric._id = luid
89-
90-
with requests_mock.mock() as m:
91-
m.put(f"{self.baseurl}/{luid}", text=METRICS_UPDATE.read_text())
92-
metric = self.server.metrics.update(metric)
93-
94-
self.assertEqual(metric.id, "6561daa3-20e8-407f-ba09-709b178c0b4a")
95-
self.assertEqual(metric.name, "Example metric")
96-
self.assertEqual(metric.description, "Description of my metric.")
97-
self.assertEqual(metric.webpage_url, "https://test/#/site/site-name/metrics/3")
98-
self.assertEqual(format_datetime(metric.created_at), "2020-01-02T01:02:03Z")
99-
self.assertEqual(format_datetime(metric.updated_at), "2020-01-02T01:02:03Z")
100-
self.assertEqual(metric.suspended, True)
101-
self.assertEqual(metric.project_id, "32e79edb-6cfd-47dc-ad79-e8ec2fbb1d33")
102-
self.assertEqual(metric.project_name, "Default")
103-
self.assertEqual(metric.owner_id, "32e79edb-6cfd-47dc-ad79-e8ec2fbb1d33")
104-
self.assertEqual(metric.view_id, "29dae0cd-1862-4a20-a638-e2c2dfa682d4")
105-
self.assertEqual(len(metric.tags), 0)
15+
@pytest.fixture(scope="function")
16+
def server() -> TSC.Server:
17+
"""Fixture to create a TSC.Server instance for testing."""
18+
server = TSC.Server("http://test", False)
19+
20+
# Fake signin
21+
server._site_id = "dad65087-b08b-4603-af4e-2887b8aafc67"
22+
server._auth_token = "j80k54ll2lfMZ0tv97mlPvvSCRyD0DOM"
23+
server.version = "3.9"
24+
25+
return server
26+
27+
28+
def test_metrics_get(server: TSC.Server) -> None:
29+
with requests_mock.mock() as m:
30+
m.get(server.metrics.baseurl, text=METRICS_GET.read_text())
31+
all_metrics, pagination_item = server.metrics.get()
32+
33+
assert len(all_metrics) == 2
34+
assert pagination_item.total_available == 27
35+
assert all_metrics[0].id == "6561daa3-20e8-407f-ba09-709b178c0b4a"
36+
assert all_metrics[0].name == "Example metric"
37+
assert all_metrics[0].description == "Description of my metric."
38+
assert all_metrics[0].webpage_url == "https://test/#/site/site-name/metrics/3"
39+
assert format_datetime(all_metrics[0].created_at) == "2020-01-02T01:02:03Z"
40+
assert format_datetime(all_metrics[0].updated_at) == "2020-01-02T01:02:03Z"
41+
assert all_metrics[0].suspended
42+
assert all_metrics[0].project_id == "32e79edb-6cfd-47dc-ad79-e8ec2fbb1d33"
43+
assert all_metrics[0].project_name == "Default"
44+
assert all_metrics[0].owner_id == "32e79edb-6cfd-47dc-ad79-e8ec2fbb1d33"
45+
assert all_metrics[0].view_id == "29dae0cd-1862-4a20-a638-e2c2dfa682d4"
46+
assert len(all_metrics[0].tags) == 0
47+
48+
assert all_metrics[1].id == "721760d9-0aa4-4029-87ae-371c956cea07"
49+
assert all_metrics[1].name == "Another Example metric"
50+
assert all_metrics[1].description == "Description of another metric."
51+
assert all_metrics[1].webpage_url == "https://test/#/site/site-name/metrics/4"
52+
assert format_datetime(all_metrics[1].created_at) == "2020-01-03T01:02:03Z"
53+
assert format_datetime(all_metrics[1].updated_at) == "2020-01-04T01:02:03Z"
54+
assert all_metrics[1].suspended is False
55+
assert all_metrics[1].project_id == "486e0de0-2258-45bd-99cf-b62013e19f4e"
56+
assert all_metrics[1].project_name == "Assets"
57+
assert all_metrics[1].owner_id == "1bbbc2b9-847d-443c-9a1f-dbcf112b8814"
58+
assert all_metrics[1].view_id == "7dbfdb63-a6ca-4723-93ee-4fefc71992d3"
59+
assert len(all_metrics[1].tags) == 2
60+
assert "Test" in all_metrics[1].tags
61+
assert "Asset" in all_metrics[1].tags
62+
63+
64+
def test_metrics_get_by_id(server: TSC.Server) -> None:
65+
luid = "6561daa3-20e8-407f-ba09-709b178c0b4a"
66+
with requests_mock.mock() as m:
67+
m.get(f"{server.metrics.baseurl}/{luid}", text=METRICS_GET_BY_ID.read_text())
68+
metric = server.metrics.get_by_id(luid)
69+
70+
assert metric.id == "6561daa3-20e8-407f-ba09-709b178c0b4a"
71+
assert metric.name == "Example metric"
72+
assert metric.description == "Description of my metric."
73+
assert metric.webpage_url == "https://test/#/site/site-name/metrics/3"
74+
assert format_datetime(metric.created_at) == "2020-01-02T01:02:03Z"
75+
assert format_datetime(metric.updated_at) == "2020-01-02T01:02:03Z"
76+
assert metric.suspended
77+
assert metric.project_id == "32e79edb-6cfd-47dc-ad79-e8ec2fbb1d33"
78+
assert metric.project_name == "Default"
79+
assert metric.owner_id == "32e79edb-6cfd-47dc-ad79-e8ec2fbb1d33"
80+
assert metric.view_id == "29dae0cd-1862-4a20-a638-e2c2dfa682d4"
81+
assert len(metric.tags) == 0
82+
83+
84+
def test_metrics_delete(server: TSC.Server) -> None:
85+
luid = "6561daa3-20e8-407f-ba09-709b178c0b4a"
86+
with requests_mock.mock() as m:
87+
m.delete(f"{server.metrics.baseurl}/{luid}")
88+
server.metrics.delete(luid)
89+
90+
91+
def test_metrics_update(server: TSC.Server) -> None:
92+
luid = "6561daa3-20e8-407f-ba09-709b178c0b4a"
93+
metric = TSC.MetricItem()
94+
metric._id = luid
95+
96+
with requests_mock.mock() as m:
97+
m.put(f"{server.metrics.baseurl}/{luid}", text=METRICS_UPDATE.read_text())
98+
metric = server.metrics.update(metric)
99+
100+
assert metric.id == "6561daa3-20e8-407f-ba09-709b178c0b4a"
101+
assert metric.name == "Example metric"
102+
assert metric.description == "Description of my metric."
103+
assert metric.webpage_url == "https://test/#/site/site-name/metrics/3"
104+
assert format_datetime(metric.created_at) == "2020-01-02T01:02:03Z"
105+
assert format_datetime(metric.updated_at) == "2020-01-02T01:02:03Z"
106+
assert metric.suspended
107+
assert metric.project_id == "32e79edb-6cfd-47dc-ad79-e8ec2fbb1d33"
108+
assert metric.project_name == "Default"
109+
assert metric.owner_id == "32e79edb-6cfd-47dc-ad79-e8ec2fbb1d33"
110+
assert metric.view_id == "29dae0cd-1862-4a20-a638-e2c2dfa682d4"
111+
assert len(metric.tags) == 0

0 commit comments

Comments
 (0)