import { mock } from 'angular';
import { render, shallow } from 'enzyme';
import React from 'react';
import type { Application } from '@spinnaker/core';
import { ApplicationModelBuilder } from '@spinnaker/core';
import { mockServerGroupDataSourceConfig, mockSubnet } from '@spinnaker/mocks';
import { SubnetSelectInput } from './SubnetSelectInput';
describe('SubnetSelectInput', () => {
let application: Application;
beforeEach(
mock.inject(() => {
application = ApplicationModelBuilder.createApplicationForTests('testapp', mockServerGroupDataSourceConfig);
}),
);
// Selectable state
const INPUT_PROPS = {
value: 'test',
onChange: () => {},
application,
readOnly: false,
hideClassic: false,
subnets: [mockSubnet],
region: 'us-east-1',
credentials: 'test_credentials',
};
it('should render an input', () => {
const wrapper = shallow();
const input = wrapper.find('SelectInput');
const paragraph = wrapper.find('p');
expect(input.length).toBeTruthy();
expect(paragraph.length).toBeFalsy();
});
it('should generate options', () => {
const wrapper = render();
expect(wrapper.find('option').length).toBeGreaterThan(0);
});
});
describe('SubnetSelectInput read only', () => {
let application: Application;
beforeEach(
mock.inject(() => {
application = ApplicationModelBuilder.createApplicationForTests('testapp', mockServerGroupDataSourceConfig);
}),
);
// Read only state, with value
const READ_ONLY_PROPS = {
value: 'test',
onChange: () => {},
application,
readOnly: true,
hideClassic: false,
subnets: [mockSubnet],
region: 'us-east-1',
credentials: 'test_credentials',
};
// Read only state with null value
const NULL_VALUE_PROPS = {
...READ_ONLY_PROPS,
value: '',
};
it('should render the value', () => {
const wrapper = shallow();
const input = wrapper.find('SelectInput');
const paragraph = wrapper.find('p');
expect(input.length).toBeFalsy();
expect(paragraph.length).toBeTruthy();
expect(paragraph.text()).toEqual(READ_ONLY_PROPS.value);
});
it('should render the default value', () => {
const wrapper = shallow();
const input = wrapper.find('SelectInput');
const paragraph = wrapper.find('p');
expect(input.length).toBeFalsy();
expect(paragraph.length).toBeTruthy();
expect(paragraph.text()).toEqual('None (EC2 Classic)');
});
});