diff --git a/frontend/src/component/project/ProjectApplications/ProjectApplications.test.tsx b/frontend/src/component/project/ProjectApplications/ProjectApplications.test.tsx new file mode 100644 index 0000000000..3b1236d452 --- /dev/null +++ b/frontend/src/component/project/ProjectApplications/ProjectApplications.test.tsx @@ -0,0 +1,80 @@ +import { screen } from '@testing-library/react'; +import { render } from 'utils/testRenderer'; +import { testServerRoute, testServerSetup } from 'utils/testServer'; +import { ProjectApplications } from './ProjectApplications'; +import { ProjectApplicationSchema } from '../../../openapi'; +import { Route, Routes } from 'react-router-dom'; +import { SEARCH_INPUT } from 'utils/testIds'; + +const server = testServerSetup(); + +const setupApi = (applications: ProjectApplicationSchema[]) => { + testServerRoute(server, '/api/admin/projects/default/applications', { + applications, + total: applications.length, + }); + testServerRoute(server, '/api/admin/ui-config', {}); +}; + +test('Display applications list', async () => { + setupApi([ + { + name: 'app-one', + environments: ['development'], + instances: ['instance1'], + sdks: [{ name: 'unleash-client-node', versions: ['5.5.0'] }], + }, + { + name: 'app-two', + environments: ['development', 'production'], + instances: ['instance1', 'instance2'], + sdks: [ + { name: 'unleash-client-node', versions: ['5.5.0', '5.6.0'] }, + { name: 'unleash-client-java', versions: ['3.5.0'] }, + ], + }, + ]); + render( + + } + /> + , + { + route: '/projects/default/applications?query=app', + }, + ); + + await screen.findByText('-one'); + await screen.findByText('1 environment'); + await screen.findByText('1 instance'); + await screen.findByText('1 sdk'); + + await screen.findByText('-two'); + await screen.findByText('2 environments'); + await screen.findByText('2 instances'); + await screen.findByText('2 sdks'); + + // two highlights + expect(screen.queryAllByText('app').length).toBe(2); + + expect(screen.getByTestId(SEARCH_INPUT)).toHaveValue('app'); +}); + +test('Display no applications found', async () => { + setupApi([]); + render( + + } + /> + , + { + route: '/projects/default/applications?query=', + }, + ); + + await screen.findByText('No applications found matching your criteria.'); +});