Beispiel #1
0
def test_log_filtered_suggestions(member, tp0, store0):
    suggs = Suggestion.objects.all()
    sugg_start, sugg_end = _get_mid_times(suggs)
    sugg_log = Log()
    # no filtering
    assert (sugg_log.filtered_suggestions().count() ==
            sugg_log.suggestions.count() == suggs.count())
    user_suggestions = (sugg_log.filter_users(sugg_log.suggestions, [member],
                                              field="user_id")
                        | sugg_log.filter_users(sugg_log.suggestions, [member],
                                                field="reviewer_id"))
    assert user_suggestions
    assert (list(user_suggestions.order_by("id")) == list(
        sugg_log.filtered_suggestions(users=[member]).order_by("id")))
    time_suggestions = (sugg_log.filter_timestamps(
        sugg_log.suggestions, start=sugg_start, end=sugg_end)
                        | sugg_log.filter_timestamps(sugg_log.suggestions,
                                                     start=sugg_start,
                                                     end=sugg_end,
                                                     field="review_time"))
    assert time_suggestions
    assert (list(time_suggestions.order_by("id")) == list(
        sugg_log.filtered_suggestions(start=sugg_start,
                                      end=sugg_end).order_by("id")))
    user_time_suggestions = (
        (sugg_log.filter_users(sugg_log.suggestions, [member], field="user_id")
         & sugg_log.filter_timestamps(
             sugg_log.suggestions, start=sugg_start, end=sugg_end))
        | (sugg_log.filter_users(sugg_log.suggestions, [member],
                                 field="reviewer_id")
           & sugg_log.filter_timestamps(sugg_log.suggestions,
                                        start=sugg_start,
                                        end=sugg_end,
                                        field="review_time")))
    assert user_time_suggestions
    assert (list(user_time_suggestions.order_by("id")) == list(
        sugg_log.filtered_suggestions(start=sugg_start,
                                      end=sugg_end,
                                      users=[member]).order_by("id")))
    store_suggestions = sugg_log.filter_store(sugg_log.suggestions, store0.pk)
    assert store_suggestions
    assert (list(store_suggestions.order_by("id")) == list(
        sugg_log.filtered_suggestions(store=store0.id).order_by("id")))
    path_suggestions = sugg_log.filter_path(sugg_log.suggestions,
                                            tp0.pootle_path)
    assert path_suggestions.count()
    assert (path_suggestions.count() == sugg_log.filtered_suggestions(
        path=tp0.pootle_path).count())
Beispiel #2
0
def test_log_filtered_submissions(member, tp0, store0):
    subs = Submission.objects.all()
    sub_start, sub_end = _get_mid_times(subs)
    sub_log = Log()
    # no filtering
    assert (sub_log.filtered_submissions().count() ==
            sub_log.submissions.count() == subs.count())
    user_subs = (sub_log.filter_users(sub_log.submissions, users=[member]))
    assert user_subs.count()
    assert (list(user_subs) == list(
        sub_log.filtered_submissions(users=[member])))
    time_subs = (sub_log.filter_timestamps(sub_log.submissions,
                                           start=sub_start,
                                           end=sub_end))
    assert time_subs.count()
    assert (list(time_subs) == list(
        sub_log.filtered_submissions(start=sub_start, end=sub_end)))
    store_subs = (sub_log.filter_store(sub_log.submissions, store0.pk))
    assert store_subs.count()
    assert (list(sub_log.submissions.filter(
        unit__store_id=store0.pk)) == list(store_subs))
    path_subs = (sub_log.filter_path(sub_log.submissions, tp0.pootle_path))
    assert path_subs.count()
    assert (sub_log.submissions.filter(
        unit__store__pootle_path__startswith=tp0.pootle_path).count() ==
            path_subs.count())
