0
Fork 0
mirror of https://github.com/verdaccio/verdaccio.git synced 2024-12-16 21:56:25 -05:00
verdaccio/packages/web/test/api.search.test.ts
Juan Picado 5167bb528f
feat: UI search uses search endpoint for global search (#3057)
* UI search uses search endpoint for global search

* improve sorting and error handling

* give priority to private packages

* order by private package

* add tests, improve testing

* add changeset

* addjust settings

* remove old index search implementation

* update lock file

* relocate fastify package

* fix circular dependency

* fix wrong import

* fix tests
2022-03-27 21:42:52 +02:00

67 lines
2.3 KiB
TypeScript

import path from 'path';
import supertest from 'supertest';
import { HEADERS, HEADER_TYPE, HTTP_STATUS } from '@verdaccio/core';
import { setup } from '@verdaccio/logger';
import { publishVersion } from '@verdaccio/test-helper';
import { initializeServer } from './helper';
setup([]);
const mockManifest = jest.fn();
jest.mock('@verdaccio/ui-theme', () => mockManifest());
describe('test web server', () => {
beforeAll(() => {
mockManifest.mockReturnValue(() => ({
staticPath: path.join(__dirname, 'static'),
manifestFiles: {
js: ['runtime.js', 'vendors.js', 'main.js'],
},
manifest: require('./partials/manifest/manifest.json'),
}));
});
afterEach(() => {
Date.now = jest.fn(() => new Date(Date.UTC(2017, 1, 14)).valueOf());
jest.clearAllMocks();
mockManifest.mockClear();
});
test('should find results to search api', async () => {
const app = await initializeServer('default-test.yaml');
await publishVersion(app, 'foo', '1.0.0');
const response = await supertest(app)
.get('/-/verdaccio/data/search/foo')
.set('Accept', HEADERS.JSON_CHARSET)
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.expect(HTTP_STATUS.OK);
expect(response.body).toHaveLength(1);
// FUTURE: we can improve here matching the right outcome
});
test('should found no results to search', async () => {
const response = await supertest(await initializeServer('default-test.yaml'))
.get('/-/verdaccio/data/search/notFound')
.set('Accept', HEADERS.JSON_CHARSET)
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.expect(HTTP_STATUS.OK);
expect(response.body).toHaveLength(0);
});
// TODO: need a way to make this fail
test.skip('should fail search api', async () => {
const response = await supertest(await initializeServer('default-test.yaml'))
.get('/-/verdaccio/data/search/thisWillFail')
.set('Accept', HEADERS.JSON_CHARSET)
.expect(HEADER_TYPE.CONTENT_TYPE, HEADERS.JSON_CHARSET)
.expect(HTTP_STATUS.OK);
expect(response.body).toHaveLength(3);
});
test.todo('search abort request');
// maybe these could be done in storage package to avoid have specifics on this level
test.todo('search allow request permissions');
test.todo('search query params, pagination etc');
});