Files
n8n-enterprise-unlocked/packages/nodes-base/nodes/JinaAI/__test__/node/JinaAi.node.test.ts
2025-05-09 12:12:49 +03:00

110 lines
2.4 KiB
TypeScript

import { NodeTestHarness } from '@nodes-testing/node-test-harness';
import nock from 'nock';
import deepResearchResult from './fixtures/deepResearch.json';
import readResult from './fixtures/read.json';
import searchResult from './fixtures/search.json';
describe('JinaAI Node', () => {
const credentials = {
jinaAiApi: {
apiKey: 'API-KEY',
},
};
describe('Reader -> Read', () => {
const jinaAiNock = nock('https://r.jina.ai');
beforeAll(() => {
jinaAiNock.get('/https://first.com/some/path').times(2).reply(200, readResult);
jinaAiNock
.get('/https://second.com/other')
.query({
foo: 'bar',
})
.matchHeader('X-Return-Format', 'markdown')
.matchHeader('X-Target-Selector', 'article')
.matchHeader('X-Remove-Selector', '.ad')
.matchHeader('X-With-Generated-Alt', 'true')
.matchHeader('X-Wait-For-Selector', '#posts')
.reply(200, readResult);
});
afterAll(() => jinaAiNock.done());
new NodeTestHarness().setupTests({
credentials,
workflowFiles: ['read.workflow.json'],
});
});
describe('Reader -> Search', () => {
const jinaAiNock = nock('https://s.jina.ai');
beforeAll(() => {
jinaAiNock
.get('/')
.query({
q: 'Jina AI',
})
.times(2)
.reply(200, searchResult);
jinaAiNock
.get('/')
.query({
q: 'Jina AI',
page: 2,
})
.matchHeader('X-Return-Format', 'markdown')
.matchHeader('X-Site', 'jina.ai')
.reply(200, searchResult);
});
afterAll(() => jinaAiNock.done());
new NodeTestHarness().setupTests({
credentials,
workflowFiles: ['search.workflow.json'],
});
});
describe('Research -> Deep Research', () => {
const jinaAiNock = nock('https://deepsearch.jina.ai');
beforeAll(() => {
jinaAiNock
.post('/v1/chat/completions', {
messages: [
{
role: 'user',
content: 'Describe the latest features in Jina AI',
},
],
})
.times(2)
.reply(200, deepResearchResult);
jinaAiNock
.post('/v1/chat/completions', {
messages: [
{
role: 'user',
content: 'Describe the latest features in Jina AI',
},
],
max_returned_urls: 5,
boost_hostnames: ['jina.ai'],
bad_hostnames: ['medium.com'],
only_hostnames: ['jina.ai', 'github.com'],
})
.reply(200, deepResearchResult);
});
afterAll(() => jinaAiNock.done());
new NodeTestHarness().setupTests({
credentials,
workflowFiles: ['deepResearch.workflow.json'],
});
});
});