Skip to content

Commit 7e412e9

Browse files
chore(test): add test case for result for validate, validate-image
1 parent 3d08e88 commit 7e412e9

File tree

3 files changed

+181
-3
lines changed

3 files changed

+181
-3
lines changed

apps/project/tests/e2e_create_validate_image_project_test.py

Lines changed: 90 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,15 @@
1010

1111
from apps.common.utils import remove_object_keys
1212
from apps.contributor.factories import ContributorUserFactory
13+
from apps.contributor.models import ContributorUserGroup
14+
from apps.mapping.firebase.pull import pull_results_from_firebase
15+
from apps.mapping.models import (
16+
MappingSession,
17+
MappingSessionResult,
18+
MappingSessionResultTemp,
19+
MappingSessionUserGroup,
20+
MappingSessionUserGroupTemp,
21+
)
1322
from apps.project.models import Organization, Project
1423
from apps.tutorial.models import Tutorial
1524
from apps.user.factories import UserFactory
@@ -21,7 +30,7 @@ def create_override():
2130
def pre_save_override(sender: typing.Any, instance: typing.Any, **kwargs): # type: ignore[reportMissingParameterType]
2231
if sender == Tutorial:
2332
instance.firebase_id = f"tutorial_{instance.client_id}"
24-
elif sender in {Project, Organization}:
33+
elif sender in {Project, Organization, ContributorUserGroup}:
2534
instance.firebase_id = instance.client_id
2635

2736
pre_save.connect(pre_save_override)
@@ -248,6 +257,34 @@ class Mutation:
248257
}
249258
"""
250259

260+
CREATE_CONTRIBUTOR_USER_GROUP = """
261+
mutation CreateContributorUserGroup($data: ContributorUserGroupCreateInput!) {
262+
createContributorUserGroup(data: $data) {
263+
... on OperationInfo {
264+
__typename
265+
messages {
266+
code
267+
field
268+
kind
269+
message
270+
}
271+
}
272+
... on ContributorUserGroupTypeMutationResponseType {
273+
errors
274+
ok
275+
result {
276+
id
277+
name
278+
description
279+
clientId
280+
isArchived
281+
firebaseId
282+
}
283+
}
284+
}
285+
}
286+
"""
287+
251288
def test_validate_image_project_e2e(self):
252289
# TODO(susilnem): Add more test with filters
253290
with create_override():
@@ -527,3 +564,55 @@ def _test_project(self, filename: str):
527564
assert sanitized_tasks_actual == sanitized_tasks_expected, (
528565
"Differences found between expected and actual tasks on project in firebase."
529566
)
567+
568+
# Create contributor user group
569+
old_contributor_user_group_data = test_data["create_contributor_user_group"]
570+
for input_data in old_contributor_user_group_data:
571+
usergroup_content = self.query_check(
572+
self.Mutation.CREATE_CONTRIBUTOR_USER_GROUP,
573+
variables={
574+
"data": input_data,
575+
},
576+
)
577+
usergroup_response = usergroup_content["data"]["createContributorUserGroup"]
578+
assert usergroup_response is not None, "usergroup create response is None"
579+
assert usergroup_response["ok"]
580+
581+
# Pull results from firebase
582+
input_data = test_data["create_results"]
583+
ref_results = self.firebase_helper.ref(f"/v2/results/{project_fb_id}")
584+
ref_results.set(input_data)
585+
586+
fb_results_data = ref_results.get()
587+
assert fb_results_data is not None
588+
589+
assert [
590+
MappingSession.objects.count(),
591+
MappingSessionResult.objects.count(),
592+
MappingSessionUserGroup.objects.count(),
593+
MappingSessionUserGroupTemp.objects.count(),
594+
MappingSessionResultTemp.objects.count(),
595+
] == [0, 0, 0, 0, 0], "Mapping session data should be empty before pull from firebase"
596+
597+
project = Project.objects.get(id=project_id)
598+
assert project.progress == 0
599+
600+
with self.captureOnCommitCallbacks(execute=True):
601+
pull_results_from_firebase()
602+
603+
assert [
604+
MappingSession.objects.count(),
605+
MappingSessionResult.objects.count(),
606+
MappingSessionUserGroup.objects.count(),
607+
MappingSessionUserGroupTemp.objects.count(),
608+
MappingSessionResultTemp.objects.count(),
609+
] == [
610+
test_data["expected_pulled_results_data"]["mapping_session_count"],
611+
test_data["expected_pulled_results_data"]["mapping_session_results_count"],
612+
test_data["expected_pulled_results_data"]["mapping_session_user_groups_count"],
613+
0,
614+
0,
615+
], "Difference found for pulled results data."
616+
617+
project.refresh_from_db()
618+
assert project.progress == test_data["expected_pulled_results_data"]["progress"]

apps/project/tests/e2e_create_validate_project_test.py

Lines changed: 90 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,15 @@
1414

1515
from apps.common.utils import decode_tasks, remove_object_keys
1616
from apps.contributor.factories import ContributorUserFactory
17+
from apps.contributor.models import ContributorUserGroup
18+
from apps.mapping.firebase.pull import pull_results_from_firebase
19+
from apps.mapping.models import (
20+
MappingSession,
21+
MappingSessionResult,
22+
MappingSessionResultTemp,
23+
MappingSessionUserGroup,
24+
MappingSessionUserGroupTemp,
25+
)
1726
from apps.project.models import Organization, Project
1827
from apps.tutorial.models import Tutorial
1928
from apps.user.factories import UserFactory
@@ -27,7 +36,7 @@ def create_override():
2736
def pre_save_override(sender: typing.Any, instance: typing.Any, **kwargs): # type: ignore[reportMissingParameterType]
2837
if sender == Tutorial:
2938
instance.firebase_id = f"tutorial_{instance.client_id}"
30-
elif sender in {Project, Organization}:
39+
elif sender in {Project, Organization, ContributorUserGroup}:
3140
instance.firebase_id = instance.client_id
3241

3342
pre_save.connect(pre_save_override)
@@ -254,6 +263,34 @@ class Mutation:
254263
}
255264
"""
256265

