import { render, screen } from '@testing-library/react';
import React from 'react';
import selectEvent from 'react-select-event';
import { Account } from './Account';
export const AccountOptions = [
{
value: '123456789',
label: 'test-account1',
description: '123456789',
},
{
value: '432156789013',
label: 'test-account2',
description: '432156789013',
},
{
value: '999999999999',
label: 'test-account3',
description: '999999999999',
},
{
label: 'Template Variables',
options: [
{
value: '$fakeVar',
label: '$fakeVar',
},
],
},
];
describe('Account', () => {
const props = {
accountOptions: AccountOptions,
region: 'us-east-2',
onChange: jest.fn(),
accountId: '123456789012',
};
it('should not render if there are no accounts', async () => {
render();
expect(screen.queryByLabelText('Account Selection')).not.toBeInTheDocument();
});
it('should render a selectable field of accounts if there are accounts', async () => {
const onChange = jest.fn();
render();
expect(screen.getByLabelText('Account Selection')).toBeInTheDocument();
await selectEvent.select(screen.getByLabelText('Account Selection'), 'test-account3', { container: document.body });
expect(onChange).toBeCalledWith('999999999999');
});
it("should default to 'all' if there is no selection", () => {
render();
expect(screen.getByLabelText('Account Selection')).toBeInTheDocument();
expect(screen.getByText('All')).toBeInTheDocument();
});
it('should select an uninterpolated template variable if it has been selected', () => {
render();
expect(screen.getByLabelText('Account Selection')).toBeInTheDocument();
expect(screen.getByText('$fakeVar')).toBeInTheDocument();
});
});