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)
def test_delete_item(self, mocksunburnt, mockrequests): # return empty json data for index init/load config mocksession = mockrequests.Session.return_value mocksession.get.return_value.status_code = 200 mockrequests.codes.ok = 200 mocksession.get.return_value.json.return_value = {} index = SiteIndex("test-site-url", "site name") index.solr_interface = Mock() keyfield = "Pid" index.solr_interface.schema.unique_field.name = keyfield testpid = "test:abc1" index.delete_item(testpid) index.solr_interface.delete.assert_called_with({keyfield: testpid})