test: middleware/parameter

This commit is contained in:
DIYgod
2019-01-29 18:54:30 +08:00
parent 42ed46532b
commit 8cec57eaec
2 changed files with 110 additions and 14 deletions

View File

@@ -87,23 +87,20 @@ router.get('/', async (ctx) => {
});
router.get('/test/:id', (ctx) => {
const item = [];
for (let i = 1; i < 6; i++) {
item.push({
title: `Title${i}`,
description: `Item${i}`,
pubDate: new Date(`2018-4-${i}`).toUTCString(),
link: `https://github.com/DIYgod/RSSHub/issues/${i}`,
author: `DIYgod${i}`,
});
}
ctx.state.data = {
title: `Test ${ctx.params.id}`,
link: 'https://github.com/DIYgod/RSSHub',
item: [
{
title: 'Title1',
description: 'Item1',
pubDate: new Date('2018-4-2').toUTCString(),
link: 'https://github.com/DIYgod/RSSHub/issues/1',
},
{
title: 'Title2',
description: 'Item2',
pubDate: new Date('2018-4-10').toUTCString(),
link: 'https://github.com/DIYgod/RSSHub/issues/2',
},
],
item: item,
};
});

View File

@@ -0,0 +1,99 @@
const supertest = require('supertest');
const { server } = require('../../lib/index');
const request = supertest(server);
const Parser = require('rss-parser');
const parser = new Parser();
afterAll(() => {
server.close();
});
describe('filter', () => {
it(`filter`, async () => {
const response = await request.get('/test/1?filter=Item4|Title5');
const parsed = await parser.parseString(response.text);
expect(parsed.items.length).toBe(2);
expect(parsed.items[0].title).toBe('Title4');
expect(parsed.items[1].title).toBe('Title5');
});
it(`filter_title`, async () => {
const response = await request.get('/test/1?filter_title=Item4|Title5');
const parsed = await parser.parseString(response.text);
expect(parsed.items.length).toBe(1);
expect(parsed.items[0].title).toBe('Title5');
});
it(`filter_description`, async () => {
const response = await request.get('/test/1?filter_description=Item4|Title5');
const parsed = await parser.parseString(response.text);
expect(parsed.items.length).toBe(1);
expect(parsed.items[0].title).toBe('Title4');
});
it(`filter_author`, async () => {
const response = await request.get('/test/1?filter_author=DIYgod4|DIYgod5');
const parsed = await parser.parseString(response.text);
expect(parsed.items.length).toBe(2);
expect(parsed.items[0].title).toBe('Title4');
expect(parsed.items[1].title).toBe('Title5');
});
it(`filterout`, async () => {
const response = await request.get('/test/1?filterout=Item4|Title5');
const parsed = await parser.parseString(response.text);
expect(parsed.items.length).toBe(3);
expect(parsed.items[0].title).toBe('Title1');
expect(parsed.items[1].title).toBe('Title2');
expect(parsed.items[2].title).toBe('Title3');
});
it(`filterout_title`, async () => {
const response = await request.get('/test/1?filterout_title=Item4|Title5');
const parsed = await parser.parseString(response.text);
expect(parsed.items.length).toBe(4);
expect(parsed.items[0].title).toBe('Title1');
expect(parsed.items[1].title).toBe('Title2');
expect(parsed.items[2].title).toBe('Title3');
expect(parsed.items[3].title).toBe('Title4');
});
it(`filterout_description`, async () => {
const response = await request.get('/test/1?filterout_description=Item4|Title5');
const parsed = await parser.parseString(response.text);
expect(parsed.items.length).toBe(4);
expect(parsed.items[0].title).toBe('Title1');
expect(parsed.items[1].title).toBe('Title2');
expect(parsed.items[2].title).toBe('Title3');
expect(parsed.items[3].title).toBe('Title5');
});
it(`filterout_author`, async () => {
const response = await request.get('/test/1?filterout_author=DIYgod4|DIYgod5');
const parsed = await parser.parseString(response.text);
expect(parsed.items.length).toBe(3);
expect(parsed.items[0].title).toBe('Title1');
expect(parsed.items[1].title).toBe('Title2');
expect(parsed.items[2].title).toBe('Title3');
});
});
describe('limit', () => {
it(`limit`, async () => {
const response = await request.get('/test/1?limit=3');
const parsed = await parser.parseString(response.text);
expect(parsed.items.length).toBe(3);
expect(parsed.items[0].title).toBe('Title1');
expect(parsed.items[1].title).toBe('Title2');
expect(parsed.items[2].title).toBe('Title3');
});
});
describe('tgiv', () => {
it(`tgiv`, async () => {
const response = await request.get('/test/1?tgiv=test');
const parsed = await parser.parseString(response.text);
expect(parsed.items[0].link).toBe(`https://t.me/iv?url=https%3A%2F%2Fgithub.com%2FDIYgod%2FRSSHub%2Fissues%2F1&rhash=test`);
expect(parsed.items[1].link).toBe(`https://t.me/iv?url=https%3A%2F%2Fgithub.com%2FDIYgod%2FRSSHub%2Fissues%2F2&rhash=test`);
});
});