Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion test/test_datasource.py
Original file line number Diff line number Diff line change
Expand Up @@ -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())
Expand Down
192 changes: 99 additions & 93 deletions test/test_metrics.py
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -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
Loading