def test_do_index_creates_service_indexer_class_and_indexes_items( self, request_items, index_item, indexer_init): indexer_init.return_value = None request_items.return_value = ['service1', 'service2'] do_index( 'services', "http://search-api-url", "mySearchAPIToken", "http://data-api-url", "myDataAPIToken", mapping=False, serial=True, # don't run in parallel for testing index="myIndex", frameworks="framework1,framework2") assert indexer_init.call_args_list == [ mock.call(mock.ANY, 'services', self.data_api_client.return_value, self.search_api_client.return_value, 'myIndex') ] # Both API clients initialised when the BriefIndexer instance is created assert self.data_api_client.call_args_list == [ mock.call('http://data-api-url', 'myDataAPIToken') ] assert self.search_api_client.call_args_list == [ mock.call('http://search-api-url', 'mySearchAPIToken') ] assert request_items.call_args_list == [ mock.call(mock.ANY, "framework1,framework2") ] assert index_item.call_args_list == [ mock.call(mock.ANY, 'service1'), mock.call(mock.ANY, 'service2'), ]
def test_do_index_creates_new_index_from_services_mapping( self, create_index): do_index( 'services', "http://search-api-url", "mySearchAPIToken", "http://data-api-url", "myDataAPIToken", mapping='services-g-cloud-10', serial=True, # don't run in parallel for testing index="my-new-g-cloud-10-index", frameworks="g-cloud-10") assert create_index.call_args_list == [ mock.call(mock.ANY, mapping='services-g-cloud-10') ]
def test_do_index_creates_new_index_from_briefs_mapping_for_dos_frameworks( self, create_index, framework_list): do_index( 'briefs', "http://search-api-url", "mySearchAPIToken", "http://data-api-url", "myDataAPIToken", mapping='briefs-digital-outcomes-and-specialists-2', serial=True, # don't run in parallel for testing index="my-new-dos-index", frameworks=framework_list) assert create_index.call_args_list == [ mock.call(mock.ANY, mapping='briefs-digital-outcomes-and-specialists-2') ]
def test_incorrect_mapping_for_framework_raises_error(self, create_index): with pytest.raises(ValueError) as e: do_index( 'services', "http://search-api-url", "mySearchAPIToken", "http://data-api-url", "myDataAPIToken", mapping='services', serial=True, # don't run in parallel for testing index="my-new-g-cloud-10-index", frameworks="g-cloud-10") assert str( e.value ) == "Incorrect mapping 'services' for the supplied framework(s): g-cloud-10" assert create_index.call_args_list == []
""" import sys from docopt import docopt sys.path.insert(0, '.') from dmscripts.index_to_search_service import do_index from dmscripts.helpers.auth_helpers import get_auth_token from dmutils.env_helpers import get_api_endpoint_from_stage if __name__ == "__main__": arguments = docopt(__doc__) ok = do_index( doc_type=arguments['<doc-type>'], data_api_url=arguments['--api-url'] or get_api_endpoint_from_stage(arguments['<stage>'], 'api'), data_api_access_token=arguments['--api-token'] or get_auth_token('api', arguments['<stage>']), search_api_url=arguments['--search-api-url'] or get_api_endpoint_from_stage(arguments['<stage>'], 'search-api'), search_api_access_token=arguments['--search-api-token'] or get_auth_token('search_api', arguments['<stage>']), mapping=arguments.get('--create-with-mapping'), serial=arguments['--serial'], index=arguments['--index'], frameworks=arguments['--frameworks'], ) if not ok: sys.exit(1)