def test_search_view_context_lesson_data(self): topic = self.test_data.create_topic(1) unit_plan = self.test_data.create_unit_plan(topic, 1) age_group = self.test_data.create_age_group(5, 7) lesson = self.test_data.create_lesson(topic, unit_plan, 1, age_group) learning_outcome1 = self.test_data.create_learning_outcome(1) area_1 = self.test_data.create_curriculum_area(1) learning_outcome1.curriculum_areas.add(area_1) lesson.learning_outcomes.add(learning_outcome1) learning_outcome2 = self.test_data.create_learning_outcome(2) area_2 = self.test_data.create_curriculum_area(2) learning_outcome2.curriculum_areas.add(area_2) area_3 = self.test_data.create_curriculum_area(3) learning_outcome2.curriculum_areas.add(area_3) lesson.learning_outcomes.add(learning_outcome2) self.test_data.create_curriculum_area(4) management.call_command("rebuild_index", "--noinput") url = reverse("search:index") get_parameters = [("q", lesson.name)] url += query_string(get_parameters) response = self.client.get(url) result_lesson = response.context["object_list"][0] self.assertEqual(result_lesson.lesson_ages, [ { "lower": 5, "upper": 7, "number": 1, }, ]) self.assertQuerysetEqual(result_lesson.curriculum_areas, [ "<CurriculumArea: Area 1>", "<CurriculumArea: Area 2>", "<CurriculumArea: Area 3>", ])
def test_search_view_all_items(self): topic = self.test_data.create_topic(1) self.test_data.create_topic(2) self.test_data.create_topic(3) unit_plan = self.test_data.create_unit_plan(topic, 1) unit_plan = self.test_data.create_unit_plan(topic, 2) age_group = self.test_data.create_age_group(5, 7) self.test_data.create_lesson(topic, unit_plan, 1, age_group) management.call_command("rebuild_index", "--noinput") url = reverse("search:index") get_parameters = [("q", "")] url += query_string(get_parameters) response = self.client.get(url) self.assertEqual(len(response.context["object_list"]), 6)
def test_generate_view_valid_slug_invalid_parameter(self): resource = self.test_data.create_resource( "grid", "Grid", "resources/grid.html", "GridResourceGenerator", ) kwargs = { "resource_slug": resource.slug, } get_parameters = [("paper_size", "b7")] url = reverse("resources:generate", kwargs=kwargs) url += query_string(get_parameters) response = self.client.get(url) self.assertEqual(HTTPStatus.NOT_FOUND, response.status_code)
def test_search_view_curriculum_areas_filter_parent_no_results(self): # This search is not accessible to user, but # checks indexes are created without including parent. topic = self.test_data.create_topic(1) area_1 = self.test_data.create_curriculum_area(1) area_2 = self.test_data.create_curriculum_area(2, parent=area_1) self.test_data.create_integration(topic, 1, curriculum_areas=[area_2]) management.call_command("rebuild_index", "--noinput") url = reverse("search:index") get_parameters = [ ("curriculum_areas", area_1.pk), ] url += query_string(get_parameters) response = self.client.get(url) self.assertFalse(response.context["object_list"])
def test_search_view_assert_order(self): topic = self.test_data.create_topic(1) self.test_data.create_topic(2) unit_plan = self.test_data.create_unit_plan(topic, 1) age_group = self.test_data.create_age_group(5, 7) self.test_data.create_lesson(topic, unit_plan, 1, age_group) management.call_command("rebuild_index", "--noinput") url = reverse("search:index") get_parameters = [("q", "")] url += query_string(get_parameters) response = self.client.get(url) result_objects = response.context["object_list"] self.assertEqual(result_objects[0].model_name, "topic") self.assertEqual(result_objects[1].model_name, "topic") self.assertEqual(result_objects[2].model_name, "unitplan") self.assertEqual(result_objects[3].model_name, "lesson")
def test_generate_view_valid_slug_production_cache(self): resource = self.test_data.create_resource( "grid", "Grid", "resources/grid.html", "GridResourceGenerator", ) kwargs = { "resource_slug": resource.slug, } get_parameters = [("paper_size", "a4")] url = reverse("resources:generate", kwargs=kwargs) url += query_string(get_parameters) response = self.client.get(url) self.assertEqual(HTTPStatus.FOUND, response.status_code) self.assertEqual(response.url, "/staticfiles/resources/Grid%20(a4).pdf")
def test_generate_view_valid_slug(self): resource = self.test_data.create_resource( "grid", "Grid", "resources/grid.html", "GridResourceGenerator", ) kwargs = { "resource_slug": resource.slug, } get_parameters = [("paper_size", "a4")] url = reverse("resources:generate", kwargs=kwargs) url += query_string(get_parameters) response = self.client.get(url) self.assertEqual(HTTPStatus.OK, response.status_code) self.assertEqual(response.get("Content-Disposition"), 'attachment; filename="Grid (a4).pdf"')
def test_search_view_model_filter_multiple_with_query(self): topic = self.test_data.create_topic(1) self.test_data.create_topic(2) unit_plan = self.test_data.create_unit_plan(topic, 1) age_group = self.test_data.create_age_group(5, 7) self.test_data.create_lesson(topic, unit_plan, 1, age_group) management.call_command("rebuild_index", "--noinput") url = reverse("search:index") get_parameters = [ ("q", "Unit Plan 1"), ("models", "topics.topic"), ("models", "topics.unitplan"), ] url += query_string(get_parameters) response = self.client.get(url) result_objects = response.context["object_list"] self.assertEqual(len(result_objects), 1) self.assertEqual(result_objects[0].model_name, "unitplan")
def test_search_view_curriculum_areas_filter_2(self): topic = self.test_data.create_topic(1) area_1 = self.test_data.create_curriculum_area(1) self.test_data.create_integration(topic, 1, curriculum_areas=[area_1]) area_2 = self.test_data.create_curriculum_area(2) self.test_data.create_integration(topic, 2, curriculum_areas=[area_1, area_2]) self.test_data.create_integration(topic, 3) self.test_data.create_integration(topic, 4) management.call_command("rebuild_index", "--noinput") url = reverse("search:index") get_parameters = [ ("curriculum_areas", area_2.pk), ] url += query_string(get_parameters) response = self.client.get(url) result_objects = response.context["object_list"] self.assertEqual(len(result_objects), 1)
def test_search_view_context_curriculum_areas_data_with_selected(self): area_1 = self.test_data.create_curriculum_area(1) area_2 = self.test_data.create_curriculum_area(2) area_3 = self.test_data.create_curriculum_area(3) management.call_command("rebuild_index", "--noinput") url = reverse("search:index") get_parameters = [ ("curriculum_areas", area_1.pk), ("curriculum_areas", area_3.pk), ] url += query_string(get_parameters) response = self.client.get(url) self.assertEqual(response.context["curriculum_areas"], [ { "pk": area_1.pk, "name": "Area 1", "colour": "colour-1", "parent__pk": None, "parent__name": None, "children": [], "selected": "true", }, { "pk": area_2.pk, "name": "Area 2", "colour": "colour-2", "parent__pk": None, "parent__name": None, "children": [], }, { "pk": area_3.pk, "name": "Area 3", "colour": "colour-3", "parent__pk": None, "parent__name": None, "children": [], "selected": "true", }, ])
def test_search_view_context_model_data_with_selected(self): management.call_command("rebuild_index", "--noinput") url = reverse("search:index") get_parameters = [ ("models", "topics.topic"), ("models", "topics.unitplan"), ] url += query_string(get_parameters) response = self.client.get(url) self.assertEqual(response.context["models"], [{ "value": "classic.classicpage", "name": "Classic CS Unplugged pages" }, { "value": "topics.curriculumintegration", "name": "Curriculum integrations" }, { "value": "general.generalpage", "name": "General pages" }, { "value": "topics.lesson", "name": "Lessons" }, { "value": "topics.programmingchallenge", "name": "Programming challenges" }, { "value": "resources.resource", "name": "Resources" }, { "value": "topics.topic", "name": "Topics", "selected": "true", }, { "value": "topics.unitplan", "name": "Unit plans", "selected": "true", }])