|
1 | | -import unittest |
| 1 | +from pathlib import Path |
2 | 2 |
|
| 3 | +import pytest |
3 | 4 | import requests_mock |
4 | 5 |
|
5 | 6 | import tableauserverclient as TSC |
6 | | -from ._utils import read_xml_asset |
7 | | - |
8 | | -GET_XML = "table_get.xml" |
9 | | -UPDATE_XML = "table_update.xml" |
10 | | - |
11 | | - |
12 | | -class TableTests(unittest.TestCase): |
13 | | - def setUp(self): |
14 | | - self.server = TSC.Server("http://test", False) |
15 | | - |
16 | | - # Fake signin |
17 | | - self.server._site_id = "dad65087-b08b-4603-af4e-2887b8aafc67" |
18 | | - self.server._auth_token = "j80k54ll2lfMZ0tv97mlPvvSCRyD0DOM" |
19 | | - self.server.version = "3.5" |
20 | | - |
21 | | - self.baseurl = self.server.tables.baseurl |
22 | | - |
23 | | - def test_get(self): |
24 | | - response_xml = read_xml_asset(GET_XML) |
25 | | - with requests_mock.mock() as m: |
26 | | - m.get(self.baseurl, text=response_xml) |
27 | | - all_tables, pagination_item = self.server.tables.get() |
28 | | - |
29 | | - self.assertEqual(4, pagination_item.total_available) |
30 | | - self.assertEqual("10224773-ecee-42ac-b822-d786b0b8e4d9", all_tables[0].id) |
31 | | - self.assertEqual("dim_Product", all_tables[0].name) |
32 | | - |
33 | | - self.assertEqual("53c77bc1-fb41-4342-a75a-f68ac0656d0d", all_tables[1].id) |
34 | | - self.assertEqual("customer", all_tables[1].name) |
35 | | - self.assertEqual("dbo", all_tables[1].schema) |
36 | | - self.assertEqual("9324cf6b-ba72-4b8e-b895-ac3f28d2f0e0", all_tables[1].contact_id) |
37 | | - self.assertEqual(False, all_tables[1].certified) |
38 | | - |
39 | | - def test_update(self): |
40 | | - response_xml = read_xml_asset(UPDATE_XML) |
41 | | - with requests_mock.mock() as m: |
42 | | - m.put(self.baseurl + "/10224773-ecee-42ac-b822-d786b0b8e4d9", text=response_xml) |
43 | | - single_table = TSC.TableItem("test") |
44 | | - single_table._id = "10224773-ecee-42ac-b822-d786b0b8e4d9" |
45 | | - |
46 | | - single_table.contact_id = "8e1a8235-c9ee-4d61-ae82-2ffacceed8e0" |
47 | | - single_table.certified = True |
48 | | - single_table.certification_note = "Test" |
49 | | - single_table = self.server.tables.update(single_table) |
50 | | - |
51 | | - self.assertEqual("10224773-ecee-42ac-b822-d786b0b8e4d9", single_table.id) |
52 | | - self.assertEqual("8e1a8235-c9ee-4d61-ae82-2ffacceed8e0", single_table.contact_id) |
53 | | - self.assertEqual(True, single_table.certified) |
54 | | - self.assertEqual("Test", single_table.certification_note) |
55 | | - |
56 | | - def test_delete(self): |
57 | | - with requests_mock.mock() as m: |
58 | | - m.delete(self.baseurl + "/0448d2ed-590d-4fa0-b272-a2a8a24555b5", status_code=204) |
59 | | - self.server.tables.delete("0448d2ed-590d-4fa0-b272-a2a8a24555b5") |
| 7 | + |
| 8 | +TEST_ASSET_DIR = Path(__file__).parent / "assets" |
| 9 | + |
| 10 | +GET_XML = TEST_ASSET_DIR / "table_get.xml" |
| 11 | +UPDATE_XML = TEST_ASSET_DIR / "table_update.xml" |
| 12 | + |
| 13 | + |
| 14 | +@pytest.fixture(scope="function") |
| 15 | +def server(): |
| 16 | + """Fixture to create a TSC.Server instance for testing.""" |
| 17 | + server = TSC.Server("http://test", False) |
| 18 | + |
| 19 | + # Fake signin |
| 20 | + server._site_id = "dad65087-b08b-4603-af4e-2887b8aafc67" |
| 21 | + server._auth_token = "j80k54ll2lfMZ0tv97mlPvvSCRyD0DOM" |
| 22 | + server.version = "3.5" |
| 23 | + |
| 24 | + return server |
| 25 | + |
| 26 | + |
| 27 | +def test_get(server: TSC.Server) -> None: |
| 28 | + response_xml = GET_XML.read_text() |
| 29 | + with requests_mock.mock() as m: |
| 30 | + m.get(server.tables.baseurl, text=response_xml) |
| 31 | + all_tables, pagination_item = server.tables.get() |
| 32 | + |
| 33 | + assert 4 == pagination_item.total_available |
| 34 | + assert "10224773-ecee-42ac-b822-d786b0b8e4d9" == all_tables[0].id |
| 35 | + assert "dim_Product" == all_tables[0].name |
| 36 | + |
| 37 | + assert "53c77bc1-fb41-4342-a75a-f68ac0656d0d" == all_tables[1].id |
| 38 | + assert "customer" == all_tables[1].name |
| 39 | + assert "dbo" == all_tables[1].schema |
| 40 | + assert "9324cf6b-ba72-4b8e-b895-ac3f28d2f0e0" == all_tables[1].contact_id |
| 41 | + assert False == all_tables[1].certified |
| 42 | + |
| 43 | + |
| 44 | +def test_update(server: TSC.Server) -> None: |
| 45 | + response_xml = UPDATE_XML.read_text() |
| 46 | + with requests_mock.mock() as m: |
| 47 | + m.put(server.tables.baseurl + "/10224773-ecee-42ac-b822-d786b0b8e4d9", text=response_xml) |
| 48 | + single_table = TSC.TableItem("test") |
| 49 | + single_table._id = "10224773-ecee-42ac-b822-d786b0b8e4d9" |
| 50 | + |
| 51 | + single_table.contact_id = "8e1a8235-c9ee-4d61-ae82-2ffacceed8e0" |
| 52 | + single_table.certified = True |
| 53 | + single_table.certification_note = "Test" |
| 54 | + single_table = server.tables.update(single_table) |
| 55 | + |
| 56 | + assert "10224773-ecee-42ac-b822-d786b0b8e4d9" == single_table.id |
| 57 | + assert "8e1a8235-c9ee-4d61-ae82-2ffacceed8e0" == single_table.contact_id |
| 58 | + assert True == single_table.certified |
| 59 | + assert "Test" == single_table.certification_note |
| 60 | + |
| 61 | + |
| 62 | +def test_delete(server: TSC.Server) -> None: |
| 63 | + with requests_mock.mock() as m: |
| 64 | + m.delete(server.tables.baseurl + "/0448d2ed-590d-4fa0-b272-a2a8a24555b5", status_code=204) |
| 65 | + server.tables.delete("0448d2ed-590d-4fa0-b272-a2a8a24555b5") |
0 commit comments