1+ import re
2+ import unittest
13from urllib .parse import parse_qs
24
35import pytest
@@ -11,33 +13,30 @@ def server():
1113 """Fixture to create a TSC.Server instance for testing."""
1214 server = TSC .Server ("http://test" , False )
1315
14- # Fake signin
15- server . _site_id = "dad65087-b08b-4603-af4e-2887b8aafc67"
16- server . _auth_token = "j80k54ll2lfMZ0tv97mlPvvSCRyD0DOM"
16+ def test_empty_filter ( self ):
17+ with pytest . raises ( TypeError ):
18+ TSC . Filter ( "" )
1719
1820 return server
1921
22+ resp = self .server .workbooks .get_request (url , request_object = opts )
23+ query = parse_qs (resp .request .query )
24+ assert "pagenumber" in query
25+ assert query ["pagenumber" ] == ["13" ]
26+ assert "pagesize" in query
27+ assert query ["pagesize" ] == ["13" ]
28+ assert "filter" in query
29+ assert query ["filter" ] == ["name:eq:superstore" ]
2030
21- def test_empty_filter () -> None :
22- with pytest .raises (TypeError ) :
23- TSC .Filter ("" ) # type: ignore
31+ def test_filter_equals_list ( self ) :
32+ with pytest .raises (ValueError , match = "Filter values can only be a list if the operator is 'in'." ) as cm :
33+ TSC .Filter (TSC . RequestOptions . Field . Tags , TSC . RequestOptions . Operator . Equals , [ "foo" , "bar" ])
2434
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" ]
35+ def test_filter_in (self ):
36+ with requests_mock .mock () as m :
37+ m .get (requests_mock .ANY )
38+ url = "http://test/api/2.3/sites/dad65087-b08b-4603-af4e-2887b8aafc67/workbooks"
39+ opts = TSC .RequestOptions (pagesize = 13 , pagenumber = 13 )
4140
4241
4342def test_filter_equals_list () -> None :
@@ -94,14 +93,50 @@ def test_filter_combo(server: TSC.Server) -> None:
9493 )
9594 )
9695
97- opts .filter .add (TSC .Filter (TSC .RequestOptions .Field .SiteRole , TSC .RequestOptions .Operator .Equals , "Publisher" ))
96+ resp = self .server .workbooks .get_request (url , request_object = opts )
97+ query = parse_qs (resp .request .query )
98+ assert "pagenumber" in query
99+ assert query ["pagenumber" ] == ["13" ]
100+ assert "pagesize" in query
101+ assert query ["pagesize" ] == ["13" ]
102+ assert "filter" in query
103+ assert query ["filter" ] == ["tags:in:[stocks,market]" ]
98104
99105 resp = server .workbooks .get_request (url , request_object = opts )
100106
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" ]
107+ resp = self .server .workbooks .get_request (url , request_object = opts )
108+ query = parse_qs (resp .request .query )
109+ assert "pagenumber" in query
110+ assert query ["pagenumber" ] == ["13" ]
111+ assert "pagesize" in query
112+ assert query ["pagesize" ] == ["13" ]
113+ assert "sort" in query
114+ assert query ["sort" ] == ["name:asc" ]
115+
116+ def test_filter_combo (self ):
117+ with requests_mock .mock () as m :
118+ m .get (requests_mock .ANY )
119+ url = "http://test/api/2.3/sites/dad65087-b08b-4603-af4e-2887b8aafc67/users"
120+ opts = TSC .RequestOptions (pagesize = 13 , pagenumber = 13 )
121+
122+ opts .filter .add (
123+ TSC .Filter (
124+ TSC .RequestOptions .Field .LastLogin ,
125+ TSC .RequestOptions .Operator .GreaterThanOrEqual ,
126+ "2017-01-15T00:00:00:00Z" ,
127+ )
128+ )
129+
130+ opts .filter .add (
131+ TSC .Filter (TSC .RequestOptions .Field .SiteRole , TSC .RequestOptions .Operator .Equals , "Publisher" )
132+ )
133+
134+ resp = self .server .workbooks .get_request (url , request_object = opts )
135+
136+ query = parse_qs (resp .request .query )
137+ assert "pagenumber" in query
138+ assert query ["pagenumber" ] == ["13" ]
139+ assert "pagesize" in query
140+ assert query ["pagesize" ] == ["13" ]
141+ assert "filter" in query
142+ assert query ["filter" ] == ["lastlogin:gte:2017-01-15t00:00:00:00z,siterole:eq:publisher" ]
0 commit comments