Skip to content

Commit 32f0edb

Browse files
authored
Merge pull request #105 from unicef/feature/test-household-select-all-fields
Add selenium test for select-all.js and import_data.js
2 parents 84a18e1 + 059a094 commit 32f0edb

File tree

3 files changed

+127
-34
lines changed

3 files changed

+127
-34
lines changed

tests/conftest.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,10 @@ def pytest_configure(config):
6363
os.environ["CELERY_TASK_ALWAYS_EAGER"] = "1"
6464
os.environ["CELERY_TASK_STORE_EAGER_RESULT"] = "1"
6565
os.environ["SECURE_HSTS_PRELOAD"] = "0"
66-
os.environ["SECRET_KEY"] = "kugiugiuygiuygiuygiuhgiuhgiuhgiugiu"
6766
os.environ["FILE_STORAGE_DEFAULT"] = "django.core.files.storage.FileSystemStorage?location=./~tests/storage/"
6867
os.environ["FILE_STORAGE_MEDIA"] = "django.core.files.storage.FileSystemStorage?location=./~tests/storage/"
6968
os.environ["LOGGING_LEVEL"] = "CRITICAL"
69+
os.environ.setdefault("SECRET_KEY", "kugiugiuygiuygiuygiuhgiuhgiuhgiugiu")
7070
os.environ.setdefault("HOPE_API_TOKEN", "kugiugiuygiuygiuygiuhgiuhgiuhgiugiu")
7171
os.environ.setdefault("AURORA_API_TOKEN", "aurora_token")
7272

@@ -75,7 +75,6 @@ def pytest_configure(config):
7575

7676
settings.ALLOWED_HOSTS = ["127.0.0.1", "localhost"]
7777
settings.SIGNING_BACKEND = "testutils.signers.PlainSigner"
78-
settings.SECRET_KEY = "kugiugiuygiuygiuygiuhgiuhgiuhgiugiu"
7978
settings.CSRF_TRUSTED_ORIGINS = ["http://testserver"]
8079
settings.CELERY_TASK_ALWAYS_EAGER = True
8180
settings.CELERY_TASK_STORE_EAGER_RESULT = True
Lines changed: 51 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,45 @@
11
from typing import TYPE_CHECKING
22

33
import pytest
4+
from django.core.management import call_command
5+
from testutils.factories import OfficeFactory
6+
from testutils.factories.program import BeneficiaryGroupFactory
7+
from testutils.factories import CountryProgramFactory
48

59
if TYPE_CHECKING:
610
from country_workspace.workspaces.models import CountryHousehold
711

812
pytestmark = pytest.mark.xdist_group("selenium")
913

1014

15+
@pytest.fixture(autouse=True)
16+
def create_checkers() -> None:
17+
call_command("upgradescripts", ["apply"])
18+
19+
1120
@pytest.fixture
1221
def office(db, worker_id):
13-
from testutils.factories import OfficeFactory
14-
1522
return OfficeFactory()
1623

1724

1825
@pytest.fixture
19-
def program(office, worker_id):
20-
from testutils.factories import CountryProgramFactory
26+
def beneficiary_group():
27+
return BeneficiaryGroupFactory(
28+
group_label_plural="Households",
29+
member_label_plural="Individuals",
30+
master_detail=True,
31+
)
32+
2133

34+
@pytest.fixture
35+
def program(office, household_checker, individual_checker, beneficiary_group):
2236
return CountryProgramFactory(
2337
country_office=office,
24-
household_columns="__str__\nid\nxx",
25-
individual_columns="__str__\nid\nxx",
26-
household_checker__name=f"HH Checker {worker_id}",
27-
individual_checker__name=f"IND Checker {worker_id}",
38+
household_columns="name\nid\n",
39+
individual_columns="name\nid\n",
40+
household_checker=household_checker,
41+
individual_checker=individual_checker,
42+
beneficiary_group=beneficiary_group,
2843
)
2944

3045

@@ -36,27 +51,31 @@ def household(program):
3651

3752