Beispiel #3
0
def test_log_filtered_created_units(system, tp0, store0):
    created_units = UnitSource.objects.all()
    created_unit_start, created_unit_end = _get_mid_times(
        created_units, field="unit__creation_time")
    created_unit_log = Log()
    # no filtering
    assert (
        created_unit_log.filtered_created_units(include_meta=True).count()
        == created_unit_log.created_units.count()
        == created_units.count())
    user_created_units = created_unit_log.filter_users(
        created_unit_log.created_units,
        [system.id],
        field="created_by_id",
        include_meta=True)
    assert user_created_units.count()
    assert (
        list(user_created_units)
        == list(created_unit_log.filtered_created_units(
            users=[system])))
    # using start and end seems to create empty - so only testing start
    time_created_units = created_unit_log.filter_timestamps(
        created_unit_log.created_units,
        start=created_unit_start,
        field="unit__creation_time")
    assert time_created_units.count()
    assert (
        list(time_created_units)
        == list(created_unit_log.filtered_created_units(
            start=created_unit_start, include_meta=True)))
    store_created_units = created_unit_log.filter_store(
        created_unit_log.created_units,
        store0.pk)
    assert store_created_units.count()
    assert (
        list(created_unit_log.filtered_created_units(
            store=store0.pk, include_meta=True))
        == list(store_created_units))
    path_created_units = created_unit_log.filter_path(
        created_unit_log.created_units,
        tp0.pootle_path)
    assert path_created_units.count()
    assert (
        created_unit_log.filtered_created_units(
            path=tp0.pootle_path, include_meta=True).count()
        == path_created_units.count())
Beispiel #4
0
def test_log_filtered_submissions(member, tp0, store0):
    subs = Submission.objects.all()
    sub_start, sub_end = _get_mid_times(subs)
    sub_log = Log()
    # no filtering
    assert (
        sub_log.filtered_submissions().count()
        == sub_log.submissions.count()
        == subs.count())
    user_subs = (
        sub_log.filter_users(
            sub_log.submissions,
            users=[member]))
    assert user_subs.count()
    assert (
        list(user_subs)
        == list(sub_log.filtered_submissions(users=[member])))
    time_subs = (
        sub_log.filter_timestamps(
            sub_log.submissions,
            start=sub_start,
            end=sub_end))
    assert time_subs.count()
    assert (
        list(time_subs)
        == list(sub_log.filtered_submissions(
            start=sub_start, end=sub_end)))
    store_subs = (
        sub_log.filter_store(
            sub_log.submissions,
            store0.pk))
    assert store_subs.count()
    assert (
        list(sub_log.submissions.filter(unit__store_id=store0.pk))
        == list(store_subs))
    path_subs = (
        sub_log.filter_path(
            sub_log.submissions,
            tp0.pootle_path))
    assert path_subs.count()
    assert (
        sub_log.submissions.filter(
            unit__store__pootle_path__startswith=tp0.pootle_path).count()
        == path_subs.count())
Beispiel #5
0
def test_log_filtered_created_units(system, tp0, store0):
    created_units = UnitSource.objects.all()
    created_unit_start, created_unit_end = _get_mid_times(
        created_units, field="unit__creation_time")
    created_unit_log = Log()
    # no filtering
    assert (created_unit_log.filtered_created_units(include_meta=True).count()
            == created_unit_log.created_units.count() == created_units.count())
    user_created_units = created_unit_log.filter_users(
        created_unit_log.created_units, [system.id],
        field="created_by_id",
        include_meta=True)
    assert user_created_units.count()
    assert (list(user_created_units) == list(
        created_unit_log.filtered_created_units(users=[system])))
    # using start and end seems to create empty - so only testing start
    time_created_units = created_unit_log.filter_timestamps(
        created_unit_log.created_units,
        start=created_unit_start,
        field="unit__creation_time")
    assert time_created_units.count()
    assert (list(time_created_units) == list(
        created_unit_log.filtered_created_units(start=created_unit_start,
                                                include_meta=True)))
    store_created_units = created_unit_log.filter_store(
        created_unit_log.created_units, store0.pk)
    assert store_created_units.count()
    assert (list(
        created_unit_log.filtered_created_units(
            store=store0.pk, include_meta=True)) == list(store_created_units))
    path_created_units = created_unit_log.filter_path(
        created_unit_log.created_units, tp0.pootle_path)
    assert path_created_units.count()
    assert (created_unit_log.filtered_created_units(
        path=tp0.pootle_path,
        include_meta=True).count() == path_created_units.count())
