diff --git a/rdmo/management/tests/test_frontend.py b/rdmo/management/tests/test_frontend.py index 361b384a64..c92f23554d 100644 --- a/rdmo/management/tests/test_frontend.py +++ b/rdmo/management/tests/test_frontend.py @@ -33,7 +33,7 @@ def e2e_tests_django_db_setup(django_db_setup, django_db_blocker, fixtures): """Set up database and populate with fixtures, that get restored for every test case.""" with django_db_blocker.unblock(): - call_command('loaddata', *fixtures) + call_command("loaddata", *fixtures) set_group_permissions() @@ -72,106 +72,32 @@ def test_management_navigation(logged_in_admin_user: Page) -> None: page.get_by_role("link", name="Views").click() -def test_management_has_catalogs(logged_in_admin_user: Page) -> None: - """Test all catalogs in database are visible in management UI.""" +url_model_mapping = ( + ("catalogs", Catalog), + ("sections", Section), + ("pages", PageModel), + ("questionsets", QuestionSet), + ("questions", Question), + ("attributes", Attribute), + ("optionsets", OptionSet), + ("options", Option), + ("conditions", Condition), + ("tasks", Task), + ("views", View), +) + + +@pytest.mark.parametrize("url,model", url_model_mapping) +def test_management_has_items(logged_in_admin_user: Page, url, model) -> None: + """Test all items in database are visible in management UI.""" page = logged_in_admin_user - page.goto("/management/catalogs") - catalogs = page.locator(".list-group > .list-group-item") - num_catalogs = Catalog.objects.count() - expect(catalogs).to_have_count(num_catalogs) - - -def test_management_has_sections(logged_in_admin_user: Page) -> None: - """Test all sections in database are visible in management UI.""" - page = logged_in_admin_user - page.goto("/management/sections") - sections = page.locator(".list-group > .list-group-item") - num_sections = Section.objects.count() - expect(sections).to_have_count(num_sections) - - -def test_management_has_pages(logged_in_admin_user: Page) -> None: - """Test all pages in database are visible in management UI.""" - page = logged_in_admin_user - page.goto("/management/pages") - pages = page.locator(".list-group > .list-group-item") - num_pages = PageModel.objects.count() - expect(pages).to_have_count(num_pages) - - -def test_management_has_questionsets(logged_in_admin_user: Page) -> None: - """Test all question sets in database are visible in management UI.""" - page = logged_in_admin_user - page.goto("/management/questionsets") - questionsets = page.locator(".list-group > .list-group-item") - num_questionsets = QuestionSet.objects.count() - expect(questionsets).to_have_count(num_questionsets) - - -def test_management_has_questions(logged_in_admin_user: Page) -> None: - """Test all questions in database are visible in management UI.""" - page = logged_in_admin_user - page.goto("/management/questions") - questions = page.locator(".list-group > .list-group-item") - num_questions = Question.objects.count() - expect(questions).to_have_count(num_questions) - - -def test_management_has_attributes(logged_in_admin_user: Page) -> None: - """Test all attributes in database are visible in management UI.""" - page = logged_in_admin_user - page.goto("/management/attributes") - attributes = page.locator(".list-group > .list-group-item") - num_attributes = Attribute.objects.count() - expect(attributes).to_have_count(num_attributes) - - -def test_management_has_optionsets(logged_in_admin_user: Page) -> None: - """Test all option sets in database are visible in management UI.""" - page = logged_in_admin_user - page.goto("/management/optionsets") - optionsets = page.locator(".list-group > .list-group-item") - num_optionsets = OptionSet.objects.count() - expect(optionsets).to_have_count(num_optionsets) - - -def test_management_has_options(logged_in_admin_user: Page) -> None: - """Test all options in database are visible in management UI.""" - page = logged_in_admin_user - page.goto("/management/options") - options = page.locator(".list-group > .list-group-item") - num_options = Option.objects.count() - expect(options).to_have_count(num_options) - - -def test_management_has_conditions(logged_in_admin_user: Page) -> None: - """Test all conditions in database are visible in management UI.""" - page = logged_in_admin_user - page.goto("/management/conditions") - conditions = page.locator(".list-group > .list-group-item") - num_conditions = Condition.objects.count() - expect(conditions).to_have_count(num_conditions) - - -def test_management_has_tasks(logged_in_admin_user: Page) -> None: - """Test all tasks in database are visible in management UI.""" - page = logged_in_admin_user - page.goto("/management/tasks") - tasks = page.locator(".list-group > .list-group-item") - num_tasks = Task.objects.count() - expect(tasks).to_have_count(num_tasks) - - -def test_management_has_views(logged_in_admin_user: Page) -> None: - """Test all views in database are visible in management UI.""" - page = logged_in_admin_user - page.goto("/management/views") - views = page.locator(".list-group > .list-group-item") - num_views = View.objects.count() - expect(views).to_have_count(num_views) + num_items_in_database = model.objects.count() + page.goto(f"/management/{url}") + items_in_ui = page.locator(".list-group > .list-group-item") + expect(items_in_ui).to_have_count(num_items_in_database) def test_management_catalog_nested_view(logged_in_admin_user: Page) -> None: - page = logged_in_admin_user page.goto("/management/catalogs") + # page.get_by_role("link", title="View catalog nested").first.click()