266+
CREATE_CONTRIBUTOR_USER_GROUP = """
267+
mutation CreateContributorUserGroup($data: ContributorUserGroupCreateInput!) {
268+
createContributorUserGroup(data: $data) {
269+
... on OperationInfo {
270+
__typename
271+
messages {
272+
code
273+
field
274+
kind
275+
message
276+
}
277+
}
278+
... on ContributorUserGroupTypeMutationResponseType {
279+
errors
280+
ok
281+
result {
282+
id
283+
name
284+
description
285+
clientId
286+
isArchived
287+
firebaseId
288+
}
289+
}
290+
}
291+
}
292+
"""
293+
257294
@pytest.mark.vcr("assets/tests/projects/validate/cassette")
258295
def test_validate_project_e2e(self):
259296
# TODO(susilnem): Add more test with filters
@@ -533,3 +570,55 @@ def _test_project(self, filename: str):
533570
assert sanitized_tasks_actual == sanitized_tasks_expected, (
534571
"Differences found between expected and actual tasks on project in firebase."
535572
)
573+
574+
# Create contributor user group
575+
old_contributor_user_group_data = test_data["create_contributor_user_group"]
576+
for input_data in old_contributor_user_group_data:
577+
usergroup_content = self.query_check(
578+
self.Mutation.CREATE_CONTRIBUTOR_USER_GROUP,
579+
variables={
580+
"data": input_data,
581+
},
582+
)
583+
usergroup_response = usergroup_content["data"]["createContributorUserGroup"]
584+
assert usergroup_response is not None, "usergroup create response is None"
585+
assert usergroup_response["ok"]
586+
587+
# Pull results from firebase
588+
input_data = test_data["create_results"]
589+
ref_results = self.firebase_helper.ref(f"/v2/results/{project_fb_id}")
590+
ref_results.set(input_data)
591+
592+
fb_results_data = ref_results.get()
593+
assert fb_results_data is not None
594+
595+
assert [
596+
MappingSession.objects.count(),
597+
MappingSessionResult.objects.count(),
598+
MappingSessionUserGroup.objects.count(),
599+
MappingSessionUserGroupTemp.objects.count(),
600+
MappingSessionResultTemp.objects.count(),
601+
] == [0, 0, 0, 0, 0], "Mapping session data should be empty before pull from firebase"
602+
603+
project = Project.objects.get(id=project_id)
604+
assert project.progress == 0
605+
606+
with self.captureOnCommitCallbacks(execute=True):
607+
pull_results_from_firebase()
608+
609+
assert [
610+
MappingSession.objects.count(),
611+
MappingSessionResult.objects.count(),
612+
MappingSessionUserGroup.objects.count(),
613+
MappingSessionUserGroupTemp.objects.count(),
614+
MappingSessionResultTemp.objects.count(),
615+
] == [
616+
test_data["expected_pulled_results_data"]["mapping_session_count"],
617+
test_data["expected_pulled_results_data"]["mapping_session_results_count"],
618+
test_data["expected_pulled_results_data"]["mapping_session_user_groups_count"],
619+
0,
620+
0,
621+
], "Difference found for pulled results data."
622+
623+
project.refresh_from_db()
624+
assert project.progress == test_data["expected_pulled_results_data"]["progress"]

0 commit comments

Comments
 (0)