Skip to main content
Glama
ResourceHeader.test.tsx5.78 kB
// SPDX-FileCopyrightText: Copyright Orangebot, Inc. and Medplum contributors // SPDX-License-Identifier: Apache-2.0 import type { Coding, Identifier, Reference, Resource, ServiceRequest } from '@medplum/fhirtypes'; import { MockClient } from '@medplum/mock'; import { MedplumProvider } from '@medplum/react'; import { randomUUID } from 'crypto'; import { MemoryRouter } from 'react-router'; import { act, render, screen } from '../test-utils/render'; import { ResourceHeader } from './ResourceHeader'; const medplum = new MockClient(); const baseServiceRequest: ServiceRequest = { resourceType: 'ServiceRequest', status: 'active', intent: 'order', identifier: [ { system: 'abc', value: '456' }, { system: 'def', value: '789' }, ], subject: { reference: 'Patient/123' }, }; describe('ResourceHeader', () => { async function setup(resource: Resource | Reference): Promise<void> { await act(async () => { render( <MemoryRouter> <MedplumProvider medplum={medplum}> <ResourceHeader resource={resource} /> </MedplumProvider> </MemoryRouter> ); }); } test('Renders ID', async () => { const id = randomUUID(); await setup({ resourceType: 'ServiceRequest', id, }); expect(screen.getByText(id)).toBeInTheDocument(); }); test('Renders single identifier', async () => { const id = randomUUID(); await setup({ resourceType: 'Bundle', id, identifier: { system: 'abc', value: '456' }, }); expect(screen.queryByText(id)).not.toBeInTheDocument(); expect(screen.getByText('abc')).toBeInTheDocument(); expect(screen.getByText('456')).toBeInTheDocument(); }); test('Renders identifier array', async () => { const id = randomUUID(); await setup({ ...baseServiceRequest, id, identifier: [ { system: 'abc', value: '456' }, { system: 'def', value: '789' }, ], }); expect(screen.queryByText(id)).not.toBeInTheDocument(); expect(screen.getByText('abc')).toBeInTheDocument(); expect(screen.getByText('456')).toBeInTheDocument(); expect(screen.getByText('def')).toBeInTheDocument(); expect(screen.getByText('789')).toBeInTheDocument(); }); test('Renders name', async () => { await setup({ resourceType: 'Organization', id: '123', name: 'Test Organization', }); expect(screen.queryByText('123')).not.toBeInTheDocument(); expect(screen.getByText('Test Organization')).toBeInTheDocument(); }); test('Handles reference', async () => { await setup({ reference: 'Organization/123', }); expect(await screen.findByText('Test Organization')).toBeInTheDocument(); }); test('Handles null identifier', async () => { const id = randomUUID(); await setup({ ...baseServiceRequest, id, identifier: [null as unknown as Identifier], }); expect(screen.getByText(id)).toBeInTheDocument(); }); test('Handles missing identifier system', async () => { const id = randomUUID(); await setup({ ...baseServiceRequest, id, identifier: [{ value: 'abc' }], }); expect(screen.getByText(id)).toBeInTheDocument(); expect(screen.queryByText('abc')).not.toBeInTheDocument(); }); test('Handles missing identifier value', async () => { const id = randomUUID(); await setup({ ...baseServiceRequest, id, identifier: [{ system: 'abc' }], }); expect(screen.getByText(id)).toBeInTheDocument(); expect(screen.queryByText('abc')).not.toBeInTheDocument(); }); test('Renders code and category text', async () => { const id = randomUUID(); await setup({ ...baseServiceRequest, id, code: { text: 'TEST_CODE' }, category: [{ text: 'TEST_CATEGORY' }], }); expect(screen.getByText('TEST_CODE')).toBeInTheDocument(); expect(screen.getByText('TEST_CATEGORY')).toBeInTheDocument(); }); test('Renders code and category coding', async () => { const id = randomUUID(); await setup({ resourceType: 'ServiceRequest', id, code: { coding: [{ display: 'TEST_CODE' }] }, category: [{ text: 'TEST_CATEGORY' }], }); expect(screen.getByText('TEST_CODE')).toBeInTheDocument(); expect(screen.getByText('TEST_CATEGORY')).toBeInTheDocument(); }); test('Renders code without display', async () => { const id = randomUUID(); await setup({ resourceType: 'ServiceRequest', id, code: { coding: [{ code: 'TEST_CODE' }] }, }); expect(screen.getByText('TEST_CODE')).toBeInTheDocument(); }); test('Renders compound code', async () => { const id = randomUUID(); await setup({ resourceType: 'ServiceRequest', id, code: { coding: [{ display: 'TEST_CODE1' }, { display: 'TEST_CODE2' }] }, category: [{ text: 'TEST_CATEGORY' }], }); expect(screen.getByText('TEST_CODE1, TEST_CODE2')).toBeInTheDocument(); expect(screen.getByText('TEST_CATEGORY')).toBeInTheDocument(); }); test('Renders malformed code', async () => { const id = randomUUID(); await setup({ resourceType: 'ServiceRequest', id, code: { coding: 'not-a-coding' as unknown as Coding[] }, }); expect(screen.getByText(id)).toBeInTheDocument(); expect(screen.queryByText('not-a-coding')).not.toBeInTheDocument(); }); test('Does not render Bot code', async () => { const id = randomUUID(); await setup({ resourceType: 'Bot', id, code: 'console.log("Hello World")', }); expect(screen.getByText(id)).toBeInTheDocument(); expect(screen.queryByText('console.log("Hello World")')).toBeNull(); }); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/medplum/medplum'

If you have feedback or need assistance with the MCP directory API, please join our Discord server