Skip to content

Commit 5552089

Browse files
committed
The largest test test_get_vents_all_filter_combinations moved to seperate file, new tests added, old tests edited
1 parent 8291ce2 commit 5552089

File tree

4 files changed

+486
-399
lines changed

4 files changed

+486
-399
lines changed

tests/conftest.py

Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
1+
from datetime import datetime, timedelta, timezone
12
import pytest
3+
from xml.dom.minidom import Entity
24

35
from ayon_api import (
46
get_project,
57
create_project,
68
update_project,
79
delete_project,
10+
get_folders,
11+
get_products,
12+
get_tasks
813
)
14+
from ayon_api.entity_hub import EntityHub
915

1016

1117
class _Cache:
@@ -60,3 +66,185 @@ def project_entity_fixture(project_name_fixture):
6066
yield project_entity
6167
if created:
6268
delete_project(project_name_fixture)
69+
70+
71+
@pytest.fixture
72+
def clean_project(project_name_fixture):
73+
hub = EntityHub(project_name_fixture)
74+
75+
for folder in get_folders(
76+
project_name_fixture
77+
):
78+
# delete tasks
79+
for task in get_tasks(
80+
project_name_fixture,
81+
folder_ids=[folder["id"]]
82+
):
83+
hub.delete_entity(hub.get_task_by_id(task["id"]))
84+
85+
# delete products
86+
for product in list(get_products(
87+
project_name_fixture, folder_ids=[folder["id"]]
88+
)):
89+
product_entity = hub.get_product_by_id(product["id"])
90+
hub.delete_entity(product_entity)
91+
92+
entity = hub.get_folder_by_id(folder["id"])
93+
hub.delete_entity(entity)
94+
95+
hub.commit_changes()
96+
97+
98+
class TestEventFilters:
99+
project_names = [
100+
(None),
101+
([]),
102+
(["demo_Big_Episodic"]),
103+
(["demo_Big_Feature"]),
104+
(["demo_Commercial"]),
105+
(["AY_Tests"]),
106+
(["demo_Big_Episodic", "demo_Big_Feature", "demo_Commercial", "AY_Tests"])
107+
]
108+
109+
topics = [
110+
(None),
111+
([]),
112+
(["entity.folder.attrib_changed"]),
113+
(["entity.task.created", "entity.project.created"]),
114+
(["settings.changed", "entity.version.status_changed"]),
115+
(["entity.task.status_changed", "entity.folder.deleted"]),
116+
([
117+
"entity.project.changed",
118+
"entity.task.tags_changed",
119+
"entity.product.created"
120+
])
121+
]
122+
123+
users = [
124+
(None),
125+
([]),
126+
(["admin"]),
127+
(["mkolar", "tadeas.8964"]),
128+
(["roy", "luke.inderwick", "ynbot"]),
129+
([
130+
"entity.folder.attrib_changed",
131+
"entity.project.created",
132+
"entity.task.created",
133+
"settings.changed"
134+
]),
135+
]
136+
137+
# states is incorrect name for statuses
138+
states = [
139+
(None),
140+
([]),
141+
(["pending", "in_progress", "finished", "failed", "aborted", "restarted"]),
142+
(["failed", "aborted"]),
143+
(["pending", "in_progress"]),
144+
(["finished", "failed", "restarted"]),
145+
(["finished"]),
146+
]
147+
148+
include_logs = [
149+
(None),
150+
(True),
151+
(False),
152+
]
153+
154+
has_children = [
155+
(None),
156+
(True),
157+
(False),
158+
]
159+
160+
now = datetime.now(timezone.utc)
161+
162+
newer_than = [
163+
(None),
164+
((now - timedelta(days=2)).isoformat()),
165+
((now - timedelta(days=5)).isoformat()),
166+
((now - timedelta(days=10)).isoformat()),
167+
((now - timedelta(days=20)).isoformat()),
168+
((now - timedelta(days=30)).isoformat()),
169+
]
170+
171+
older_than = [
172+
(None),
173+
((now - timedelta(days=0)).isoformat()),
174+
((now - timedelta(days=5)).isoformat()),
175+
((now - timedelta(days=10)).isoformat()),
176+
((now - timedelta(days=20)).isoformat()),
177+
((now - timedelta(days=30)).isoformat()),
178+
]
179+
180+
fields = [
181+
(None),
182+
([]),
183+
]
184+
185+
186+
class TestInvalidEventFilters:
187+
topics = [
188+
(None),
189+
(["invalid_topic_name_1", "invalid_topic_name_2"]),
190+
(["invalid_topic_name_1"]),
191+
]
192+
193+
project_names = [
194+
(None),
195+
(["invalid_project"]),
196+
(["invalid_project", "demo_Big_Episodic", "demo_Big_Feature"]),
197+
(["invalid_name_2", "demo_Commercial"]),
198+
(["demo_Commercial"]),
199+
]
200+
201+
states = [
202+
(None),
203+
(["pending_invalid"]),
204+
(["in_progress_invalid"]),
205+
(["finished_invalid", "failed_invalid"]),
206+
]
207+
208+
users = [
209+
(None),
210+
(["ayon_invalid_user"]),
211+
(["ayon_invalid_user1", "ayon_invalid_user2"]),
212+
(["ayon_invalid_user1", "ayon_invalid_user2", "admin"]),
213+
]
214+
215+
newer_than = [
216+
(None),
217+
((datetime.now(timezone.utc) + timedelta(days=2)).isoformat()),
218+
((datetime.now(timezone.utc) + timedelta(days=5)).isoformat()),
219+
((datetime.now(timezone.utc) - timedelta(days=5)).isoformat()),
220+
]
221+
222+
223+
class TestUpdateEventData:
224+
update_sender = [
225+
("test.server.api"),
226+
]
227+
228+
update_username = [
229+
("testing_user"),
230+
]
231+
232+
update_status = [
233+
("pending"),
234+
("in_progress"),
235+
("finished"),
236+
("failed"),
237+
("aborted"),
238+
("restarted")
239+
]
240+
241+
update_description = [
242+
("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce vivera."),
243+
("Updated description test...")
244+
]
245+
246+
update_retries = [
247+
(1),
248+
(0),
249+
(10),
250+
]