Beispiel #6
0
def test_log_get_suggestions(member, store0):
    suggestions = Suggestion.objects.all()
    sugg_start, sugg_end = _get_mid_times(suggestions)
    sugg_log = Log()
    sugg_events = sugg_log.get_suggestion_events()
    assert type(sugg_events).__name__ == "generator"
    user_time_suggestions = (
        (sugg_log.filter_users(
            sugg_log.suggestions,
            [member],
            field="user_id")
         & sugg_log.filter_timestamps(
             sugg_log.suggestions,
             start=sugg_start,
             end=sugg_end))
        | (sugg_log.filter_users(
            sugg_log.suggestions,
            [member],
            field="reviewer_id")
           & sugg_log.filter_timestamps(
               sugg_log.suggestions,
               start=sugg_start,
               end=sugg_end,
               field="review_time")))
    assert user_time_suggestions
    pending = suggestions.filter(
        creation_time__gte=sugg_start,
        creation_time__lt=sugg_end,
        state__name="pending").first()
    review.get(Suggestion)([pending], member).accept()
    pending = suggestions.filter(
        creation_time__gte=sugg_start,
        creation_time__lt=sugg_end,
        state__name="pending").first()
    review.get(Suggestion)([pending], member).reject()
    pending.review_time = sugg_start
    pending.save()
    expected = {}
    for suggestion in user_time_suggestions.all():
        add_event = (
            (suggestion.creation_time >= sugg_start)
            and (suggestion.creation_time < sugg_end)
            and (suggestion.user == member))
        review_event = (
            (suggestion.review_time >= sugg_start)
            and (suggestion.review_time < sugg_end)
            and (suggestion.reviewer == member))
        expected[suggestion.id] = {}
        if add_event:
            expected[suggestion.id]["suggestion_created"] = (
                sugg_log.event(
                    suggestion.unit,
                    suggestion.user,
                    suggestion.creation_time,
                    "suggestion_created",
                    suggestion))
        if review_event:
            event_name = (
                "suggestion_accepted"
                if suggestion.state.name == "accepted"
                else "suggestion_rejected")
            expected[suggestion.id][event_name] = (
                sugg_log.event(
                    suggestion.unit,
                    suggestion.reviewer,
                    suggestion.review_time,
                    event_name,
                    suggestion))
    result = sugg_log.get_suggestion_events(
        start=sugg_start, end=sugg_end, users=[member.id])
    for event in result:
        assert isinstance(event, sugg_log.event)
        sugg_review = expected[event.value.pk][event.action]
        assert event.unit == sugg_review.unit
        assert event.action in [
            "suggestion_created", "suggestion_accepted", "suggestion_rejected"]
        assert event.user == (
            sugg_review.value.user
            if event.action == "suggestion_created"
            else sugg_review.value.reviewer)
        assert event.timestamp == (
            sugg_review.value.creation_time
            if event.action == "suggestion_created"
            else sugg_review.value.review_time)
        assert event.value == sugg_review.value
Beispiel #7
0
def test_log_filtered_suggestions(member, tp0, store0):
    suggs = Suggestion.objects.all()
    sugg_start, sugg_end = _get_mid_times(suggs)
    sugg_log = Log()
    # no filtering
    assert (
        sugg_log.filtered_suggestions().count()
        == sugg_log.suggestions.count()
        == suggs.count())
    user_suggestions = (
        sugg_log.filter_users(
            sugg_log.suggestions,
            [member],
            field="user_id")
        | sugg_log.filter_users(
            sugg_log.suggestions,
            [member],
            field="reviewer_id"))
    assert user_suggestions
    assert (
        list(user_suggestions.order_by("id"))
        == list(sugg_log.filtered_suggestions(
            users=[member]).order_by("id")))
    time_suggestions = (
        sugg_log.filter_timestamps(
            sugg_log.suggestions,
            start=sugg_start,
            end=sugg_end)
        | sugg_log.filter_timestamps(
            sugg_log.suggestions,
            start=sugg_start,
            end=sugg_end,
            field="review_time"))
    assert time_suggestions
    assert (
        list(time_suggestions.order_by("id"))
        == list(sugg_log.filtered_suggestions(
            start=sugg_start, end=sugg_end).order_by("id")))
    user_time_suggestions = (
        (sugg_log.filter_users(
            sugg_log.suggestions,
            [member],
            field="user_id")
         & sugg_log.filter_timestamps(
             sugg_log.suggestions,
             start=sugg_start,
             end=sugg_end))
        | (sugg_log.filter_users(
            sugg_log.suggestions,
            [member],
            field="reviewer_id")
           & sugg_log.filter_timestamps(
               sugg_log.suggestions,
               start=sugg_start,
               end=sugg_end,
               field="review_time")))
    assert user_time_suggestions
    assert (
        list(user_time_suggestions.order_by("id"))
        == list(sugg_log.filtered_suggestions(
            start=sugg_start, end=sugg_end, users=[member]).order_by("id")))
    store_suggestions = sugg_log.filter_store(
        sugg_log.suggestions, store0.pk)
    assert store_suggestions
    assert (
        list(store_suggestions.order_by("id"))
        == list(sugg_log.filtered_suggestions(
            store=store0.id).order_by("id")))
    path_suggestions = sugg_log.filter_path(
        sugg_log.suggestions, tp0.pootle_path)
    assert path_suggestions.count()
    assert (
        path_suggestions.count()
        == sugg_log.filtered_suggestions(path=tp0.pootle_path).count())
