Example #1
0
def test_update_with_partial_changes_with_required_fields_should_delete_the_missing_ones(
    cosmos_db_repository: CosmosDBRepository,
    event_context: EventContext,
    sample_item: dict,
):
    changes = {
        'id': fake.uuid4(),
        'email': fake.safe_email(),
        'tenant_id': event_context.tenant_id,
    }

    updated_item = cosmos_db_repository.update(
        sample_item['id'], changes, event_context
    )

    assert updated_item is not None
    assert updated_item['id'] == changes["id"] != sample_item["id"]
    assert updated_item['email'] == changes["email"] != sample_item["email"]
    assert updated_item['tenant_id'] == changes["tenant_id"]
    assert updated_item.get('name') is None
    assert updated_item.get('age') is None

    try:
        cosmos_db_repository.find(sample_item['id'], event_context)
        fail('The previous version should not exist')
    except Exception as e:
        assert type(e) is CosmosResourceNotFoundError
        assert e.status_code == 404
Example #2
0
def test_find_by_invalid_partition_key_value_should_fail(
    cosmos_db_repository: CosmosDBRepository, event_context: EventContext
):
    try:
        cosmos_db_repository.find(fake.uuid4(), event_context)

        fail('It should have failed')
    except Exception as e:
        assert type(e) is CosmosResourceNotFoundError
        assert e.status_code == 404
Example #3
0
def test_find_by_valid_id_should_succeed(
    cosmos_db_repository: CosmosDBRepository,
    sample_item: dict,
    event_context: EventContext,
):
    found_item = cosmos_db_repository.find(sample_item["id"], event_context)

    assert all(item in found_item.items() for item in sample_item.items())
Example #4
0
def test_delete_permanently_with_valid_id_should_succeed(
    cosmos_db_repository: CosmosDBRepository,
    event_context: EventContext,
    sample_item: dict,
):
    found_item = cosmos_db_repository.find(sample_item['id'], event_context)

    assert found_item is not None
    assert found_item['id'] == sample_item['id']

    cosmos_db_repository.delete_permanently(sample_item['id'], event_context)

    try:
        cosmos_db_repository.find(sample_item['id'], event_context)
        fail('It should have not found the deleted item')
    except Exception as e:
        assert type(e) is CosmosResourceNotFoundError
        assert e.status_code == 404
Example #5
0
def test_find_can_find_deleted_item_only_if_visibile_only_is_true(
    cosmos_db_repository: CosmosDBRepository,
    event_context: EventContext,
    sample_item: dict,
):
    deleted_item = cosmos_db_repository.delete(
        sample_item['id'], event_context
    )

    assert deleted_item is not None
    assert deleted_item['deleted'] is not None

    try:
        cosmos_db_repository.find(sample_item['id'], event_context)
    except Exception as e:
        assert type(e) is CosmosResourceNotFoundError
        assert e.status_code == 404

    found_deleted_item = cosmos_db_repository.find(
        sample_item['id'], event_context, visible_only=False
    )
    assert found_deleted_item is not None
Example #6
0
def test_delete_with_mapper(
    cosmos_db_repository: CosmosDBRepository,
    sample_item: dict,
    event_context: EventContext,
    mapper: Callable,
    expected_type: Callable,
):
    deleted_item = cosmos_db_repository.delete(
        sample_item['id'], event_context, mapper=mapper
    )

    assert deleted_item is not None
    assert type(deleted_item) is expected_type

    try:
        cosmos_db_repository.find(
            sample_item['id'], event_context, mapper=mapper
        )
        fail('It should have not found the deleted item')
    except Exception as e:
        assert type(e) is CosmosResourceNotFoundError
        assert e.status_code == 404
Example #7
0
def test_find_by_valid_id_and_mapper_should_succeed(
    cosmos_db_repository: CosmosDBRepository,
    sample_item: dict,
    event_context: EventContext,
):
    found_item: Person = cosmos_db_repository.find(
        sample_item["id"], event_context, mapper=Person
    )
    found_item_dict = found_item.__dict__

    assert all(
        attrib in sample_item.items() for attrib in found_item_dict.items()
    )
    assert (
        type(found_item) is Person
    ), "The result should be wrapped with a class"
    assert found_item.is_adult() is (sample_item["age"] >= 18)