def test_get_by_unique_name_multiple_results(collection, session):

    # This really shouldn't happen

    # Given
    session.set_response([DatasetDataFactory(), DatasetDataFactory()])

    # When
    with pytest.raises(RuntimeError):
        collection.get_by_unique_name("blah")
Exemple #2
0
def test_list_datasets(paginated_collection, paginated_session):
    # Given
    datasets_data = DatasetDataFactory.create_batch(50)
    paginated_session.set_response(datasets_data)

    # When
    datasets = list(paginated_collection.list(per_page=20))

    # Then
    assert 3 == paginated_session.num_calls
    expected_first_call = FakeCall(method='GET',
                                   path='projects/{}/datasets'.format(
                                       paginated_collection.project_id),
                                   params={'per_page': 20})
    expected_last_call = FakeCall(method='GET',
                                  path='projects/{}/datasets'.format(
                                      paginated_collection.project_id),
                                  params={
                                      'page': 3,
                                      'per_page': 20
                                  })
    assert expected_first_call == paginated_session.calls[0]
    assert expected_last_call == paginated_session.last_call
    assert 50 == len(datasets)

    expected_uids = [d['id'] for d in datasets_data]
    dataset_ids = [str(d.uid) for d in datasets]
    assert dataset_ids == expected_uids
Exemple #3
0
def test_list_datasets_infinite_loop_detect(paginated_collection,
                                            paginated_session):
    # Given
    batch_size = 100
    datasets_data = DatasetDataFactory.create_batch(batch_size)
    # duplicate the data, this simulates an API that keeps returning the first page
    datasets_data.extend(datasets_data)
    paginated_session.set_response(datasets_data)

    # When
    datasets = list(paginated_collection.list())

    # Then
    assert 2 == paginated_session.num_calls  # duplicate UID detected on the second call
    expected_first_call = FakeCall(method='GET',
                                   path='projects/{}/datasets'.format(
                                       paginated_collection.project_id),
                                   params={'per_page': batch_size})
    expected_last_call = FakeCall(method='GET',
                                  path='projects/{}/datasets'.format(
                                      paginated_collection.project_id),
                                  params={
                                      'page': 2,
                                      'per_page': batch_size
                                  })
    assert expected_first_call == paginated_session.calls[0]
    assert expected_last_call == paginated_session.last_call
    assert len(datasets) == batch_size

    expected_uids = [d['id'] for d in datasets_data[0:batch_size]]
    dataset_ids = [str(d.uid) for d in datasets]
    assert dataset_ids == expected_uids
def test_register_dataset_with_idempotent_put(collection, session):
    # Given
    name = 'Test Dataset'
    summary = 'testing summary'
    description = 'testing description'
    unique_name = 'foo'
    session.set_response(
        DatasetDataFactory(name=name,
                           summary=summary,
                           description=description,
                           unique_name=unique_name))

    # When
    session.use_idempotent_dataset_put = True
    dataset = collection.register(
        DatasetFactory(name=name,
                       summary=summary,
                       description=description,
                       unique_name=unique_name))

    expected_call = FakeCall(method='PUT',
                             path='projects/{}/datasets'.format(
                                 collection.project_id),
                             json={
                                 'name': name,
                                 'summary': summary,
                                 'description': description,
                                 'unique_name': unique_name
                             })
    assert session.num_calls == 1
    assert expected_call == session.last_call
    assert name == dataset.name
def test_register_dataset_with_existing_id(collection, session):
    # Given
    name = 'Test Dataset'
    summary = 'testing summary'
    description = 'testing description'
    session.set_response(
        DatasetDataFactory(name=name, summary=summary,
                           description=description))

    # When
    dataset = DatasetFactory(name=name,
                             summary=summary,
                             description=description)

    ds_uid = UUID('cafebeef-e341-422c-8076-35adc8828545')
    dataset.uid = ds_uid
    dataset = collection.register(dataset)

    expected_call = FakeCall(method='PUT',
                             path='projects/{}/datasets/{}'.format(
                                 collection.project_id, ds_uid),
                             json={
                                 'name': name,
                                 'summary': summary,
                                 'description': description,
                                 'id': str(ds_uid)
                             })
    assert session.num_calls == 1
    assert expected_call == session.last_call
    assert name == dataset.name
Exemple #6
0
def test_list_datasets(collection, session):
    # Given
    datasets_data = DatasetDataFactory.create_batch(5)
    session.set_response(datasets_data)

    # When
    datasets = list(collection.list())

    # Then
    assert 1 == session.num_calls
    expected_call = FakeCall(method='GET',
                             path='projects/{}/datasets'.format(
                                 collection.project_id))
    assert expected_call == session.last_call
    assert 5 == len(datasets)
def test_get_by_unique_name_with_single_result(collection, session):
    # Given
    name = 'Test Dataset'
    unique_name = "foo"
    session.set_response(
        [DatasetDataFactory(name=name, unique_name=unique_name)])

    # When
    result_ds = collection.get_by_unique_name(unique_name)

    # Then
    expected_call = FakeCall(method='GET',
                             path='projects/{}/datasets?unique_name={}'.format(
                                 collection.project_id, unique_name))
    assert session.num_calls == 1
    assert expected_call == session.last_call
    assert result_ds.name == name
    assert result_ds.unique_name == unique_name
Exemple #8
0
def test_register_dataset(collection, session):
    # Given
    name = 'Test Dataset'
    summary = 'testing summary'
    description = 'testing description'
    session.set_response(
        DatasetDataFactory(name=name, summary=summary,
                           description=description))

    # When
    dataset = collection.register(
        DatasetFactory(name=name, summary=summary, description=description))

    expected_call = FakeCall(method='POST',
                             path='projects/{}/datasets'.format(
                                 collection.project_id),
                             json={
                                 'name': name,
                                 'summary': summary,
                                 'description': description
                             })
    assert session.num_calls == 1
    assert expected_call == session.last_call
    assert name == dataset.name