@navinc/base-react-components
Version:
Nav's Pattern Library
85 lines • 4.3 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { jsx as _jsx } from "react/jsx-runtime";
import { describe, expect, it, vi } from 'vitest';
import { renderWithContext } from '../tests/with-app-context.js';
import { screen, fireEvent, waitFor, createEvent } from '@testing-library/react';
import * as loadPlacesAutocompletePkg from '../load-places-autocomplete.js';
import { AddressInput } from './address-input.js';
describe('Base Components: address-input', () => {
describe('<AddressInput />', () => {
it('calls preventDefault if the enter key is pressed', () => {
const addListener = vi.fn();
vi.spyOn(loadPlacesAutocompletePkg, 'loadPlacesAutocomplete').mockResolvedValue(vi.fn(() => ({ addListener })));
renderWithContext(_jsx(AddressInput, {}));
const input = screen.getByPlaceholderText('Enter a location');
const keyDownEvent = createEvent.keyDown(input, {
key: 'Enter',
code: 'Enter',
charCode: 13,
keyCode: 13,
});
fireEvent(input, keyDownEvent);
expect(keyDownEvent.defaultPrevented).toBe(true);
});
it('calls the onAddressSelected prop with an address object', () => __awaiter(void 0, void 0, void 0, function* () {
const addListener = vi.fn();
const getPlace = vi.fn(() => ({
address_components: [
{
types: ['street_number'],
long_name: 'street_number longName',
short_name: 'street_number shortName',
},
{
types: ['route'],
long_name: 'route longName',
short_name: 'route shortName',
},
{
types: ['locality'],
long_name: 'locality longName',
short_name: 'locality shortName',
},
{
types: ['administrative_area_level_1'],
long_name: 'administrative_area_level_1 longName',
short_name: 'administrative_area_level_1 shortName',
},
{
types: ['postal_code'],
long_name: 'postal_code longName',
short_name: 'postal_code shortName',
},
{
types: ['country'],
long_name: 'country longName',
short_name: 'country shortName',
},
],
}));
vi.spyOn(loadPlacesAutocompletePkg, 'loadPlacesAutocomplete').mockResolvedValue(vi.fn(() => ({ addListener, getPlace })));
const onAddressSelected = vi.fn();
renderWithContext(_jsx(AddressInput, { onAddressSelected: onAddressSelected }));
yield waitFor(() => expect(addListener).toHaveBeenCalled());
addListener.mock.calls[0][1]();
const expected = {
city: 'locality longName',
state: 'administrative_area_level_1 shortName',
street1: 'street_number shortName route longName',
zip: 'postal_code shortName',
country: 'country longName',
};
expect(getPlace).toHaveBeenCalled();
expect(onAddressSelected).toHaveBeenCalledWith(expected);
}));
});
});
//# sourceMappingURL=address-input.spec.js.map