Beispiel #8
0
def test_log_get_suggestions(member, store0):
    suggestions = Suggestion.objects.all()
    sugg_start, sugg_end = _get_mid_times(suggestions)
    sugg_log = Log()
    sugg_events = sugg_log.get_suggestion_events()
    assert type(sugg_events).__name__ == "generator"
    user_time_suggestions = (
        (sugg_log.filter_users(sugg_log.suggestions, [member], field="user_id")
         & sugg_log.filter_timestamps(
             sugg_log.suggestions, start=sugg_start, end=sugg_end))
        | (sugg_log.filter_users(sugg_log.suggestions, [member],
                                 field="reviewer_id")
           & sugg_log.filter_timestamps(sugg_log.suggestions,
                                        start=sugg_start,
                                        end=sugg_end,
                                        field="review_time")))
    assert user_time_suggestions
    pending = suggestions.filter(creation_time__gte=sugg_start,
                                 creation_time__lt=sugg_end,
                                 state__name="pending").first()
    review.get(Suggestion)([pending], member).accept()
    pending = suggestions.filter(creation_time__gte=sugg_start,
                                 creation_time__lt=sugg_end,
                                 state__name="pending").first()
    review.get(Suggestion)([pending], member).reject()
    pending.review_time = sugg_start
    pending.save()
    expected = {}
    for suggestion in user_time_suggestions.all():
        add_event = ((suggestion.creation_time >= sugg_start)
                     and (suggestion.creation_time < sugg_end)
                     and (suggestion.user == member))
        review_event = ((suggestion.review_time >= sugg_start)
                        and (suggestion.review_time < sugg_end)
                        and (suggestion.reviewer == member))
        expected[suggestion.id] = {}
        if add_event:
            expected[suggestion.id]["suggestion_created"] = (sugg_log.event(
                suggestion.unit, suggestion.user, suggestion.creation_time,
                "suggestion_created", suggestion))
        if review_event:
            event_name = ("suggestion_accepted" if suggestion.state.name
                          == "accepted" else "suggestion_rejected")
            expected[suggestion.id][event_name] = (sugg_log.event(
                suggestion.unit, suggestion.reviewer, suggestion.review_time,
                event_name, suggestion))
    result = sugg_log.get_suggestion_events(start=sugg_start,
                                            end=sugg_end,
                                            users=[member.id])
    for event in result:
        assert isinstance(event, sugg_log.event)
        sugg_review = expected[event.value.pk][event.action]
        assert event.unit == sugg_review.unit
        assert event.action in [
            "suggestion_created", "suggestion_accepted", "suggestion_rejected"
        ]
        assert event.user == (sugg_review.value.user
                              if event.action == "suggestion_created" else
                              sugg_review.value.reviewer)
        assert event.timestamp == (sugg_review.value.creation_time
                                   if event.action == "suggestion_created" else
                                   sugg_review.value.review_time)
        assert event.value == sugg_review.value