Skip to content

Commit 0904dd9

Browse files
committed
testing & formatting
1 parent 0f4971f commit 0904dd9

File tree

2 files changed

+30
-5
lines changed

2 files changed

+30
-5
lines changed

src/sasctl/_services/folders.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,7 @@ def create_folder(cls, name, parent=None, description=None):
4949

5050
parent_uri = cls.get_link(parent_obj, "self")
5151
if parent_uri is None:
52-
raise ValueError(
53-
f"`parent` folder {parent} does not exist.")
52+
raise ValueError(f"`parent` folder {parent} does not exist.")
5453
parent_uri = parent_uri["uri"]
5554
else:
5655
parent_uri = None
@@ -159,12 +158,14 @@ def create_path(cls, folder, description=None):
159158
if not folder.startswith("/"):
160159
folder = f"/{folder}"
161160
path = folder.split("/")
162-
for level in range(2, len(path)+1):
161+
for level in range(2, len(path) + 1):
163162

164163
current_path = path[0:level]
165164
name = current_path[-1]
166165
parent = "/".join(current_path[0:-1]) or None
167166
new_folder = cls.get_folder("/".join(current_path))
168167
if not new_folder:
169-
new_folder = cls.create_folder(name, parent=parent, description=description)
170-
return new_folder
168+
new_folder = cls.create_folder(
169+
name, parent=parent, description=description
170+
)
171+
return new_folder

tests/unit/test_folders.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,30 @@ def test_create_folder_with_parent():
7878
folders.create_folder(FOLDER_NAME, parent="Doesnt Matter")
7979

8080

81+
@mock.patch("sasctl._services.folders.Folders.create_folder")
82+
@mock.patch("sasctl._services.folders.Folders.get_folder")
83+
def test_create_path(get_folder, create_folder):
84+
get_folder.side_effect = lambda x: x in ["/quests", "/quests/grail"]
85+
86+
folders.create_path("/quests/grail/knights/ni")
87+
88+
# Should have been called once for each partial path
89+
assert get_folder.call_count == 4
90+
assert get_folder.call_args_list[0][0][0] == "/quests"
91+
assert get_folder.call_args_list[1][0][0] == "/quests/grail"
92+
assert get_folder.call_args_list[2][0][0] == "/quests/grail/knights"
93+
assert get_folder.call_args_list[3][0][0] == "/quests/grail/knights/ni"
94+
95+
# /quests/grail already exists, so should have been called twice
96+
# to create last two folders.
97+
assert create_folder.call_count == 2
98+
assert create_folder.call_args_list[0][0][0] == "knights"
99+
assert create_folder.call_args_list[0][1]["parent"] == "/quests/grail"
100+
101+
assert create_folder.call_args_list[1][0][0] == "ni"
102+
assert create_folder.call_args_list[1][1]["parent"] == "/quests/grail/knights"
103+
104+
81105
@mock.patch("sasctl.core.Session.request")
82106
def test_get_folder_by_name(request):
83107
"""Verify that looking up a folder by name works."""

0 commit comments

Comments
 (0)