test: use unit test to test paginate
This commit is contained in:
parent
9be73bfff0
commit
21b8ff6d14
|
@ -33,6 +33,10 @@
|
||||||
b2i/1
|
b2i/1
|
||||||
]).
|
]).
|
||||||
|
|
||||||
|
-ifdef(TEST).
|
||||||
|
-export([paginate_test_format/1]).
|
||||||
|
-endif.
|
||||||
|
|
||||||
-export_type([
|
-export_type([
|
||||||
match_spec_and_filter/0
|
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.
|
-endif.
|
||||||
|
|
|
@ -173,17 +173,6 @@ t_cluster_query(_Config) ->
|
||||||
end,
|
end,
|
||||||
ok.
|
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(_) ->
|
t_bad_rpc(_) ->
|
||||||
emqx_mgmt_api_test_util:init_suite(),
|
emqx_mgmt_api_test_util:init_suite(),
|
||||||
process_flag(trap_exit, true),
|
process_flag(trap_exit, true),
|
||||||
|
|
Loading…
Reference in New Issue