From 38418f44f1c33880b1979ec40e3aaa5f45a93348 Mon Sep 17 00:00:00 2001 From: Paul Slaughter Date: Tue, 11 Sep 2018 15:47:58 -0500 Subject: Create specs for comments messages in diffs/app - This component was missing unit tests https://gitlab.com/gitlab-org/gitlab-ce/issues/48034 - The comments message behavior will be updated to resolve https://gitlab.com/gitlab-org/gitlab-ce/issues/49329 --- .../javascripts/diffs/store/modules/diff_state.js | 2 + spec/javascripts/diffs/components/app_spec.js | 77 +++++++++++++++++++++- spec/javascripts/diffs/create_mock_store.js | 16 +++++ 3 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 spec/javascripts/diffs/create_mock_store.js diff --git a/app/assets/javascripts/diffs/store/modules/diff_state.js b/app/assets/javascripts/diffs/store/modules/diff_state.js index 39d90a64aab..eb596b251c1 100644 --- a/app/assets/javascripts/diffs/store/modules/diff_state.js +++ b/app/assets/javascripts/diffs/store/modules/diff_state.js @@ -11,8 +11,10 @@ export default () => ({ endpoint: '', basePath: '', commit: null, + startVersion: null, diffFiles: [], mergeRequestDiffs: [], + mergeRequestDiff: null, diffLineCommentForms: {}, diffViewType: viewTypeFromQueryString || viewTypeFromCookie || defaultViewType, }); diff --git a/spec/javascripts/diffs/components/app_spec.js b/spec/javascripts/diffs/components/app_spec.js index 7237274eb43..0757e926666 100644 --- a/spec/javascripts/diffs/components/app_spec.js +++ b/spec/javascripts/diffs/components/app_spec.js @@ -1 +1,76 @@ -// TODO: https://gitlab.com/gitlab-org/gitlab-ce/issues/48034 +import Vue from 'vue'; +import App from '~/diffs/components/app.vue'; +import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper'; +import { TEST_HOST } from 'spec/test_constants'; +import createMockStore from '../create_mock_store'; + +const TEST_ENDPOINT = `${TEST_HOST}/diff/endpoint`; +const TEST_PROJECT_PATH = 'namespace/project'; + +describe('diffs App', () => { + const Component = Vue.extend(App); + const oldMrTabs = window.mrTabs; + + let vm; + + beforeEach(() => { + // --- setup globals --- + window.mrTabs = jasmine.createSpyObj('mrTabs', ['resetViewContainer']); + + // --- setup component --- + const store = createMockStore(); + store.state.diffs.isLoading = false; + + vm = mountComponentWithStore(Component, { + store, + props: { + endpoint: TEST_ENDPOINT, + projectPath: TEST_PROJECT_PATH, + currentUser: {}, + }, + }); + }); + + afterEach(() => { + // --- reset globals --- + window.mrTabs = oldMrTabs; + + // --- reset component --- + vm.$destroy(); + }); + + it('shows comments message, with commit', done => { + vm.$store.state.diffs.commit = {}; + + vm.$nextTick() + .then(() => { + expect(vm.$el).toContainText('Only comments from the following commit are shown below'); + }) + .then(done) + .catch(done.fail); + }); + + it('shows comments message, with old mergeRequestDiff', done => { + vm.$store.state.diffs.mergeRequestDiff = { + latest: false, + }; + + vm.$nextTick() + .then(() => { + expect(vm.$el).toContainText("Not all comments are displayed because you're viewing an old version of the diff."); + }) + .then(done) + .catch(done.fail); + }); + + it('shows comments message, with startVersion', done => { + vm.$store.state.diffs.startVersion = 'test'; + + vm.$nextTick() + .then(() => { + expect(vm.$el).toContainText("Not all comments are displayed because you're comparing two versions of the diff."); + }) + .then(done) + .catch(done.fail); + }); +}); diff --git a/spec/javascripts/diffs/create_mock_store.js b/spec/javascripts/diffs/create_mock_store.js new file mode 100644 index 00000000000..5333ea38931 --- /dev/null +++ b/spec/javascripts/diffs/create_mock_store.js @@ -0,0 +1,16 @@ +import Vue from 'vue'; +import Vuex from 'vuex'; +import diffsModule from '~/diffs/store/modules'; +import notesModule from '~/notes/stores/modules'; +import mockVuexModule from 'spec/helpers/mock_vuex_module'; + +Vue.use(Vuex); + +export default function createDiffsStore() { + return new Vuex.Store(mockVuexModule({ + modules: { + diffs: diffsModule, + notes: notesModule, + }, + })); +} -- cgit v1.2.1