@@ -78,12 +78,12 @@ def test_create_folder_with_parent():
78
78
79
79
80
80
@mock .patch ("sasctl.core.Session.request" )
81
- def test_get_folder_with_path (request ):
82
- """Verify that simple folder paths instead of names are handled ."""
81
+ def test_get_folder_by_name (request ):
82
+ """Verify that looking up a folder by name works ."""
83
83
request .return_value .status_code = 200
84
84
request .return_value .json .return_value = {"name" : "Spam" }
85
85
86
- folder = folders .get_folder ("/ Spam" )
86
+ folder = folders .get_folder ("Spam" )
87
87
assert folder is not None
88
88
assert folder .name == "Spam"
89
89
@@ -95,4 +95,63 @@ def test_get_folder_with_path(request):
95
95
96
96
# / should have been stripped out of folder name
97
97
assert '"Spam"' in search_filter
98
- assert '"/Spam"' not in search_filter
98
+
99
+
100
+ @mock .patch ("sasctl.core.Session.request" )
101
+ def test_get_folder_by_path (request ):
102
+ """Verify that simple folder paths instead of names are handled."""
103
+ request .return_value .status_code = 200
104
+ request .return_value .json .return_value = {"name" : "Spam" }
105
+
106
+ folder = folders .get_folder ("/Spam" )
107
+ assert folder is not None
108
+ assert folder .name == "Spam"
109
+
110
+ # Should not have called list_folders to search. Should have been a direct call to lookup by path.
111
+ assert request .call_count == 1
112
+
113
+ url , params = request .call_args_list [0 ]
114
+ query_string = params ["params" ]
115
+
116
+ assert url [1 ] == "/folders/folders/@item"
117
+ assert query_string ["path" ] == "/Spam"
118
+
119
+
120
+ @mock .patch ("sasctl.core.Session.request" )
121
+ def test_get_folder_by_path (request ):
122
+ """Verify that complex folder paths are handled."""
123
+ request .return_value .status_code = 200
124
+ request .return_value .json .return_value = {"name" : "Spam" }
125
+
126
+ folder = folders .get_folder ("Spam/Eggs/Spam" )
127
+ assert folder is not None
128
+ assert folder .name == "Spam"
129
+
130
+ # Should not have called list_folders to search. Should have been a direct call to lookup by path.
131
+ assert request .call_count == 1
132
+
133
+ url , params = request .call_args_list [0 ]
134
+ query_string = params ["params" ]
135
+
136
+ assert url [1 ] == "/folders/folders/@item"
137
+
138
+ # Leading "/" should have been added
139
+ assert query_string ["path" ] == "/Spam/Eggs/Spam"
140
+
141
+
142
+ @mock .patch ("sasctl.core.Session.request" )
143
+ def test_get_folder_by_delegate (request ):
144
+ """Verify that folder can be found by using delegate strings (e.g. @public)."""
145
+ request .return_value .status_code = 200
146
+ request .return_value .json .return_value = {"name" : "Spam" }
147
+
148
+ folder = folders .get_folder ("@spam" )
149
+ assert folder is not None
150
+ assert folder .name == "Spam"
151
+
152
+ # Should not have called list_folders to search. Should have been a direct call to GET by id.
153
+ assert request .call_count == 1
154
+
155
+ url , params = request .call_args_list [0 ]
156
+ assert url [1 ] == "/folders/folders/@spam"
157
+ assert params == {}
0 commit comments