diff --git a/test/unit/stats_tops_tests.erl b/test/unit/stats_tops_tests.erl index 3167a4f..9546d04 100644 --- a/test/unit/stats_tops_tests.erl +++ b/test/unit/stats_tops_tests.erl @@ -79,7 +79,13 @@ test_review_target_tops() -> ok = mnesia:dirty_write(make_review(<<"r2">>, calendar, <<"cA">>, 5, Now)), ok = mnesia:dirty_write(make_review(<<"r3">>, event, <<"eA">>, 1, Now)), ok = mnesia:dirty_write(make_review(<<"r4">>, calendar, <<"cB">>, 2, Now)), - wait_review_top({calendar, <<"cA">>}, 30), + wait_until(fun() -> + All = core_review:get_top_targets_by_reviews(3), + Keys = [{T, I} || {T, I, _} <- All], + lists:member({calendar, <<"cA">>}, Keys) + andalso lists:member({event, <<"eA">>}, Keys) + andalso lists:member({calendar, <<"cB">>}, Keys) + end, 40), All = core_review:get_top_targets_by_reviews(3), ?assertMatch([{calendar, <<"cA">>, 2} | _], All), AllKeys = [{T, I} || {T, I, _} <- All], @@ -97,7 +103,10 @@ test_report_target_tops() -> ok = mnesia:dirty_write(make_report(<<"p1">>, calendar, <<"cX">>, Now)), ok = mnesia:dirty_write(make_report(<<"p2">>, calendar, <<"cX">>, Now)), ok = mnesia:dirty_write(make_report(<<"p3">>, event, <<"eX">>, Now)), - wait_report_top({calendar, <<"cX">>}, 30), + wait_until(fun() -> + core_report:get_top_targets_by_reports(2) + =:= [{calendar, <<"cX">>, 2}, {event, <<"eX">>, 1}] + end, 40), Top = core_report:get_top_targets_by_reports(2), ?assertEqual([{calendar, <<"cX">>, 2}, {event, <<"eX">>, 1}], Top). @@ -166,26 +175,12 @@ wait_top_cal_rating(ExpectedId, N) -> _ -> timer:sleep(25), wait_top_cal_rating(ExpectedId, N - 1) end. -wait_review_top(Expected, 0) -> - case core_review:get_top_targets_by_reviews(1) of - [{T, I, _} | _] -> ?assertEqual(Expected, {T, I}); - Other -> ?assertEqual(Expected, Other) - end; -wait_review_top(Expected = {T, I}, N) -> - case core_review:get_top_targets_by_reviews(1) of - [{T, I, _} | _] -> ok; - _ -> timer:sleep(25), wait_review_top(Expected, N - 1) - end. - -wait_report_top(Expected, 0) -> - case core_report:get_top_targets_by_reports(1) of - [{T, I, _} | _] -> ?assertEqual(Expected, {T, I}); - Other -> ?assertEqual(Expected, Other) - end; -wait_report_top(Expected = {T, I}, N) -> - case core_report:get_top_targets_by_reports(1) of - [{T, I, _} | _] -> ok; - _ -> timer:sleep(25), wait_report_top(Expected, N - 1) +wait_until(Pred, 0) -> + ?assertEqual(true, Pred()); +wait_until(Pred, N) -> + case Pred() of + true -> ok; + false -> timer:sleep(25), wait_until(Pred, N - 1) end. wait_cal_pos(ExpectedId, 0) ->