test: use unit test to test paginate

This commit is contained in:
Stefan Strigler 2023-02-15 13:31:48 +01:00
parent 9be73bfff0
commit 21b8ff6d14
2 changed files with 48 additions and 11 deletions

View File

@ -33,6 +33,10 @@
b2i/1
]).
-ifdef(TEST).
-export([paginate_test_format/1]).
-endif.
-export_type([
match_spec_and_filter/0
]).
@ -671,4 +675,48 @@ params2qs_test_() ->
)
].
paginate_test_format(Row) ->
Row.
paginate_test_() ->
_ = ets:new(?MODULE, [named_table]),
Size = 1000,
MyLimit = 10,
ets:insert(?MODULE, [{I, foo} || I <- lists:seq(1, Size)]),
DefaultLimit = emqx_mgmt:max_row_limit(),
NoParamsResult = paginate(?MODULE, #{}, {?MODULE, paginate_test_format}),
PaginateResults = [
paginate(
?MODULE, #{<<"page">> => I, <<"limit">> => MyLimit}, {?MODULE, paginate_test_format}
)
|| I <- lists:seq(1, floor(Size / MyLimit))
],
[
?_assertMatch(
#{meta := #{count := Size, page := 1, limit := DefaultLimit}}, NoParamsResult
),
?_assertEqual(DefaultLimit, length(maps:get(data, NoParamsResult))),
?_assertEqual(
#{data => [], meta => #{count => Size, limit => DefaultLimit, page => 100}},
paginate(?MODULE, #{<<"page">> => <<"100">>}, {?MODULE, paginate_test_format})
)
] ++ assertPaginateResults(PaginateResults, Size, MyLimit).
assertPaginateResults(Results, Size, Limit) ->
AllData = lists:flatten([Data || #{data := Data} <- Results]),
[
begin
Result = lists:nth(I, Results),
[
?_assertMatch(#{meta := #{count := Size, limit := Limit, page := I}}, Result),
?_assertEqual(Limit, length(maps:get(data, Result)))
]
end
|| I <- lists:seq(1, floor(Size / Limit))
] ++
[
?_assertEqual(floor(Size / Limit), length(Results)),
?_assertEqual(Size, length(AllData)),
?_assertEqual(Size, sets:size(sets:from_list(AllData)))
].
-endif.

View File

@ -173,17 +173,6 @@ t_cluster_query(_Config) ->
end,
ok.
t_paging(_) ->
emqx_mgmt_api_test_util:init_suite(),
try
Path0 = emqx_mgmt_api_test_util:api_path(["banned?page=1"]),
{ok, _} = emqx_mgmt_api_test_util:request_api(get, Path0),
Path1 = emqx_mgmt_api_test_util:api_path(["banned?page=10"]),
{ok, _} = emqx_mgmt_api_test_util:request_api(get, Path1)
after
emqx_mgmt_api_test_util:end_suite()
end.
t_bad_rpc(_) ->
emqx_mgmt_api_test_util:init_suite(),
process_flag(trap_exit, true),