80 lines
2.5 KiB
JavaScript
80 lines
2.5 KiB
JavaScript
import { GlLink, GlSprintf } from '@gitlab/ui';
|
|
import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
|
|
import InitCommandModal from '~/terraform/components/init_command_modal.vue';
|
|
import ModalCopyButton from '~/vue_shared/components/modal_copy_button.vue';
|
|
|
|
const accessTokensPath = '/path/to/access-tokens-page';
|
|
const terraformApiUrl = 'https://gitlab.com/api/v4/projects/1';
|
|
const username = 'username';
|
|
const modalId = 'fake-modal-id';
|
|
const stateName = 'production';
|
|
const modalInfoCopyStr = `export GITLAB_ACCESS_TOKEN=<YOUR-ACCESS-TOKEN>
|
|
terraform init \\
|
|
-backend-config="address=${terraformApiUrl}/${stateName}" \\
|
|
-backend-config="lock_address=${terraformApiUrl}/${stateName}/lock" \\
|
|
-backend-config="unlock_address=${terraformApiUrl}/${stateName}/lock" \\
|
|
-backend-config="username=${username}" \\
|
|
-backend-config="password=$GITLAB_ACCESS_TOKEN" \\
|
|
-backend-config="lock_method=POST" \\
|
|
-backend-config="unlock_method=DELETE" \\
|
|
-backend-config="retry_wait_min=5"
|
|
`;
|
|
|
|
describe('InitCommandModal', () => {
|
|
let wrapper;
|
|
|
|
const propsData = {
|
|
modalId,
|
|
stateName,
|
|
};
|
|
const provideData = {
|
|
accessTokensPath,
|
|
terraformApiUrl,
|
|
username,
|
|
};
|
|
|
|
const findExplanatoryText = () => wrapper.findByTestId('init-command-explanatory-text');
|
|
const findLink = () => wrapper.findComponent(GlLink);
|
|
const findInitCommand = () => wrapper.findByTestId('terraform-init-command');
|
|
const findCopyButton = () => wrapper.findComponent(ModalCopyButton);
|
|
|
|
beforeEach(() => {
|
|
wrapper = shallowMountExtended(InitCommandModal, {
|
|
propsData,
|
|
provide: provideData,
|
|
stubs: {
|
|
GlSprintf,
|
|
},
|
|
});
|
|
});
|
|
|
|
afterEach(() => {
|
|
wrapper.destroy();
|
|
});
|
|
|
|
describe('on rendering', () => {
|
|
it('renders the explanatory text', () => {
|
|
expect(findExplanatoryText().text()).toContain('personal access token');
|
|
});
|
|
|
|
it('renders the personal access token link', () => {
|
|
expect(findLink().attributes('href')).toBe(accessTokensPath);
|
|
});
|
|
|
|
it('renders the init command with the username and state name prepopulated', () => {
|
|
expect(findInitCommand().text()).toContain(username);
|
|
expect(findInitCommand().text()).toContain(stateName);
|
|
});
|
|
|
|
it('renders the copyToClipboard button', () => {
|
|
expect(findCopyButton().exists()).toBe(true);
|
|
});
|
|
});
|
|
|
|
describe('when copy button is clicked', () => {
|
|
it('copies init command to clipboard', () => {
|
|
expect(findCopyButton().props('text')).toBe(modalInfoCopyStr);
|
|
});
|
|
});
|
|
});
|