Skip to content

Commit 48bf4a7

Browse files
committed
chore: pytestify sort
1 parent 4d67996 commit 48bf4a7

File tree

1 file changed

+94
-91
lines changed

1 file changed

+94
-91
lines changed

test/test_sort.py

Lines changed: 94 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import re
2-
import unittest
31
from urllib.parse import parse_qs
42

53
import pytest
@@ -8,97 +6,102 @@
86
import tableauserverclient as TSC
97

108

11-
class SortTests(unittest.TestCase):
12-
def setUp(self):
13-
self.server = TSC.Server("http://test", False)
14-
self.server.version = "3.10"
15-
self.server._site_id = "dad65087-b08b-4603-af4e-2887b8aafc67"
16-
self.server._auth_token = "j80k54ll2lfMZ0tv97mlPvvSCRyD0DOM"
17-
self.baseurl = self.server.workbooks.baseurl
18-
19-
def test_empty_filter(self):
20-
with pytest.raises(TypeError):
21-
TSC.Filter("")
22-
23-
def test_filter_equals(self):
24-
with requests_mock.mock() as m:
25-
m.get(requests_mock.ANY)
26-
url = "http://test/api/2.3/sites/dad65087-b08b-4603-af4e-2887b8aafc67/workbooks"
27-
opts = TSC.RequestOptions(pagesize=13, pagenumber=13)
28-
opts.filter.add(TSC.Filter(TSC.RequestOptions.Field.Name, TSC.RequestOptions.Operator.Equals, "Superstore"))
29-
30-
resp = self.server.workbooks.get_request(url, request_object=opts)
31-
query = parse_qs(resp.request.query)
32-
assert "pagenumber" in query
33-
assert query["pagenumber"] == ["13"]
34-
assert "pagesize" in query
35-
assert query["pagesize"] == ["13"]
36-
assert "filter" in query
37-
assert query["filter"] == ["name:eq:superstore"]
38-
39-
def test_filter_equals_list(self):
40-
with pytest.raises(ValueError, match="Filter values can only be a list if the operator is 'in'.") as cm:
41-
TSC.Filter(TSC.RequestOptions.Field.Tags, TSC.RequestOptions.Operator.Equals, ["foo", "bar"])
42-
43-
def test_filter_in(self):
44-
with requests_mock.mock() as m:
45-
m.get(requests_mock.ANY)
46-
url = "http://test/api/2.3/sites/dad65087-b08b-4603-af4e-2887b8aafc67/workbooks"
47-
opts = TSC.RequestOptions(pagesize=13, pagenumber=13)
48-
49-
opts.filter.add(
50-
TSC.Filter(TSC.RequestOptions.Field.Tags, TSC.RequestOptions.Operator.In, ["stocks", "market"])
51-
)
9+
@pytest.fixture(scope="function")
10+
def server():
11+
"""Fixture to create a TSC.Server instance for testing."""
12+
server = TSC.Server("http://test", False)
5213

53-
resp = self.server.workbooks.get_request(url, request_object=opts)
54-
query = parse_qs(resp.request.query)
55-
assert "pagenumber" in query
56-
assert query["pagenumber"] == ["13"]
57-
assert "pagesize" in query
58-
assert query["pagesize"] == ["13"]
59-
assert "filter" in query
60-
assert query["filter"] == ["tags:in:[stocks,market]"]
61-
62-
def test_sort_asc(self):
63-
with requests_mock.mock() as m:
64-
m.get(requests_mock.ANY)
65-
url = "http://test/api/2.3/sites/dad65087-b08b-4603-af4e-2887b8aafc67/workbooks"
66-
opts = TSC.RequestOptions(pagesize=13, pagenumber=13)
67-
opts.sort.add(TSC.Sort(TSC.RequestOptions.Field.Name, TSC.RequestOptions.Direction.Asc))
68-
69-
resp = self.server.workbooks.get_request(url, request_object=opts)
70-
query = parse_qs(resp.request.query)
71-
assert "pagenumber" in query
72-
assert query["pagenumber"] == ["13"]
73-
assert "pagesize" in query
74-
assert query["pagesize"] == ["13"]
75-
assert "sort" in query
76-
assert query["sort"] == ["name:asc"]
77-
78-
def test_filter_combo(self):
79-
with requests_mock.mock() as m:
80-
m.get(requests_mock.ANY)
81-
url = "http://test/api/2.3/sites/dad65087-b08b-4603-af4e-2887b8aafc67/users"
82-
opts = TSC.RequestOptions(pagesize=13, pagenumber=13)
83-
84-
opts.filter.add(
85-
TSC.Filter(
86-
TSC.RequestOptions.Field.LastLogin,
87-
TSC.RequestOptions.Operator.GreaterThanOrEqual,
88-
"2017-01-15T00:00:00:00Z",
89-
)
90-
)
14+
# Fake signin
15+
server._site_id = "dad65087-b08b-4603-af4e-2887b8aafc67"
16+
server._auth_token = "j80k54ll2lfMZ0tv97mlPvvSCRyD0DOM"
17+
18+
return server
19+
20+
21+
def test_empty_filter() -> None:
22+
with pytest.raises(TypeError):
23+
TSC.Filter("") # type: ignore
24+
25+
26+
def test_filter_equals(server: TSC.Server) -> None:
27+
with requests_mock.mock() as m:
28+
m.get(requests_mock.ANY)
29+
url = "http://test/api/2.3/sites/dad65087-b08b-4603-af4e-2887b8aafc67/workbooks"
30+
opts = TSC.RequestOptions(pagesize=13, pagenumber=13)
31+
opts.filter.add(TSC.Filter(TSC.RequestOptions.Field.Name, TSC.RequestOptions.Operator.Equals, "Superstore"))
32+
33+
resp = server.workbooks.get_request(url, request_object=opts)
34+
query = parse_qs(resp.request.query)
35+
assert "pagenumber" in query
36+
assert query["pagenumber"] == ["13"]
37+
assert "pagesize" in query
38+
assert query["pagesize"] == ["13"]
39+
assert "filter" in query
40+
assert query["filter"] == ["name:eq:superstore"]
41+
42+
43+
def test_filter_equals_list() -> None:
44+
with pytest.raises(ValueError, match="Filter values can only be a list if the operator is 'in'.") as cm:
45+
TSC.Filter(TSC.RequestOptions.Field.Tags, TSC.RequestOptions.Operator.Equals, ["foo", "bar"])
9146

