Пример #1
0
    def test_get_serializer_for_model_method_with_label(self):
        config = SearchConf('search.tests.mocks', auto_setup=True)
        MockSerializer = getattr(config._serializer_module, 'MockSerializer',
                                 None)

        serializer = config.get_serializer_for_model('search.MockModel')
        self.assertEqual(serializer, MockSerializer)
Пример #2
0
    def ready(self):
        if SEARCH_SIGNALS:
            from search.signals import run_post_save_search_tasks, run_post_delete_search_tasks  # noqa: F401

            search_conf = SearchConf(auto_setup=True)
            model_labels = search_conf.get_registered_models()

            logger.info('Connect post_save signals for {} models'.format(
                len(model_labels)))

            for label in model_labels:
                logger.info('Connecting post_save for {}'.format(label))
                post_save.connect(
                    run_post_save_search_tasks,
                    sender=label,
                    dispatch_uid='run_post_save_search_tasks::{}'.format(
                        label))
                post_delete_uid = 'run_post_delete_search_tasks::{}'.format(
                    label)
                post_delete.connect(run_post_delete_search_tasks,
                                    sender=label,
                                    dispatch_uid=post_delete_uid)

        try:
            from search.tasks import schedule_periodic_index_rebuilds
            # This should tell our rq-scheduler to run rebuild_indices periodically
            schedule_periodic_index_rebuilds()
        except Exception:
            pass
Пример #3
0
    def test_get_registered_models_method_with_concrete_model(self):
        config = SearchConf('search.tests.mocks')
        config.setup()

        model_list = config.get_registered_models()
        self.assertIsNotNone(model_list)
        self.assertIsInstance(model_list, list)
        self.assertIn('search.MockModel', model_list)
Пример #4
0
    def test_has_serializer_module(self):
        config = SearchConf()
        config.setup('search.tests.mocks')

        self.assertIsNotNone(config._serializer_module)

        serializer_class = getattr(config._serializer_module, 'MockSerializer',
                                   None)
        self.assertIsNotNone(serializer_class)
Пример #5
0
    def test_has_default_settings(self):
        config = SearchConf()
        config.setup()

        self.assertIsInstance(config._settings, dict)
        self.assertIn('default', config._settings)
        self.assertIn('index', config._settings['default'])
        self.assertIn('connections', config._settings['default'])
        self.assertIsInstance(config._settings['default']['connections'], dict)
Пример #6
0
    def test_setup_doctypes(self):
        config = SearchConf()
        config.setup()

        from django.conf import settings
        SEARCH = getattr(settings, 'SEARCH', {})
        default_index = SEARCH['default']['index']

        self.assertEqual(MockDocOne._doc_type.index, default_index)
        self.assertEqual(MockDocTwo._doc_type.index, default_index)
Пример #7
0
    def test__doctype_lookup(self):
        config = SearchConf('search.tests.mocks')
        config.setup()

        from django.conf import settings
        SEARCH = getattr(settings, 'SEARCH', {})
        default_index = SEARCH['default']['index']
        expected_doctypes = set((
            'search.tests.mocks.MockDocOne',
            'search.tests.mocks.MockDocTwo',
            'search.tests.mocks.MockDocThree',
        ))

        self.assertIn(default_index, config._doctype_lookup)
        self.assertEqual(config._doctype_lookup[default_index],
                         expected_doctypes)
Пример #8
0
    def test_setup_method_calls__register_serializer_model(self):
        config = SearchConf()
        config._register_serializer_model = Mock()
        config.setup('search.tests.mocks')

        MockSerializer = getattr(config._serializer_module, 'MockSerializer',
                                 None)
        MockSerializerTwo = getattr(config._serializer_module,
                                    'MockSerializerTwo', None)
        MockSerializerThree = getattr(config._serializer_module,
                                      'MockSerializerThree', None)

        call_list = [
            call(MockSerializer),
            call(MockSerializerTwo),
            call(MockSerializerThree)
        ]
        config._register_serializer_model.assert_has_calls(call_list)
Пример #9
0
    def test_setup_method_calls__configure_serializer_doctype(self):
        config = SearchConf()
        config._configure_serializer_doctype = Mock()
        config.setup('search.tests.mocks')

        MockSerializer = getattr(config._serializer_module, 'MockSerializer',
                                 None)
        MockSerializerTwo = getattr(config._serializer_module,
                                    'MockSerializerTwo', None)
        MockSerializerThree = getattr(config._serializer_module,
                                      'MockSerializerThree', None)

        from django.conf import settings
        SEARCH = getattr(settings, 'SEARCH', {})
        default_index = SEARCH['default']['index']

        call_list = [
            call(MockSerializer, default_index),
            call(MockSerializerTwo, default_index),
            call(MockSerializerThree, default_index),
        ]
        config._configure_serializer_doctype.assert_has_calls(call_list)
Пример #10
0
    def test_get_registered_models_method(self):
        config = SearchConf('search.tests.mocks', auto_setup=True)

        model_list = config.get_registered_models()
        self.assertIsNotNone(model_list)
        self.assertIn('search.MockModel', model_list)
Пример #11
0
 def test_get_serializer_for_model_method_with_unrelated_model(self):
     config = SearchConf('search.tests.mocks', auto_setup=True)
     with self.assertRaises(LookupError):
         config.get_serializer_for_model('search.MockUnserializedModel')
Пример #12
0
    def test_get_serializer_for_model_method_with_nonexistent_model(self):
        config = SearchConf('search.tests.mocks', auto_setup=True)

        with self.assertRaises(LookupError):
            config.get_serializer_for_model('search.ModelThatDoesNotExist')
Пример #13
0
    def test_get_doctype_for_model_method(self):
        config = SearchConf('search.tests.mocks')
        config.setup()

        DoctypeClass = config.get_doctype_for_model('search.MockModel')
        self.assertEqual(DoctypeClass, MockDocOne)