from unittest import skipUnless

from cms.api import create_page
from cms.test_utils.testcases import CMSTestCase

from tests.utils import is_versioning_enabled


if is_versioning_enabled():
    from djangocms_internalsearch import helpers
    from djangocms_internalsearch.test_utils import factories
    from djangocms_versioning.models import Version
    from djangocms_versioning.constants import DRAFT


@skipUnless(is_versioning_enabled(), 'Test only relevant for versioning')
class UpdateIndexTestCase(CMSTestCase):

    def test_get_all_versions(self):

        user = factories.UserFactory(
            username='******', email='*****@*****.**',
            password='******', is_staff=True, is_superuser=True)

        pg = create_page(title='Page with versions', template='INHERIT', language='en', created_by=user,)
        v1 = Version.objects.filter_by_grouper(pg).filter(state=DRAFT).first()
        v1.publish(user)
        v1.unpublish(user)
        v2 = v1.copy(user)

        versions = helpers.get_all_versions(v2.content)
from cms.operations import ADD_PAGE_TRANSLATION, DELETE_PAGE

from haystack import connections
from haystack.utils.loading import UnifiedIndex
from tests.utils import BaseTestCase, is_versioning_enabled

from djangocms_internalsearch.contrib.cms.internal_search import (
    PageContentConfig, )
from djangocms_internalsearch.helpers import (
    get_request,
    remove_from_index,
    save_to_index,
)


@skipIf(is_versioning_enabled(), 'Test assumes versioning is not installed')
class UpdateIndexTestCase(BaseTestCase):
    def setUp(self):
        super(UpdateIndexTestCase, self).setUp()

        self.unified_index = UnifiedIndex()
        self.wmmi = PageContentConfig()
        self.unified_index.build(indexes=[self.wmmi])
        connections["default"]._index = self.unified_index

        self.sb = connections["default"].get_backend()
        self.sb.setup()

        self.request = get_request(language='en')
        self.token = None