98 lines
2.5 KiB
JavaScript
98 lines
2.5 KiB
JavaScript
import Vuex from 'vuex';
|
|
import { shallowMount, createLocalVue } from '@vue/test-utils';
|
|
import { TEST_HOST } from 'spec/test_constants';
|
|
import App from '~/diffs/components/app.vue';
|
|
import NoChanges from '~/diffs/components/no_changes.vue';
|
|
import DiffFile from '~/diffs/components/diff_file.vue';
|
|
import createDiffsStore from '../create_diffs_store';
|
|
|
|
describe('diffs/components/app', () => {
|
|
const oldMrTabs = window.mrTabs;
|
|
let store;
|
|
let vm;
|
|
|
|
function createComponent(props = {}, extendStore = () => {}) {
|
|
const localVue = createLocalVue();
|
|
|
|
localVue.use(Vuex);
|
|
|
|
store = createDiffsStore();
|
|
store.state.diffs.isLoading = false;
|
|
|
|
extendStore(store);
|
|
|
|
vm = shallowMount(localVue.extend(App), {
|
|
localVue,
|
|
propsData: {
|
|
endpoint: `${TEST_HOST}/diff/endpoint`,
|
|
projectPath: 'namespace/project',
|
|
currentUser: {},
|
|
changesEmptyStateIllustration: '',
|
|
...props,
|
|
},
|
|
store,
|
|
});
|
|
}
|
|
|
|
beforeEach(() => {
|
|
// setup globals (needed for component to mount :/)
|
|
window.mrTabs = jasmine.createSpyObj('mrTabs', ['resetViewContainer']);
|
|
window.mrTabs.expandViewContainer = jasmine.createSpy();
|
|
window.location.hash = 'ABC_123';
|
|
});
|
|
|
|
afterEach(() => {
|
|
// reset globals
|
|
window.mrTabs = oldMrTabs;
|
|
|
|
// reset component
|
|
vm.destroy();
|
|
});
|
|
|
|
it('does not show commit info', () => {
|
|
createComponent();
|
|
|
|
expect(vm.contains('.blob-commit-info')).toBe(false);
|
|
});
|
|
|
|
it('sets highlighted row if hash exists in location object', done => {
|
|
createComponent({
|
|
shouldShow: true,
|
|
});
|
|
|
|
// Component uses $nextTick so we wait until that has finished
|
|
setTimeout(() => {
|
|
expect(store.state.diffs.highlightedRow).toBe('ABC_123');
|
|
|
|
done();
|
|
});
|
|
});
|
|
|
|
describe('empty state', () => {
|
|
it('renders empty state when no diff files exist', () => {
|
|
createComponent();
|
|
|
|
expect(vm.contains(NoChanges)).toBe(true);
|
|
});
|
|
|
|
it('does not render empty state when diff files exist', () => {
|
|
createComponent({}, () => {
|
|
store.state.diffs.diffFiles.push({
|
|
id: 1,
|
|
});
|
|
});
|
|
|
|
expect(vm.contains(NoChanges)).toBe(false);
|
|
expect(vm.findAll(DiffFile).length).toBe(1);
|
|
});
|
|
|
|
it('does not render empty state when versions match', () => {
|
|
createComponent({}, () => {
|
|
store.state.diffs.startVersion = { version_index: 1 };
|
|
store.state.diffs.mergeRequestDiff = { version_index: 1 };
|
|
});
|
|
|
|
expect(vm.contains(NoChanges)).toBe(false);
|
|
});
|
|
});
|
|
});
|