Skip to main content
Glama
AddressInput.test.tsx2.99 kB
// SPDX-FileCopyrightText: Copyright Orangebot, Inc. and Medplum contributors // SPDX-License-Identifier: Apache-2.0 import type { Address } from '@medplum/fhirtypes'; import type { ComplexTypeInputProps } from '../ResourcePropertyInput/ResourcePropertyInput.utils'; import { act, fireEvent, render, screen } from '../test-utils/render'; import { AddressInput } from './AddressInput'; const defaultProps: ComplexTypeInputProps<Address> = { name: 'a', path: 'Resource.address', onChange: undefined, outcome: undefined, }; describe('AddressInput', () => { test('Renders', () => { render(<AddressInput {...defaultProps} defaultValue={{ line: ['123 main st'], city: 'Happy' }} />); expect(screen.getByDisplayValue('123 main st')).toBeDefined(); expect(screen.getByDisplayValue('Happy')).toBeDefined(); }); test('Renders undefined value', () => { render(<AddressInput {...defaultProps} />); expect(screen.queryByDisplayValue('123 main st')).toBeNull(); }); test('Set value', async () => { let lastValue: Address | undefined = undefined; render(<AddressInput {...defaultProps} onChange={(value) => (lastValue = value)} />); await act(async () => { fireEvent.change(screen.getByTestId('address-use'), { target: { value: 'home' }, }); }); await act(async () => { fireEvent.change(screen.getByTestId('address-type'), { target: { value: 'both' }, }); }); await act(async () => { fireEvent.change(screen.getByPlaceholderText('Line 1'), { target: { value: '742 Evergreen Terrace' }, }); }); await act(async () => { fireEvent.change(screen.getByPlaceholderText('Line 2'), { target: { value: 'Attn: Homer' }, }); }); await act(async () => { fireEvent.change(screen.getByPlaceholderText('City'), { target: { value: 'Springfield' }, }); }); await act(async () => { fireEvent.change(screen.getByPlaceholderText('State'), { target: { value: 'OR' }, }); }); await act(async () => { fireEvent.change(screen.getByPlaceholderText('Postal Code'), { target: { value: '97403' }, }); }); expect(lastValue).toBeDefined(); expect(lastValue).toMatchObject({ use: 'home', type: 'both', line: ['742 Evergreen Terrace', 'Attn: Homer'], city: 'Springfield', state: 'OR', postalCode: '97403', }); }); test('Remove 2nd line', async () => { let lastValue: Address | undefined = undefined; render( <AddressInput {...defaultProps} defaultValue={{ line: ['line 1', 'line 2'] }} onChange={(value) => (lastValue = value)} /> ); await act(async () => { fireEvent.change(screen.getByPlaceholderText('Line 2'), { target: { value: '' }, }); }); expect(lastValue).toBeDefined(); expect(lastValue).toMatchObject({ line: ['line 1'] }); }); });

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