UNPKG

@ministryofjustice/hmpps-digital-prison-reporting-frontend

Version:

The Digital Prison Reporting Frontend contains templates and code to help display data effectively in UI applications.

81 lines (70 loc) 2.84 kB
import { Response, Request } from 'express' import { Services } from '../../../types/Services' import BookmarkUtils from './utils' import type BookmarkService from '../../../routes/journeys/my-reports/bookmarks/service' import type ReportingService from '../../../services/reportingService' import DashboardService from '../../../services/dashboardService' import { components } from '../../../types/api' import variant1 from '../../../../../test-app/mocks/mockClients/reports/mockVariants/request-examples/success' import dashboardDefinitions from '../../../../../test-app/mocks/mockClients/dashboards/dashboard-definitions' describe('BookmarkUtils', () => { let services: Services let res: Response let req: Request let bookmarkService: BookmarkService let reportingService: ReportingService let dashboardService: DashboardService let mockDefinition: components['schemas']['SingleVariantReportDefinition'] describe('renderBookmarkList', () => { beforeEach(() => { res = { locals: { user: { uuid: 'UuId', token: 'tOkEn', }, csfrToken: 'CsRfToKeN', bookmarks: [{ reportId: 'test-report-1', variantId: 'test-variant-1' }], }, } as unknown as Response req = { query: {}, } as unknown as Request bookmarkService = { getAllBookmarks: jest.fn().mockResolvedValue([{ reportId: 'test-report-1', variantId: 'test-variant-1' }]), createBookMarkToggleHtml: jest.fn().mockResolvedValue('<p>Bookmark toggle</p>'), } as unknown as BookmarkService mockDefinition = { id: 'reportId', name: 'reportName', description: 'description', variant: variant1 as components['schemas']['VariantDefinition'], } reportingService = { getDefinition: jest.fn().mockResolvedValue(mockDefinition), } as unknown as ReportingService dashboardService = { getDefinition: jest.fn().mockResolvedValue(dashboardDefinitions[0]), } as unknown as DashboardService services = { bookmarkService, reportingService, dashboardService, } as unknown as Services }) it('should render the bookmark list', async () => { const result = await BookmarkUtils.renderBookmarkList({ services, maxRows: 10, res, req, }) expect(result.tableData.rows.length).toEqual(1) expect(result.tableData.rows[0][0].html).toContain('reportName') expect(result.tableData.rows[0][0].html).toContain('Successful Report') expect(result.tableData.rows[0][0].html).toContain('report') expect(result.tableData.rows[0][1].html).toContain('this will succeed') expect(result.tableData.rows[0][2].html).toContain('Bookmark toggle') }) }) })