예제 #1
0
def test_get_last_entry(
    find_partition_key_value_mock,
    event_context: EventContext,
    time_entry_repository: TimeEntryCosmosDBRepository,
):
    expected_item = {
        'id': 'id',
        'start_date': '2021-03-22T10:00:00.000Z',
        'end_date': "2021-03-22T11:00:00.000Z",
        'description': 'do some testing',
        'tenant_id': 'tenant_id',
        'project_id': 'project_id',
        'activity_id': 'activity_id',
        'technologies': ['python'],
    }
    query_items_mock = Mock(return_value=iter([expected_item]))
    time_entry_repository.container = Mock()
    time_entry_repository.container.query_items = query_items_mock

    time_entry = time_entry_repository.get_last_entry(
        'id1', ['id1'], event_context
    )

    find_partition_key_value_mock.assert_called_once()
    assert isinstance(time_entry, TimeEntryCosmosDBModel)
    assert time_entry.__dict__ == expected_item
예제 #2
0
def test_find_interception_with_date_range_should_return_true_if_there_are_collisions():
    owner_id = Faker().uuid4()
    tenant_id = Faker().uuid4()
    entry_start_date = "2020-10-01T05:00:00.000Z"
    entry_end_date = "2020-10-01T10:00:00.000Z"

    collision_entry = {
        "project_id": Faker().uuid4(),
        "activity_id": Faker().uuid4(),
        "description": Faker().paragraph(nb_sentences=2),
        "start_date": entry_start_date,
        "end_date": entry_end_date,
        "owner_id": Faker().uuid4(),
        "tenant_id": tenant_id,
    }
    time_entry_repository = TimeEntryCosmosDBRepository()
    query_items_mock = Mock(return_value=[collision_entry])
    time_entry_repository.container = Mock()
    time_entry_repository.container.query_items = query_items_mock

    exist_collision_entries = (
        time_entry_repository.find_interception_with_date_range(
            start_date=entry_start_date,
            end_date=entry_end_date,
            owner_id=owner_id,
            tenant_id=tenant_id,
        )
    )
    assert exist_collision_entries is True
예제 #3
0
def test_find_interception_with_date_range_should_return_false_if_there_are_not_collisions():
    entry_start_date = "2020-10-01T05:00:00.000Z"
    entry_end_date = "2020-10-01T10:00:00.000Z"

    time_entry_repository = TimeEntryCosmosDBRepository()
    query_items_mock = Mock(return_value=[])
    time_entry_repository.container = Mock()
    time_entry_repository.container.query_items = query_items_mock

    exist_collision_entries = (
        time_entry_repository.find_interception_with_date_range(
            start_date=entry_start_date,
            end_date=entry_end_date,
            owner_id=Faker().uuid4(),
            tenant_id=Faker().uuid4(),
        )
    )
    assert exist_collision_entries is False
예제 #4
0
def test_find_all_time_entries_new_version(
    add_complementary_info_mock,
    generate_params_mock,
    get_page_size_or_mock,
    find_partition_key_value_mock,
    event_context: EventContext,
    time_entry_repository: TimeEntryCosmosDBRepository,
):
    expected_item = {
        'id': 'id',
        'start_date': '2021-03-22T10:00:00.000Z',
        'end_date': "2021-03-22T11:00:00.000Z",
        'description': 'do some testing',
        'tenant_id': 'tenant_id',
        'project_id': 'project_id',
        'activity_id': 'activity_id',
        'technologies': ['python'],
    }
    query_items_mock = Mock(return_value=[expected_item])
    time_entry_repository.container = Mock()
    time_entry_repository.container.query_items = query_items_mock

    time_entry_repository.add_complementary_info = query_items_mock

    result = time_entry_repository.find_all(
        conditions={"user_id": "*"},
        event_context=event_context,
        date_range={
            'start_date': "2021-03-22T10:00:00.000Z",
            'end_date': "2021-03-22T11:00:00.000Z",
        },
    )

    find_partition_key_value_mock.assert_called_once()
    get_page_size_or_mock.assert_called_once()

    assert len(result) == 1
    time_entry = result[0]
    assert time_entry == expected_item
예제 #5
0
def test_update_last_entry(
    event_context: EventContext,
    time_entry_repository: TimeEntryCosmosDBRepository,
    expected_item,
    running_item,
    last_item_update,
):
    query_items_mock = Mock(return_value=iter([expected_item]))
    time_entry_repository.container = Mock()
    time_entry_repository.container.query_items = query_items_mock

    partial_update_mock = Mock(return_value=[last_item_update])
    time_entry_repository.partial_update = partial_update_mock

    time_entry_repository.update_last_entry(
        running_item.get('owner_id'),
        running_item.get('start_date'),
        running_item.get('id_running_entry'),
        event_context,
    )

    partial_update_mock.assert_called_once()
    query_items_mock.assert_called_once()