From 21b8ff6d141b74acfc9c9ba878c62868ac4a1399 Mon Sep 17 00:00:00 2001 From: Stefan Strigler Date: Wed, 15 Feb 2023 13:31:48 +0100 Subject: [PATCH] test: use unit test to test paginate --- apps/emqx_management/src/emqx_mgmt_api.erl | 48 +++++++++++++++++++ .../test/emqx_mgmt_api_SUITE.erl | 11 ----- 2 files changed, 48 insertions(+), 11 deletions(-) diff --git a/apps/emqx_management/src/emqx_mgmt_api.erl b/apps/emqx_management/src/emqx_mgmt_api.erl index 12292b7d9..a2538d06b 100644 --- a/apps/emqx_management/src/emqx_mgmt_api.erl +++ b/apps/emqx_management/src/emqx_mgmt_api.erl @@ -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. diff --git a/apps/emqx_management/test/emqx_mgmt_api_SUITE.erl b/apps/emqx_management/test/emqx_mgmt_api_SUITE.erl index da9a338f2..4d0262e6a 100644 --- a/apps/emqx_management/test/emqx_mgmt_api_SUITE.erl +++ b/apps/emqx_management/test/emqx_mgmt_api_SUITE.erl @@ -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),