Ejemplo n.º 1
0
    def test_index_item(self, mocksunburnt, mockrequests):
        # return empty json data for index init/load config
        mockrequests.codes.ok = 200
        mocksession = mockrequests.Session.return_value
        mocksession.get.return_value.status_code = 200
        mocksession.get.return_value.json.return_value = {}
        index = SiteIndex("test-site-url", "test-site")
        testpid = "test:abc1"
        # replace solr interface with a mock we can inspect
        index.solr_interface = Mock()

        index_data = {"foo": "bar", "baz": "qux"}
        mockresponse = mocksession.get.return_value
        mockresponse.json.return_value = index_data
        mockresponse.status_code = 200

        indexed = index.index_item(testpid)
        # solr 'add' should be called with data returned via index data webservice
        index.solr_interface.add.assert_called_with(index_data)
        self.assertTrue(indexed, "index_item should return True on success")

        # solr error on attempt to add should be re-raised
        index.solr_interface.add.side_effect = SolrError
        self.assertRaises(SolrError, index.index_item, testpid)

        mocksession.get.side_effect = Exception
        # error on attempt to read index data should be raised as a recoverable error
        self.assertRaises(IndexDataReadError, index.index_item, testpid)