134 lines
3 KiB
JavaScript
134 lines
3 KiB
JavaScript
import Vue from 'vue';
|
|
import { createComponentWithStore } from 'helpers/vue_mount_component_helper';
|
|
import radioGroup from '~/ide/components/commit_sidebar/radio_group.vue';
|
|
import { createStore } from '~/ide/stores';
|
|
|
|
describe('IDE commit sidebar radio group', () => {
|
|
let vm;
|
|
let store;
|
|
|
|
beforeEach((done) => {
|
|
store = createStore();
|
|
|
|
const Component = Vue.extend(radioGroup);
|
|
|
|
store.state.commit.commitAction = '2';
|
|
|
|
vm = createComponentWithStore(Component, store, {
|
|
value: '1',
|
|
label: 'test',
|
|
checked: true,
|
|
});
|
|
|
|
vm.$mount();
|
|
|
|
Vue.nextTick(done);
|
|
});
|
|
|
|
afterEach(() => {
|
|
vm.$destroy();
|
|
});
|
|
|
|
it('uses label if present', () => {
|
|
expect(vm.$el.textContent).toContain('test');
|
|
});
|
|
|
|
it('uses slot if label is not present', (done) => {
|
|
vm.$destroy();
|
|
|
|
vm = new Vue({
|
|
components: {
|
|
radioGroup,
|
|
},
|
|
store,
|
|
render: (createElement) =>
|
|
createElement('radio-group', { props: { value: '1' } }, 'Testing slot'),
|
|
});
|
|
|
|
vm.$mount();
|
|
|
|
Vue.nextTick(() => {
|
|
expect(vm.$el.textContent).toContain('Testing slot');
|
|
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('updates store when changing radio button', (done) => {
|
|
vm.$el.querySelector('input').dispatchEvent(new Event('change'));
|
|
|
|
Vue.nextTick(() => {
|
|
expect(store.state.commit.commitAction).toBe('1');
|
|
|
|
done();
|
|
});
|
|
});
|
|
|
|
describe('with input', () => {
|
|
beforeEach((done) => {
|
|
vm.$destroy();
|
|
|
|
const Component = Vue.extend(radioGroup);
|
|
|
|
store.state.commit.commitAction = '1';
|
|
store.state.commit.newBranchName = 'test-123';
|
|
|
|
vm = createComponentWithStore(Component, store, {
|
|
value: '1',
|
|
label: 'test',
|
|
checked: true,
|
|
showInput: true,
|
|
});
|
|
|
|
vm.$mount();
|
|
|
|
Vue.nextTick(done);
|
|
});
|
|
|
|
it('renders input box when commitAction matches value', () => {
|
|
expect(vm.$el.querySelector('.form-control')).not.toBeNull();
|
|
});
|
|
|
|
it('hides input when commitAction doesnt match value', (done) => {
|
|
store.state.commit.commitAction = '2';
|
|
|
|
Vue.nextTick(() => {
|
|
expect(vm.$el.querySelector('.form-control')).toBeNull();
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('updates branch name in store on input', (done) => {
|
|
const input = vm.$el.querySelector('.form-control');
|
|
input.value = 'testing-123';
|
|
input.dispatchEvent(new Event('input'));
|
|
|
|
Vue.nextTick(() => {
|
|
expect(store.state.commit.newBranchName).toBe('testing-123');
|
|
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('renders newBranchName if present', () => {
|
|
const input = vm.$el.querySelector('.form-control');
|
|
|
|
expect(input.value).toBe('test-123');
|
|
});
|
|
});
|
|
|
|
describe('tooltipTitle', () => {
|
|
it('returns title when disabled', () => {
|
|
vm.title = 'test title';
|
|
vm.disabled = true;
|
|
|
|
expect(vm.tooltipTitle).toBe('test title');
|
|
});
|
|
|
|
it('returns blank when not disabled', () => {
|
|
vm.title = 'test title';
|
|
|
|
expect(vm.tooltipTitle).not.toBe('test title');
|
|
});
|
|
});
|
|
});
|