示例#1
0
    def test_indexers_persons_get_es_documents_unpublished(self):
        """Unpublished persons should not be indexed"""
        PersonFactory()

        # The unpublished person should not get indexed
        self.assertEqual(
            list(
                PersonsIndexer.get_es_documents(
                    index="some_index", action="some_action"
                )
            ),
            [],
        )
示例#2
0
    def test_indexers_persons_get_es_documents_language_fallback(self):
        """Absolute urls should be computed as expected with language fallback."""
        PersonFactory(
            page_title={
                "fr": "ma première personne",
            },
            should_publish=True,
        )
        indexed_persons = list(
            PersonsIndexer.get_es_documents(index="some_index", action="some_action")
        )

        self.assertEqual(
            indexed_persons[0]["absolute_url"],
            {
                "en": "/en/ma-premiere-personne/",
                "fr": "/fr/ma-premiere-personne/",
            },
        )
示例#3
0
    def test_indexers_persons_get_es_documents(self, _mock_picture):
        """
        Happy path: person data is fetched from the models properly formatted
        """
        person1 = PersonFactory(
            fill_portrait=True,
            page_title={"en": "my first person", "fr": "ma première personne"},
            should_publish=True,
        )
        person2 = PersonFactory(
            page_title={"en": "my second person", "fr": "ma deuxième personne"},
            should_publish=True,
        )

        # Add a description in several languages to the first person
        placeholder = person1.public_extension.extended_object.placeholders.get(
            slot="bio"
        )
        plugin_params = {"placeholder": placeholder, "plugin_type": "CKEditorPlugin"}
        add_plugin(body="english bio line 1.", language="en", **plugin_params)
        add_plugin(body="english bio line 2.", language="en", **plugin_params)
        add_plugin(body="texte français ligne 1.", language="fr", **plugin_params)
        add_plugin(body="texte français ligne 2.", language="fr", **plugin_params)

        # The results were properly formatted and passed to the consumer
        self.assertEqual(
            sorted(
                list(
                    PersonsIndexer.get_es_documents(
                        index="some_index", action="some_action"
                    )
                ),
                key=lambda p: p["_id"],
            ),
            [
                {
                    "_id": str(person1.public_extension.extended_object.id),
                    "_index": "some_index",
                    "_op_type": "some_action",
                    "absolute_url": {
                        "en": "/en/my-first-person/",
                        "fr": "/fr/ma-premiere-personne/",
                    },
                    "bio": {
                        "en": "english bio line 1. english bio line 2.",
                        "fr": "texte français ligne 1. texte français ligne 2.",
                    },
                    "complete": {
                        "en": ["my first person", "first person", "person"],
                        "fr": ["ma première personne", "première personne", "personne"],
                    },
                    "portrait": {"en": "portrait info", "fr": "portrait info"},
                    "title": {"en": "my first person", "fr": "ma première personne"},
                    "title_raw": {
                        "en": "my first person",
                        "fr": "ma première personne",
                    },
                },
                {
                    "_id": str(person2.public_extension.extended_object.id),
                    "_index": "some_index",
                    "_op_type": "some_action",
                    "absolute_url": {
                        "en": "/en/my-second-person/",
                        "fr": "/fr/ma-deuxieme-personne/",
                    },
                    "bio": {},
                    "complete": {
                        "en": ["my second person", "second person", "person"],
                        "fr": ["ma deuxième personne", "deuxième personne", "personne"],
                    },
                    "portrait": {},
                    "title": {"en": "my second person", "fr": "ma deuxième personne"},
                    "title_raw": {
                        "en": "my second person",
                        "fr": "ma deuxième personne",
                    },
                },
            ],
        )