summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Slaughter <pslaughter@gitlab.com>2018-09-11 15:47:58 -0500
committerPaul Slaughter <pslaughter@gitlab.com>2018-09-11 16:12:59 -0500
commit38418f44f1c33880b1979ec40e3aaa5f45a93348 (patch)
treec911f765150aae7624c75c9c8b8396e63dce110b
parent544d46ba0bea5afb6dfb50e28096bcc77698c0cf (diff)
downloadgitlab-ce-stash-spec-helpers-mock-vuex-module.tar.gz
Create specs for comments messages in diffs/appstash-spec-helpers-mock-vuex-module
- 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
-rw-r--r--app/assets/javascripts/diffs/store/modules/diff_state.js2
-rw-r--r--spec/javascripts/diffs/components/app_spec.js77
-rw-r--r--spec/javascripts/diffs/create_mock_store.js16
3 files changed, 94 insertions, 1 deletions
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,
+ },
+ }));
+}