3853
@pytest.mark.selenium
39-
@pytest.mark.xfail
40-
def test_list_household(browser, admin_user, household: "CountryHousehold"):
41-
from testutils.perms import user_grant_permissions
42-
43-
with user_grant_permissions(
44-
admin_user,
45-
[
46-
"workspaces.view_countryhousehold",
47-
"workspaces.view_countryindividual",
48-
"workspaces.view_countryprogram",
49-
],
50-
household.program.country_office,
51-
):
52-
browser.login()
53-
# Select Tenant
54-
browser.select_option_by_text("select[name=tenant]", household.program.country_office.name)
55-
browser.select2_select("id_program", household.program.name)
56-
57-
browser.click_link("Households")
58-
browser.click_link(str(household.name))
59-
browser.assert_current_url(household.get_change_url())
60-
61-
browser.click("a.closelink")
62-
browser.assert_current_url("/workspaces/countryhousehold/")
54+
def test_list_household(browser, household: "CountryHousehold"):
55+
browser.login_as_user()
56+
browser.select_option_by_text("select[name=tenant]", household.program.country_office.name)
57+
browser.select2_select("id_program", household.program.name)
58+
59+
browser.click_link("Households")
60+
browser.click_link(str(household.name))
61+
browser.assert_url(f"{browser.live_server_url}{household.get_change_url()}")
62+
63+
browser.click("a.closelink")
64+
browser.assert_url(f"{browser.live_server_url}/workspaces/countryhousehold/")
65+
66+
67+
@pytest.mark.selenium
68+
def test_list_household_select_all_fields(browser, household: "CountryHousehold"):
69+
browser.login_as_user()
70+
browser.select_option_by_text("select[name=tenant]", household.program.country_office.name)
71+
browser.select2_select("id_program", household.program.name)
72+
browser.click_link("Households")
73+
74+
browser.click("#action-toggle")
75+
browser.select_option_by_value("select[name=action]", "bulk_update_export")
76+
browser.click('button[type="submit"][name="index"]')
77+
78+
browser.click("#select-all")
79+
checkboxes = browser.find_elements('input[type="checkbox"][name="fields"]')
80+
for cb in checkboxes:
81+
assert cb.is_selected()
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
import pytest
2+
from django.core.management import call_command
3+
from testutils.factories import OfficeFactory
4+
from testutils.factories import CountryProgramFactory
5+
6+
7+
@pytest.fixture(autouse=True)
8+
def create_checkers() -> None:
9+
call_command("upgradescripts", ["apply"])
10+
11+
12+
@pytest.fixture
13+
def office(db, worker_id):
14+
return OfficeFactory()
15+
16+
17+
@pytest.fixture
18+
def program(office):
19+
return CountryProgramFactory(country_office=office)
20+
21+
22+
@pytest.fixture
23+
def browser_program(browser, program):
24+
browser.login_as_user()
25+
browser.select_option_by_text("select[name=tenant]", program.country_office.name)
26+
browser.select2_select("id_program", program.name)
27+
browser.click_link("Programme")
28+
browser.click("#btn-import_data")
29+
return browser
30+
31+
32+
@pytest.mark.selenium
33+
def test_rdi_import_tab(browser_program):
34+
browser_program.assert_element_visible("#tab-rdi")
35+
browser_program.assert_element_not_visible("#tab-aurora")
36+
browser_program.assert_element_not_visible("#tab-kobo")
37+
browser_program.assert_element_present('button[data-input-value="rdi"].selected')
38+
39+
browser_program.assert_element_visible("#id_rdi-batch_name")
40+
browser_program.assert_element_visible("#id_rdi-pk_column_name")
41+
browser_program.assert_element_visible("#id_rdi-master_column_label")
42+
browser_program.assert_element_visible("#id_rdi-detail_column_label")
43+
browser_program.assert_element_visible("#id_rdi-first_line")
44+
browser_program.assert_element_visible("#id_rdi-file")
45+
browser_program.assert_element_visible("#id_rdi-check_before")
46+
browser_program.assert_element_visible("#id_rdi-fail_if_alien")
47+
48+
49+
@pytest.mark.selenium
50+
def test_aurora_import_tab(browser_program):
51+
browser_program.click('button[data-input-value="aurora"]')
52+
browser_program.assert_element_not_visible("#tab-rdi")
53+
browser_program.assert_element_visible("#tab-aurora")
54+
browser_program.assert_element_not_visible("#tab-kobo")
55+
browser_program.assert_element_present('button[data-input-value="aurora"].selected')
56+
57+
browser_program.assert_element_visible("#id_aurora-batch_name")
58+
browser_program.assert_element_visible("#id_aurora-registration")
59+
browser_program.assert_element_visible("#id_aurora-check_before")
60+
browser_program.assert_element_visible("#id_aurora-fail_if_alien")
61+
62+
63+
@pytest.mark.selenium
64+
def test_kobo_import_tab(browser_program):
65+
browser_program.click('button[data-input-value="kobo"]')
66+
browser_program.assert_element_not_visible("#tab-rdi")
67+
browser_program.assert_element_not_visible("#tab-aurora")
68+
browser_program.assert_element_visible("#tab-kobo")
69+
browser_program.assert_element_present('button[data-input-value="kobo"].selected')
70+
71+
browser_program.assert_element_visible("#id_kobo-batch_name")
72+
browser_program.assert_element_visible("#id_kobo-project_id")
73+
browser_program.assert_element_visible("#id_kobo-individual_records_field")
74+
browser_program.assert_element_visible("#id_kobo-check_before")
75+
browser_program.assert_element_visible("#id_kobo-fail_if_alien")

0 commit comments

Comments
 (0)