コード例 #1
0
def test_filter_annotations_multiple_sort_reverse_last(
        mock_get_annotation_field):
    def _mock_get_annotation_field(annotation, field):
        return {
            (sentinel.annotation0, 'foo'): 3,
            (sentinel.annotation1, 'foo'): 3,
            (sentinel.annotation2, 'foo'): 3,
            (sentinel.annotation3, 'foo'): 3,
            (sentinel.annotation0, 'bar'): 4,
            (sentinel.annotation1, 'bar'): 3,
            (sentinel.annotation2, 'bar'): 4,
            (sentinel.annotation3, 'bar'): 4,
            (sentinel.annotation0, 'baz'): 2,
            (sentinel.annotation1, 'baz'): 0,
            (sentinel.annotation2, 'baz'): 1,
            (sentinel.annotation3, 'baz'): 3,
        }[(annotation, field)]

    mock_get_annotation_field.side_effect = _mock_get_annotation_field

    assert filter_annotations(
        [
            sentinel.annotation0,
            sentinel.annotation1,
            sentinel.annotation2,
            sentinel.annotation3,
        ],
        filter_fields={
            'foo': 3,
            'bar': 4
        },
        sort_field='baz',
        sort_reverse=True,
        action_if_multiple='last') == [sentinel.annotation2]
コード例 #2
0
def test_filter_annotations_multiple_sort_reverse_last(
        mock_get_annotation_field):
    def _mock_get_annotation_field(annotation, field):
        return {
            (sentinel.annotation0, 'foo'): 3,
            (sentinel.annotation1, 'foo'): 3,
            (sentinel.annotation2, 'foo'): 3,
            (sentinel.annotation3, 'foo'): 3,
            (sentinel.annotation0, 'bar'): 4,
            (sentinel.annotation1, 'bar'): 3,
            (sentinel.annotation2, 'bar'): 4,
            (sentinel.annotation3, 'bar'): 4,
            (sentinel.annotation0, 'baz'): 2,
            (sentinel.annotation1, 'baz'): 0,
            (sentinel.annotation2, 'baz'): 1,
            (sentinel.annotation3, 'baz'): 3,
        }[(annotation, field)]
    mock_get_annotation_field.side_effect = _mock_get_annotation_field

    assert filter_annotations(
        [
            sentinel.annotation0,
            sentinel.annotation1,
            sentinel.annotation2,
            sentinel.annotation3,
        ],
        filter_fields={'foo': 3, 'bar': 4},
        sort_field='baz',
        sort_reverse=True,
        action_if_multiple='last'
    ) == [sentinel.annotation2]
コード例 #3
0
def test_filter_annotations_zero_raise_with_multiple(
        mock_get_annotation_field):
    def _mock_get_annotation_field(annotation, field):
        return {
            (sentinel.annotation0, 'foo'): 3,
            (sentinel.annotation1, 'foo'): 3,
            (sentinel.annotation2, 'foo'): 3,
            (sentinel.annotation0, 'bar'): 4,
            (sentinel.annotation1, 'bar'): 3,
            (sentinel.annotation2, 'bar'): 4,
        }[(annotation, field)]

    mock_get_annotation_field.side_effect = _mock_get_annotation_field

    assert filter_annotations([
        sentinel.annotation0,
        sentinel.annotation1,
        sentinel.annotation2,
    ],
                              filter_fields={
                                  'foo': 3,
                                  'bar': 4
                              },
                              action_if_zero='raise') == [
                                  sentinel.annotation0, sentinel.annotation2
                              ]
コード例 #4
0
def test_filter_annotations_multiple_reverse(mock_get_annotation_field):
    def _mock_get_annotation_field(annotation, field):
        return {
            (sentinel.annotation0, 'foo'): 3,
            (sentinel.annotation1, 'foo'): 3,
            (sentinel.annotation2, 'foo'): 3,
            (sentinel.annotation3, 'foo'): 3,
            (sentinel.annotation0, 'bar'): 4,
            (sentinel.annotation1, 'bar'): 3,
            (sentinel.annotation2, 'bar'): 4,
            (sentinel.annotation3, 'bar'): 4,
        }[(annotation, field)]

    mock_get_annotation_field.side_effect = _mock_get_annotation_field

    assert filter_annotations([
        sentinel.annotation0,
        sentinel.annotation1,
        sentinel.annotation2,
        sentinel.annotation3,
    ],
                              filter_fields={
                                  'foo': 3,
                                  'bar': 4
                              },
                              sort_reverse=True) == [
                                  sentinel.annotation3, sentinel.annotation2,
                                  sentinel.annotation0
                              ]
コード例 #5
0
def test_filter_annotations_noop():
    assert filter_annotations([
        sentinel.annotation0,
        sentinel.annotation1,
        sentinel.annotation2,
    ]) == [
        sentinel.annotation0,
        sentinel.annotation1,
        sentinel.annotation2,
    ]
コード例 #6
0
def test_filter_annotations_noop():
    assert filter_annotations([
        sentinel.annotation0,
        sentinel.annotation1,
        sentinel.annotation2,
    ]) == [
        sentinel.annotation0,
        sentinel.annotation1,
        sentinel.annotation2,
    ]
