def test_dataset_subscription_info(self, mock_fetch): # Given mock_fetch.return_value = test_subscription_info credentials = Credentials('fake_user', '1234') dataset = Dataset(db_dataset1) # When info = dataset.subscription_info(credentials) # Then mock_fetch.assert_called_once_with(db_dataset1['id'], 'dataset', credentials) assert isinstance(info, SubscriptionInfo) assert info.id == test_subscription_info['id'] assert info.estimated_delivery_days == test_subscription_info[ 'estimated_delivery_days'] assert info.subscription_list_price == test_subscription_info[ 'subscription_list_price'] assert info.tos == test_subscription_info['tos'] assert info.tos_link == test_subscription_info['tos_link'] assert info.licenses == test_subscription_info['licenses'] assert info.licenses_link == test_subscription_info['licenses_link'] assert info.rights == test_subscription_info['rights'] assert str(info) == 'Properties: id, estimated_delivery_days, ' + \ 'subscription_list_price, tos, tos_link, ' + \ 'licenses, licenses_link, rights'
def test_dataset_is_available_in_with_empty_field(self): # Given db_dataset = dict(db_dataset1) db_dataset['available_in'] = None dataset_null = Dataset(db_dataset) # Then assert not dataset_null._is_available_in('bq')
def test_summary_tail(self): # Given dataset = Dataset(db_dataset2) # When summary = dataset.tail() # Then assert isinstance(summary, pd.DataFrame)
def test_summary_counts(self): # Given dataset = Dataset(db_dataset2) # When summary = dataset.counts() # Then assert isinstance(summary, pd.Series)
def test_summary_fields_by_type(self): # Given dataset = Dataset(db_dataset2) # When summary = dataset.fields_by_type() # Then assert isinstance(summary, pd.Series)
def test_dataset_subscription_info_default_credentials(self, mocked_credentials, mock_fetch): # Given expected_credentials = Credentials('fake_user', '1234') mocked_credentials.return_value = expected_credentials dataset = Dataset(db_dataset1) # When dataset.subscription_info() # Then mock_fetch.assert_called_once_with(db_dataset1['id'], 'dataset', expected_credentials)
def test_dataset_subscribe_default_credentials(self, mocked_credentials, mock_display_form, mock_subscription_ids): # Given expected_credentials = Credentials('fake_user', '1234') mocked_credentials.return_value = expected_credentials dataset = Dataset(db_dataset1) # When dataset.subscribe() # Then mock_subscription_ids.assert_called_once_with(expected_credentials) mock_display_form.assert_called_once_with(db_dataset1['id'], 'dataset', expected_credentials)
def test_dataset_is_exported_as_dict(self): # Given dataset = Dataset(db_dataset1) excluded_fields = ['summary_json', 'available_in'] expected_dict = {key: value for key, value in db_dataset1.items() if key not in excluded_fields} # When dataset_dict = dataset.to_dict() # Then assert isinstance(dataset_dict, dict) assert dataset_dict == expected_dict
def test_dataset_subscription_info_wrong_credentials(self): # Given wrong_credentials = 1234 dataset = Dataset(db_dataset1) # When with pytest.raises(ValueError) as e: dataset.subscription_info(wrong_credentials) # Then assert str(e.value) == ('Credentials attribute is required. ' 'Please pass a `Credentials` instance ' 'or use the `set_default_credentials` function.')
def test_dataset_subscribe_existing(self, mock_display_message, mock_display_form, mock_subscription_ids): # Given expected_id = db_dataset1['id'] expected_subscribed_ids = [expected_id] mock_subscription_ids.return_value = expected_subscribed_ids credentials = Credentials('fake_user', '1234') dataset = Dataset(db_dataset1) # When dataset.subscribe(credentials) # Then mock_subscription_ids.assert_called_once_with(credentials) mock_display_message.assert_called_once_with(expected_id, 'dataset') assert not mock_display_form.called
def test_get_all_datasets_credentials_without_do_enabled(self, mocked_repo): # Given def raise_exception(a, b): raise ServerErrorException(['The user does not have Data Observatory enabled']) mocked_repo.side_effect = raise_exception credentials = Credentials('fake_user', '1234') # When with pytest.raises(Exception) as e: Dataset.get_all(credentials=credentials) # Then assert str(e.value) == ( 'We are sorry, the Data Observatory is not enabled for your account yet. ' 'Please contact your customer success manager or send an email to ' '[email protected] to request access to it.')
def test_missing_fields_are_mapped_as_None(self, mocked_repo): # Given mocked_repo.return_value = [{'id': 'dataset1'}] repo = DatasetRepository() expected_datasets = CatalogList([ Dataset({ 'id': 'dataset1', 'slug': None, 'name': None, 'description': None, 'provider_id': None, 'provider_name': None, 'category_id': None, 'category_name': None, 'data_source_id': None, 'country_id': None, 'lang': None, 'geography_id': None, 'geography_name': None, 'geography_description': None, 'temporal_aggregation': None, 'time_coverage': None, 'update_frequency': None, 'version': None, 'is_public_data': None, 'summary_json': None }) ]) # When datasets = repo.get_all() # Then assert datasets == expected_datasets
def test_dataset_download_without_do_enabled(self, download_stream_mock, get_by_id_mock, get_all_mock): # Given get_by_id_mock.return_value = test_dataset1 dataset = Dataset.get(test_dataset1.id) get_all_mock.return_value = [] def raise_exception(limit=None, order_by=None, sql_query=None, add_geom=None, is_geography=None): raise ServerErrorException( ['The user does not have Data Observatory enabled']) download_stream_mock.side_effect = raise_exception credentials = Credentials('fake_user', '1234') # When with pytest.raises(Exception) as e: dataset.to_csv('fake_path', credentials) # Then assert str(e.value) == ( 'We are sorry, the Data Observatory is not enabled for your account yet. ' 'Please contact your customer success manager or send an email to ' '[email protected] to request access to it.')
def test_dataset_subscription_info_without_do_enabled(self, mock_fetch): # Given def raise_exception(a, b, c): raise ServerErrorException(['The user does not have Data Observatory enabled']) mock_fetch.side_effect = raise_exception dataset = Dataset(db_dataset1) credentials = Credentials('fake_user', '1234') # When with pytest.raises(Exception) as e: dataset.subscription_info(credentials) # Then assert str(e.value) == ( 'We are sorry, the Data Observatory is not enabled for your account yet. ' 'Please contact your customer success manager or send an email to ' '[email protected] to request access to it.')
def test_dataset_is_represented_with_classname_and_slug(self): # Given dataset = Dataset(db_dataset1) # When dataset_repr = repr(dataset) # Then assert dataset_repr == "<Dataset.get('{id}')>".format(id=db_dataset1['slug'])
def test_dataset_is_printed_with_classname(self): # Given dataset = Dataset(db_dataset1) # When dataset_str = str(dataset) # Then assert dataset_str == "<Dataset.get('{id}')>".format(id=db_dataset1['slug'])
def test_dataset_download_not_subscribed_but_public(self, mocked_bq_client, get_by_id_mock, get_all_mock): # Given get_by_id_mock.return_value = test_dataset1 # is public dataset = Dataset.get(test_dataset1.id) get_all_mock.return_value = [] mocked_bq_client.return_value = BigQueryClientMock() credentials = Credentials('fake_user', '1234') dataset.to_csv('fake_path', credentials)
def test_dataset_download_not_subscribed_but_public( self, download_stream_mock, get_by_id_mock, get_all_mock): # Given get_by_id_mock.return_value = test_dataset1 # is public dataset = Dataset.get(test_dataset1.id) get_all_mock.return_value = [] download_stream_mock.return_value = [] credentials = Credentials('fake_user', '1234') dataset.to_csv('fake_path', credentials)
def test_summary_values(self): # Given dataset = Dataset(db_dataset2) # When summary = dataset.summary # Then assert summary == dataset.data['summary_json']
def test_dataset_download_not_subscribed_but_public( self, mock_download_stream, mock_get_by_id): # Given mock_get_by_id.return_value = test_dataset1 # is public dataset = Dataset.get(test_dataset1.id) mock_download_stream.return_value = [] credentials = Credentials('fake_user', '1234') dataset.to_csv('fake_path', credentials) os.remove('fake_path')
def test_dataset_download(self, mocked_bq_client, get_by_id_mock, get_all_mock): # Given get_by_id_mock.return_value = test_dataset1 dataset = Dataset.get(test_dataset1.id) get_all_mock.return_value = [dataset] mocked_bq_client.return_value = BigQueryClientMock() credentials = Credentials('fake_user', '1234') # Then dataset.to_csv('fake_path', credentials)
def test_get_dataset_by_id(self, mocked_repo): # Given mocked_repo.return_value = test_dataset1 # When dataset = Dataset.get(test_dataset1.id) # Then assert isinstance(dataset, object) assert isinstance(dataset, Dataset) assert dataset == test_dataset1
def test_get_all_datasets(self, mocked_repo): # Given mocked_repo.return_value = test_datasets # When datasets = Dataset.get_all() # Then assert isinstance(datasets, list) assert isinstance(datasets, CatalogList) assert datasets == test_datasets
def test_dataset_download(self, download_stream_mock, get_by_id_mock, get_all_mock): # Given get_by_id_mock.return_value = test_dataset1 dataset = Dataset.get(test_dataset1.id) get_all_mock.return_value = [dataset] download_stream_mock.return_value = [] credentials = Credentials('fake_user', '1234') # Then dataset.to_csv('fake_path', credentials)
def test_dataset_download(self, mock_download_stream, mock_get_by_id, mock_subscription_ids): # Given mock_get_by_id.return_value = test_dataset1 dataset = Dataset.get(test_dataset1.id) mock_download_stream.return_value = [] mock_subscription_ids.return_value = [test_dataset1.id] credentials = Credentials('fake_user', '1234') # Then dataset.to_csv('fake_path', credentials) os.remove('fake_path')
def test_get_all_datasets_credentials(self, mocked_repo): # Given mocked_repo.return_value = test_datasets credentials = Credentials('fake_user', '1234') # When datasets = Dataset.get_all(credentials=credentials) # Then mocked_repo.assert_called_once_with(None, credentials) assert isinstance(datasets, list) assert isinstance(datasets, CatalogList) assert datasets == test_datasets
def test_dataset_is_available_in(self): # Given dataset_in_bq = Dataset(db_dataset1) dataset_not_in_bq = Dataset(db_dataset2) # Then assert dataset_in_bq._is_available_in('bq') assert not dataset_not_in_bq._is_available_in('bq')
def test_dataset_not_subscribed_download_fails(self, get_by_id_mock, get_all_mock): # mock dataset get_by_id_mock.return_value = test_dataset2 # is private dataset = Dataset.get(test_dataset2.id) get_all_mock.return_value = [] credentials = Credentials('fake_user', '1234') # When with pytest.raises(Exception) as e: dataset.to_csv('fake_path', credentials) # Then assert str(e.value) == ('You are not subscribed to this Dataset yet. ' 'Please, use the subscribe method first.')
def test_dataset_download_without_do_enabled(self, mocked_bq_client, get_by_id_mock, get_all_mock): # Given get_by_id_mock.return_value = test_dataset1 dataset = Dataset.get(test_dataset1.id) get_all_mock.return_value = [] mocked_bq_client.return_value = BigQueryClientMock( ServerErrorException(['The user does not have Data Observatory enabled']) ) credentials = Credentials('fake_user', '1234') # When with pytest.raises(Exception) as e: dataset.to_csv('fake_path', credentials) # Then assert str(e.value) == ( 'We are sorry, the Data Observatory is not enabled for your account yet. ' 'Please contact your customer success manager or send an email to ' '[email protected] to request access to it.')
def test_dataset_properties(self): # Given dataset = Dataset(db_dataset1) # When dataset_id = dataset.id slug = dataset.slug name = dataset.name description = dataset.description provider = dataset.provider category = dataset.category data_source = dataset.data_source country = dataset.country language = dataset.language geography = dataset.geography temporal_aggregation = dataset.temporal_aggregation time_coverage = dataset.time_coverage update_frequency = dataset.update_frequency version = dataset.version is_public_data = dataset.is_public_data summary = dataset.summary # Then assert dataset_id == db_dataset1['id'] assert slug == db_dataset1['slug'] assert name == db_dataset1['name'] assert description == db_dataset1['description'] assert provider == db_dataset1['provider_id'] assert category == db_dataset1['category_id'] assert data_source == db_dataset1['data_source_id'] assert country == db_dataset1['country_id'] assert language == db_dataset1['lang'] assert geography == db_dataset1['geography_id'] assert temporal_aggregation == db_dataset1['temporal_aggregation'] assert time_coverage == db_dataset1['time_coverage'] assert update_frequency == db_dataset1['update_frequency'] assert version == db_dataset1['version'] assert is_public_data == db_dataset1['is_public_data'] assert summary == db_dataset1['summary_json']