tests/test_entity_hub.py

Lines changed: 46 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import uuid
33

44
from requests import delete
5+
import test
56

67
import pytest
78

@@ -264,7 +265,7 @@ def test_custom_values_on_entities(project_entity_fixture):
264265
hub.commit_changes()
265266

266267

267-
def test_label_eq_name_on_entities(project_entity_fixture):
268+
def test_label_eq_name_on_entities_1(project_entity_fixture):
268269
"""Test label that have same values as name on folder and task.
269270
270271
When the entity has same name and label, the label should be set to None.
@@ -372,11 +373,11 @@ def test_data_changes_on_entities(project_entity_fixture):
372373

373374
hub = EntityHub(project_name)
374375

375-
folder = hub.get_or_query_entity_by_id(folder_id, {"folder"})
376+
folder = hub.get_or_fetch_entity_by_id(folder_id, {"folder"})
376377
folder.data["key3"] = "value3"
377378
folder.data.pop("key1")
378379

379-
task = hub.get_or_query_entity_by_id(task_id, {"task"})
380+
task = hub.get_or_fetch_entity_by_id(task_id, {"task"})
380381
task.data["key4"] = "value4"
381382
task.data.pop("key2")
382383
hub.commit_changes()
@@ -397,7 +398,7 @@ def test_data_changes_on_entities(project_entity_fixture):
397398
hub.commit_changes()
398399

399400

400-
def test_label_eq_name_on_entities(project_entity_fixture):
401+
def test_label_eq_name_on_entities_2(project_entity_fixture):
401402
"""Test label that have same values as name on folder and task.
402403
403404
When the entity has same name and label, the label should be set to None.
@@ -430,8 +431,8 @@ def test_label_eq_name_on_entities(project_entity_fixture):
430431
hub.commit_changes()
431432

432433
hub = EntityHub(project_name)
433-
folder = hub.get_or_query_entity_by_id(folder_id, {"folder"})
434-
task = hub.get_or_query_entity_by_id(task_id, {"task"})
434+
folder = hub.get_or_fetch_entity_by_id(folder_id, {"folder"})
435+
task = hub.get_or_fetch_entity_by_id(task_id, {"task"})
435436