コード例 #7
0
def test_filter_annotations_zero_raise(mock_get_annotation_field):
    def _mock_get_annotation_field(annotation, field):
        return {
            (sentinel.annotation0, 'foo'): 3,
            (sentinel.annotation1, 'foo'): 3,
            (sentinel.annotation2, 'foo'): 4,
            (sentinel.annotation0, 'bar'): 3,
            (sentinel.annotation1, 'bar'): 3,
            (sentinel.annotation2, 'bar'): 4,
        }[(annotation, field)]
    mock_get_annotation_field.side_effect = _mock_get_annotation_field

    with raises(ZeroAnnotationsError):
        filter_annotations(
            [
                sentinel.annotation0,
                sentinel.annotation1,
                sentinel.annotation2,
            ],
            filter_fields={'foo': 3, 'bar': 4},
            action_if_zero='raise'
        )
コード例 #8
0
def test_filter_annotations_zero_raise(mock_get_annotation_field):
    def _mock_get_annotation_field(annotation, field):
        return {
            (sentinel.annotation0, 'foo'): 3,
            (sentinel.annotation1, 'foo'): 3,
            (sentinel.annotation2, 'foo'): 4,
            (sentinel.annotation0, 'bar'): 3,
            (sentinel.annotation1, 'bar'): 3,
            (sentinel.annotation2, 'bar'): 4,
        }[(annotation, field)]

    mock_get_annotation_field.side_effect = _mock_get_annotation_field

    with raises(ZeroAnnotationsError):
        filter_annotations([
            sentinel.annotation0,
            sentinel.annotation1,
            sentinel.annotation2,
        ],
                           filter_fields={
                               'foo': 3,
                               'bar': 4
                           },
                           action_if_zero='raise')
コード例 #9
0
def test_filter_annotations_multiple_raise_with_one(mock_get_annotation_field):
    def _mock_get_annotation_field(annotation, field):
        return {
            (sentinel.annotation0, 'foo'): 3,
            (sentinel.annotation1, 'foo'): 3,
            (sentinel.annotation2, 'foo'): 4,
            (sentinel.annotation0, 'bar'): 3,
            (sentinel.annotation1, 'bar'): 4,
            (sentinel.annotation2, 'bar'): 4,
        }[(annotation, field)]
    mock_get_annotation_field.side_effect = _mock_get_annotation_field

    assert filter_annotations(
        [
            sentinel.annotation0,
            sentinel.annotation1,
            sentinel.annotation2,
        ],
        filter_fields={'foo': 3, 'bar': 4}
    ) == [sentinel.annotation1]
コード例 #10
0
def test_filter_annotations_zero(mock_get_annotation_field):
    def _mock_get_annotation_field(annotation, field):
        return {
            (sentinel.annotation0, 'foo'): 3,
            (sentinel.annotation1, 'foo'): 3,
            (sentinel.annotation2, 'foo'): 4,
            (sentinel.annotation0, 'bar'): 3,
            (sentinel.annotation1, 'bar'): 3,
            (sentinel.annotation2, 'bar'): 4,
        }[(annotation, field)]

    mock_get_annotation_field.side_effect = _mock_get_annotation_field

    assert filter_annotations([
        sentinel.annotation0,
        sentinel.annotation1,
        sentinel.annotation2,
    ],
                              filter_fields={
                                  'foo': 3,
                                  'bar': 4
                              }) == []
コード例 #11
0
def test_filter_annotations_multiple_last(
        mock_get_annotation_field):
    def _mock_get_annotation_field(annotation, field):
        return {
            (sentinel.annotation0, 'foo'): 3,
            (sentinel.annotation1, 'foo'): 3,
            (sentinel.annotation2, 'foo'): 3,
            (sentinel.annotation0, 'bar'): 4,
            (sentinel.annotation1, 'bar'): 3,
            (sentinel.annotation2, 'bar'): 4,
        }[(annotation, field)]
    mock_get_annotation_field.side_effect = _mock_get_annotation_field

    assert filter_annotations(
        [
            sentinel.annotation0,
            sentinel.annotation1,
            sentinel.annotation2,
        ],
        filter_fields={'foo': 3, 'bar': 4},
        action_if_multiple='last'
    ) == [sentinel.annotation2]
コード例 #12
0
def test_filter_annotations_multiple_reverse(mock_get_annotation_field):
    def _mock_get_annotation_field(annotation, field):
        return {
            (sentinel.annotation0, 'foo'): 3,
            (sentinel.annotation1, 'foo'): 3,
            (sentinel.annotation2, 'foo'): 3,
            (sentinel.annotation3, 'foo'): 3,
            (sentinel.annotation0, 'bar'): 4,
            (sentinel.annotation1, 'bar'): 3,
            (sentinel.annotation2, 'bar'): 4,
            (sentinel.annotation3, 'bar'): 4,
        }[(annotation, field)]
    mock_get_annotation_field.side_effect = _mock_get_annotation_field

    assert filter_annotations(
        [
            sentinel.annotation0,
            sentinel.annotation1,
            sentinel.annotation2,
            sentinel.annotation3,
        ],
        filter_fields={'foo': 3, 'bar': 4},
        sort_reverse=True
    ) == [sentinel.annotation3, sentinel.annotation2, sentinel.annotation0]