From 90026020a86bc3c56c0ec8dee75f26f0be84d6b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Summer=E2=9B=B1?= <57806936+honue@users.noreply.github.com> Date: Fri, 3 Nov 2023 13:46:04 +0800 Subject: [PATCH] fix(parameter): adjust to filter before limit. (#13682) * fix(parameter): adjust to filter before limit. * fix(parameter): add test. * fix --- lib/middleware/parameter.js | 10 +++++----- test/middleware/parameter.js | 10 ++++++++++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/lib/middleware/parameter.js b/lib/middleware/parameter.js index f6a918cdb2..4e0b3be2ad 100644 --- a/lib/middleware/parameter.js +++ b/lib/middleware/parameter.js @@ -149,11 +149,6 @@ module.exports = async (ctx, next) => { ctx.state.data.item = await Promise.all(ctx.state.data.item.map(handleItem)); if (ctx.query) { - // limit - if (ctx.query.limit) { - ctx.state.data.item = ctx.state.data.item.slice(0, parseInt(ctx.query.limit)); - } - // filter const engine = config.feature.filter_regex_engine; const makeRegex = (string) => { @@ -251,6 +246,11 @@ module.exports = async (ctx, next) => { }); } + // limit + if (ctx.query.limit) { + ctx.state.data.item = ctx.state.data.item.slice(0, parseInt(ctx.query.limit)); + } + // telegram instant view if (ctx.query.tgiv) { ctx.state.data.item.map((item) => { diff --git a/test/middleware/parameter.js b/test/middleware/parameter.js index b157ec38ca..c3ad9bb371 100644 --- a/test/middleware/parameter.js +++ b/test/middleware/parameter.js @@ -403,3 +403,13 @@ describe('opencc', () => { expect(parsed.items[0].content).toBe('宇宙无敌'); }); }); + +describe('multi parameter', () => { + it(`filter before limit`, async () => { + const response = await request.get('/test/filter-limit?filterout_title=2&limit=2'); + const parsed = await parser.parseString(response.text); + expect(parsed.items.length).toBe(2); + expect(parsed.items[0].title).toBe('Title1'); + expect(parsed.items[1].title).toBe('Title3'); + }); +});