from wagtail.search.index import class_is_indexed from images.models import CustomImage from tests.conftest import CustomImageFactory def test_image_model_is_indexed(): assert class_is_indexed(CustomImage) def test_admin_image_listing_renders_a_search_box(admin_client, db): response = admin_client.get("/admin/images/") assert response.status_code == 200 assert 'name="q"' in response.content.decode() def test_admin_image_listing_search_filters_results(admin_client, db): CustomImageFactory(title="Konsertbilde fra Betong") CustomImageFactory(title="Portrett av Jahn Teigen") response = admin_client.get("/admin/images/", {"q": "Betong"}) assert [image.title for image in response.context["page_obj"]] == ["Konsertbilde fra Betong"] def test_admin_image_chooser_search_filters_results(admin_client, db): CustomImageFactory(title="Konsertbilde fra Betong") CustomImageFactory(title="Portrett av Jahn Teigen") response = admin_client.get("/admin/images/chooser/results/", {"q": "Teigen"}) assert [image.title for image in response.context["results"]] == ["Portrett av Jahn Teigen"] def test_public_images_field_has_no_search_argument(graphql_post): _, body = graphql_post('{ __type(name: "Query") { fields { name args { name } } } }') args = { field["name"]: [arg["name"] for arg in field["args"]] for field in body["data"]["__type"]["fields"] } assert "searchQuery" not in args["images"] assert "searchOperator" not in args["images"] def test_search_union_only_advertises_page_types(graphql_post): _, body = graphql_post('{ __type(name: "Search") { possibleTypes { name } } }') members = {t["name"] for t in body["data"]["__type"]["possibleTypes"]} assert "CustomImage" not in members assert "Rendition" not in members assert "EventPage" in members def test_public_search_does_not_return_images(db, graphql_post): CustomImageFactory(title="Betong") _, body = graphql_post( "query($q: String) { search(query: $q) { __typename } }", {"q": "Betong"} ) assert "errors" not in body assert [result["__typename"] for result in body["data"]["search"]] == []