95 lines
3.1 KiB
JavaScript
95 lines
3.1 KiB
JavaScript
import Vuex from 'vuex';
|
|
import { shallowMount, createLocalVue } from '@vue/test-utils';
|
|
import { GlSprintf, GlLink } from '@gitlab/ui';
|
|
import { registryUrl as composerHelpPath } from 'jest/packages/details/mock_data';
|
|
import { composerPackage as packageEntity } from 'jest/packages/mock_data';
|
|
import ComposerInstallation from '~/packages/details/components/composer_installation.vue';
|
|
import CodeInstructions from '~/packages/details/components/code_instruction.vue';
|
|
import { TrackingActions } from '~/packages/details/constants';
|
|
|
|
const localVue = createLocalVue();
|
|
localVue.use(Vuex);
|
|
|
|
describe('ComposerInstallation', () => {
|
|
let wrapper;
|
|
|
|
const composerRegistryIncludeStr = 'foo/registry';
|
|
const composerPackageIncludeStr = 'foo/package';
|
|
|
|
const store = new Vuex.Store({
|
|
state: {
|
|
packageEntity,
|
|
composerHelpPath,
|
|
},
|
|
getters: {
|
|
composerRegistryInclude: () => composerRegistryIncludeStr,
|
|
composerPackageInclude: () => composerPackageIncludeStr,
|
|
},
|
|
});
|
|
|
|
const findCodeInstructions = () => wrapper.findAll(CodeInstructions);
|
|
const findRegistryIncludeTitle = () => wrapper.find('[data-testid="registry-include-title"]');
|
|
const findPackageIncludeTitle = () => wrapper.find('[data-testid="package-include-title"]');
|
|
const findHelpText = () => wrapper.find('[data-testid="help-text"]');
|
|
const findHelpLink = () => wrapper.find(GlLink);
|
|
|
|
function createComponent() {
|
|
wrapper = shallowMount(ComposerInstallation, {
|
|
localVue,
|
|
store,
|
|
stubs: {
|
|
GlSprintf,
|
|
},
|
|
});
|
|
}
|
|
|
|
beforeEach(() => {
|
|
createComponent();
|
|
});
|
|
|
|
afterEach(() => {
|
|
wrapper.destroy();
|
|
});
|
|
|
|
describe('registry include command', () => {
|
|
it('uses code_instructions', () => {
|
|
const registryIncludeCommand = findCodeInstructions().at(0);
|
|
expect(registryIncludeCommand.exists()).toBe(true);
|
|
expect(registryIncludeCommand.props()).toMatchObject({
|
|
instruction: composerRegistryIncludeStr,
|
|
copyText: 'Copy registry include',
|
|
trackingAction: TrackingActions.COPY_COMPOSER_REGISTRY_INCLUDE_COMMAND,
|
|
});
|
|
});
|
|
|
|
it('has the correct title', () => {
|
|
expect(findRegistryIncludeTitle().text()).toBe('composer.json registry include');
|
|
});
|
|
});
|
|
|
|
describe('package include command', () => {
|
|
it('uses code_instructions', () => {
|
|
const registryIncludeCommand = findCodeInstructions().at(1);
|
|
expect(registryIncludeCommand.exists()).toBe(true);
|
|
expect(registryIncludeCommand.props()).toMatchObject({
|
|
instruction: composerPackageIncludeStr,
|
|
copyText: 'Copy require package include',
|
|
trackingAction: TrackingActions.COPY_COMPOSER_PACKAGE_INCLUDE_COMMAND,
|
|
});
|
|
});
|
|
|
|
it('has the correct title', () => {
|
|
expect(findPackageIncludeTitle().text()).toBe('composer.json require package include');
|
|
});
|
|
|
|
it('has the correct help text', () => {
|
|
expect(findHelpText().text()).toBe(
|
|
'For more information on Composer packages in GitLab, see the documentation.',
|
|
);
|
|
expect(findHelpLink().attributes()).toMatchObject({
|
|
href: composerHelpPath,
|
|
target: '_blank',
|
|
});
|
|
});
|
|
});
|
|
});
|