summaryrefslogtreecommitdiff
path: root/spec/frontend/merge_request_tabs_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/merge_request_tabs_spec.js')
-rw-r--r--spec/frontend/merge_request_tabs_spec.js70
1 files changed, 70 insertions, 0 deletions
diff --git a/spec/frontend/merge_request_tabs_spec.js b/spec/frontend/merge_request_tabs_spec.js
index 69ff5e47689..6d434d7e654 100644
--- a/spec/frontend/merge_request_tabs_spec.js
+++ b/spec/frontend/merge_request_tabs_spec.js
@@ -5,6 +5,7 @@ import initMrPage from 'helpers/init_vue_mr_page_helper';
import { stubPerformanceWebAPI } from 'helpers/performance';
import axios from '~/lib/utils/axios_utils';
import MergeRequestTabs from '~/merge_request_tabs';
+import Diff from '~/diff';
import '~/lib/utils/common_utils';
import '~/lib/utils/url_utility';
@@ -389,4 +390,73 @@ describe('MergeRequestTabs', () => {
});
});
});
+
+ describe('tabs <-> diff interactions', () => {
+ beforeEach(() => {
+ jest.spyOn(testContext.class, 'loadDiff').mockImplementation(() => {});
+ });
+
+ describe('switchViewType', () => {
+ it('marks the class as having not loaded diffs already', () => {
+ testContext.class.diffsLoaded = true;
+
+ testContext.class.switchViewType({});
+
+ expect(testContext.class.diffsLoaded).toBe(false);
+ });
+
+ it('reloads the diffs', () => {
+ testContext.class.switchViewType({ source: 'a new url' });
+
+ expect(testContext.class.loadDiff).toHaveBeenCalledWith({
+ endpoint: 'a new url',
+ strip: false,
+ });
+ });
+ });
+
+ describe('createDiff', () => {
+ it("creates a Diff if there isn't one", () => {
+ expect(testContext.class.diffsClass).toBe(null);
+
+ testContext.class.createDiff();
+
+ expect(testContext.class.diffsClass).toBeInstanceOf(Diff);
+ });
+
+ it("doesn't create a Diff if one already exists", () => {
+ testContext.class.diffsClass = 'truthy';
+
+ testContext.class.createDiff();
+
+ expect(testContext.class.diffsClass).toBe('truthy');
+ });
+
+ it('sets the available MR Tabs event hub to the new Diff', () => {
+ expect(testContext.class.diffsClass).toBe(null);
+
+ testContext.class.createDiff();
+
+ expect(testContext.class.diffsClass.mrHub).toBe(testContext.class.eventHub);
+ });
+ });
+
+ describe('setHubToDiff', () => {
+ it('sets the MR Tabs event hub to the child Diff', () => {
+ testContext.class.diffsClass = {};
+
+ testContext.class.setHubToDiff();
+
+ expect(testContext.class.diffsClass.mrHub).toBe(testContext.class.eventHub);
+ });
+
+ it('does not fatal if theres no child Diff', () => {
+ testContext.class.diffsClass = null;
+
+ expect(() => {
+ testContext.class.setHubToDiff();
+ }).not.toThrow();
+ });
+ });
+ });
});