436437
assert folder.status == init_status_name, (
437438
"Folder status set on create was not propagated"
@@ -759,7 +760,7 @@ def test_create_delete_with_duplicated_names(
759760

760761
test_names = [
761762
("test_name"),
762-
# ("test_123"),
763+
("test_123"),
763764
]
764765

765766
test_product_types = [
@@ -769,6 +770,8 @@ def test_create_delete_with_duplicated_names(
769770
("workfile"),
770771
]
771772

773+
774+
@pytest.mark.usefixtures("clean_project")
772775
@pytest.mark.parametrize("folder_name", test_names)
773776
@pytest.mark.parametrize("product_name", test_names)
774777
@pytest.mark.parametrize("product_type", test_product_types)
@@ -833,6 +836,7 @@ def test_create_delete_products(
833836
assert product.get_folder_id() == folder["id"]
834837

835838

839+
@pytest.mark.usefixtures("clean_project")
836840
@pytest.mark.parametrize("name", test_names)
837841
def test_create_delete_folders(project_entity_fixture, name):
838842
project_name = project_entity_fixture["name"]
@@ -893,10 +897,12 @@ def test_create_delete_folders(project_entity_fixture, name):
893897

894898

895899
test_version_numbers = [
896-
([1, 2, 3, 4])
900+
([1, 2, 3, 4]),
901+
([8, 10, 4, 5]),
897902
]
898903

899904

905+
@pytest.mark.usefixtures("clean_project")
900906
@pytest.mark.parametrize("version_numbers", test_version_numbers)
901907
def test_create_delete_versions(project_entity_fixture, version_numbers):
902908
# prepare hierarchy
@@ -953,6 +959,7 @@ def test_create_delete_versions(project_entity_fixture, version_numbers):
953959
]
954960

955961

962+
@pytest.mark.usefixtures("clean_project")
956963
@pytest.mark.parametrize("version_number", test_invalid_version_number)
957964
def test_create_invalid_versions(project_entity_fixture, version_number):
958965
# prepare hierarchy
@@ -983,6 +990,7 @@ def test_create_invalid_versions(project_entity_fixture, version_number):
983990
hub.commit_changes()
984991

985992

993+
@pytest.mark.usefixtures("clean_project")
986994
def test_change_status_on_version(project_entity_fixture):
987995
folder_types = [
988996
type["name"] for type in project_entity_fixture["folderTypes"]
@@ -1020,6 +1028,7 @@ def test_change_status_on_version(project_entity_fixture):
10201028
assert version.get_status() == status_name
10211029

10221030

1031+
@pytest.mark.usefixtures("clean_project")
10231032
@pytest.mark.parametrize("version", test_version_numbers)
10241033
def test_set_invalid_status_on_version(project_entity_fixture, version):
10251034
folder_types = [
@@ -1087,6 +1096,7 @@ def test_set_invalid_status_on_version(project_entity_fixture, version):
10871096
]
10881097

10891098

1099+
@pytest.mark.usefixtures("clean_project")
10901100
@pytest.mark.parametrize("tags", test_tags)
10911101
def test_set_tag_on_version(project_entity_fixture, tags):
10921102
folder_types = [
@@ -1125,12 +1135,37 @@ def test_set_invalid_tag_on_version():
11251135
raise NotImplementedError()
11261136

11271137

1128-
def test_status_definition_on_project(project_entity_fixture):
1138+
test_statuses = [
1139+
("status1"),
1140+
("status2"),
1141+
("status3"),
1142+
]
1143+
1144+
test_icon = [
1145+
("arrow_forward"),
1146+
("expand_circle_down"),
1147+
("done_outline"),
1148+
]
1149+
1150+
1151+
@pytest.mark.parametrize("status_name", test_statuses)
1152+
@pytest.mark.parametrize("icon_name", test_icon)
1153+
def test_status_definition_on_project(
1154+
project_entity_fixture,
1155+
status_name,
1156+
icon_name
1157+
):
11291158
hub = EntityHub(project_entity_fixture["name"])
11301159

11311160
project = hub.project_entity
1132-
project.status = "test_status"
1133-
print(project.status)
1161+
project.get_statuses().create(
1162+
status_name,
1163+
icon_name
1164+
)
1165+
assert status_name == project.get_statuses().get(status_name).get_name()
1166+
assert icon_name == project.get_statuses().get(status_name).get_icon()
1167+
1168+
# print(project.status)
11341169

11351170
# project.set_status()
11361171
# project_status_obj = hub.project_entity.get_statuses()

0 commit comments

Comments
 (0)