92-
opts.filter.add(
93-
TSC.Filter(TSC.RequestOptions.Field.SiteRole, TSC.RequestOptions.Operator.Equals, "Publisher")
47+
48+
def test_filter_in(server: TSC.Server) -> None:
49+
with requests_mock.mock() as m:
50+
m.get(requests_mock.ANY)
51+
url = "http://test/api/2.3/sites/dad65087-b08b-4603-af4e-2887b8aafc67/workbooks"
52+
opts = TSC.RequestOptions(pagesize=13, pagenumber=13)
53+
54+
opts.filter.add(TSC.Filter(TSC.RequestOptions.Field.Tags, TSC.RequestOptions.Operator.In, ["stocks", "market"]))
55+
56+
resp = server.workbooks.get_request(url, request_object=opts)
57+
query = parse_qs(resp.request.query)
58+
assert "pagenumber" in query
59+
assert query["pagenumber"] == ["13"]
60+
assert "pagesize" in query
61+
assert query["pagesize"] == ["13"]
62+
assert "filter" in query
63+
assert query["filter"] == ["tags:in:[stocks,market]"]
64+
65+
66+
def test_sort_asc(server: TSC.Server) -> None:
67+
with requests_mock.mock() as m:
68+
m.get(requests_mock.ANY)
69+
url = "http://test/api/2.3/sites/dad65087-b08b-4603-af4e-2887b8aafc67/workbooks"
70+
opts = TSC.RequestOptions(pagesize=13, pagenumber=13)
71+
opts.sort.add(TSC.Sort(TSC.RequestOptions.Field.Name, TSC.RequestOptions.Direction.Asc))
72+
73+
resp = server.workbooks.get_request(url, request_object=opts)
74+
query = parse_qs(resp.request.query)
75+
assert "pagenumber" in query
76+
assert query["pagenumber"] == ["13"]
77+
assert "pagesize" in query
78+
assert query["pagesize"] == ["13"]
79+
assert "sort" in query
80+
assert query["sort"] == ["name:asc"]
81+
82+
83+
def test_filter_combo(server: TSC.Server) -> None:
84+
with requests_mock.mock() as m:
85+
m.get(requests_mock.ANY)
86+
url = "http://test/api/2.3/sites/dad65087-b08b-4603-af4e-2887b8aafc67/users"
87+
opts = TSC.RequestOptions(pagesize=13, pagenumber=13)
88+
89+
opts.filter.add(
90+
TSC.Filter(
91+
TSC.RequestOptions.Field.LastLogin,
92+
TSC.RequestOptions.Operator.GreaterThanOrEqual,
93+
"2017-01-15T00:00:00:00Z",
9494
)
95+
)
96+
97+
opts.filter.add(TSC.Filter(TSC.RequestOptions.Field.SiteRole, TSC.RequestOptions.Operator.Equals, "Publisher"))
9598

96-
resp = self.server.workbooks.get_request(url, request_object=opts)
99+
resp = server.workbooks.get_request(url, request_object=opts)
97100

98-
query = parse_qs(resp.request.query)
99-
assert "pagenumber" in query
100-
assert query["pagenumber"] == ["13"]
101-
assert "pagesize" in query
102-
assert query["pagesize"] == ["13"]
103-
assert "filter" in query
104-
assert query["filter"] == ["lastlogin:gte:2017-01-15t00:00:00:00z,siterole:eq:publisher"]
101+
query = parse_qs(resp.request.query)
102+
assert "pagenumber" in query
103+
assert query["pagenumber"] == ["13"]
104+
assert "pagesize" in query
105+
assert query["pagesize"] == ["13"]
106+
assert "filter" in query
107+
assert query["filter"] == ["lastlogin:gte:2017-01-15t00:00:00:00z,siterole:eq:publisher"]

0 commit comments

Comments
 (0)