diff options
author | Eric Eastwood <contact@ericeastwood.com> | 2017-10-06 15:36:15 -0500 |
---|---|---|
committer | Eric Eastwood <contact@ericeastwood.com> | 2017-10-11 11:02:55 -0500 |
commit | 03cd536b54b148eb59cabfa735c0ec6820fc2266 (patch) | |
tree | 3a872a59747df68a14fa432699c6dceafff40de0 | |
parent | fe11c5fde7c0c748eb370f09715114fd5a7d8577 (diff) | |
download | gitlab-ce-03cd536b54b148eb59cabfa735c0ec6820fc2266.tar.gz |
Cleanup data-page attribute after each Karma test38871-cleanup-data-page-attribute-after-karma-test
Fix https://gitlab.com/gitlab-org/gitlab-ce/issues/38871
-rw-r--r-- | app/assets/javascripts/labels_select.js | 4 | ||||
-rw-r--r-- | app/assets/javascripts/lib/utils/common_utils.js | 2 | ||||
-rw-r--r-- | app/assets/javascripts/milestone_select.js | 2 | ||||
-rw-r--r-- | app/assets/javascripts/notes.js | 2 | ||||
-rw-r--r-- | app/assets/javascripts/users_select.js | 2 | ||||
-rw-r--r-- | changelogs/unreleased/38871-cleanup-data-page-attribute-after-karma-test.yml | 5 | ||||
-rw-r--r-- | spec/javascripts/awards_handler_spec.js | 5 | ||||
-rw-r--r-- | spec/javascripts/behaviors/quick_submit_spec.js | 5 | ||||
-rw-r--r-- | spec/javascripts/merge_request_notes_spec.js | 14 | ||||
-rw-r--r-- | spec/javascripts/merge_request_tabs_spec.js | 5 | ||||
-rw-r--r-- | spec/javascripts/notes_spec.js | 7 | ||||
-rw-r--r-- | spec/javascripts/search_autocomplete_spec.js | 30 |
12 files changed, 61 insertions, 22 deletions
diff --git a/app/assets/javascripts/labels_select.js b/app/assets/javascripts/labels_select.js index d479f7ed682..84602cf9207 100644 --- a/app/assets/javascripts/labels_select.js +++ b/app/assets/javascripts/labels_select.js @@ -285,7 +285,7 @@ import CreateLabelDropdown from './create_label'; }, hidden: function() { var isIssueIndex, isMRIndex, page, selectedLabels; - page = $('body').data('page'); + page = $('body').attr('data-page'); isIssueIndex = page === 'projects:issues:index'; isMRIndex = page === 'projects:merge_requests:index'; $selectbox.hide(); @@ -325,7 +325,7 @@ import CreateLabelDropdown from './create_label'; $loading.fadeOut(); }; - page = $('body').data('page'); + page = $('body').attr('data-page'); isIssueIndex = page === 'projects:issues:index'; isMRIndex = page === 'projects:merge_requests:index'; diff --git a/app/assets/javascripts/lib/utils/common_utils.js b/app/assets/javascripts/lib/utils/common_utils.js index 423a25fbdfa..9f05cf16967 100644 --- a/app/assets/javascripts/lib/utils/common_utils.js +++ b/app/assets/javascripts/lib/utils/common_utils.js @@ -1,5 +1,5 @@ -export const getPagePath = (index = 0) => $('body').data('page').split(':')[index]; +export const getPagePath = (index = 0) => $('body').attr('data-page').split(':')[index]; export const isInGroupsPage = () => getPagePath() === 'groups'; diff --git a/app/assets/javascripts/milestone_select.js b/app/assets/javascripts/milestone_select.js index 4675b1fcb8f..951d5e559b4 100644 --- a/app/assets/javascripts/milestone_select.js +++ b/app/assets/javascripts/milestone_select.js @@ -147,7 +147,7 @@ import _ from 'underscore'; const { $el, e } = options; let selected = options.selectedObj; var data, isIssueIndex, isMRIndex, isSelecting, page, boardsStore; - page = $('body').data('page'); + page = $('body').attr('data-page'); isIssueIndex = page === 'projects:issues:index'; isMRIndex = (page === page && page === 'projects:merge_requests:index'); isSelecting = (selected.name !== selectedMilestone); diff --git a/app/assets/javascripts/notes.js b/app/assets/javascripts/notes.js index cf7322ba1da..a40a6e29743 100644 --- a/app/assets/javascripts/notes.js +++ b/app/assets/javascripts/notes.js @@ -1257,7 +1257,7 @@ export default class Notes { } static checkMergeRequestStatus() { - if (getPagePath(1) === 'merge_requests') { + if (getPagePath(1) === 'merge_requests' && gl.mrWidget) { gl.mrWidget.checkStatus(); } } diff --git a/app/assets/javascripts/users_select.js b/app/assets/javascripts/users_select.js index 73676bd6de7..a0883b32593 100644 --- a/app/assets/javascripts/users_select.js +++ b/app/assets/javascripts/users_select.js @@ -424,7 +424,7 @@ function UsersSelect(currentUser, els) { } var isIssueIndex, isMRIndex, page, selected; - page = $('body').data('page'); + page = $('body').attr('data-page'); isIssueIndex = page === 'projects:issues:index'; isMRIndex = (page === page && page === 'projects:merge_requests:index'); if ($dropdown.hasClass('js-filter-bulk-update') || $dropdown.hasClass('js-issuable-form-dropdown')) { diff --git a/changelogs/unreleased/38871-cleanup-data-page-attribute-after-karma-test.yml b/changelogs/unreleased/38871-cleanup-data-page-attribute-after-karma-test.yml new file mode 100644 index 00000000000..5e142a2b4cf --- /dev/null +++ b/changelogs/unreleased/38871-cleanup-data-page-attribute-after-karma-test.yml @@ -0,0 +1,5 @@ +--- +title: Cleanup data-page attribute after each Karma test +merge_request: 14742 +author: +type: fixed diff --git a/spec/javascripts/awards_handler_spec.js b/spec/javascripts/awards_handler_spec.js index a22b71fd1dc..268b5b83b73 100644 --- a/spec/javascripts/awards_handler_spec.js +++ b/spec/javascripts/awards_handler_spec.js @@ -28,7 +28,7 @@ import '~/lib/utils/common_utils'; preloadFixtures('merge_requests/diff_comment.html.raw'); beforeEach(function(done) { loadFixtures('merge_requests/diff_comment.html.raw'); - $('body').data('page', 'projects:merge_requests:show'); + $('body').attr('data-page', 'projects:merge_requests:show'); loadAwardsHandler(true).then((obj) => { awardsHandler = obj; spyOn(awardsHandler, 'postEmoji').and.callFake((button, url, emoji, cb) => cb()); @@ -55,6 +55,9 @@ import '~/lib/utils/common_utils'; // restore original url root value gon.relative_url_root = urlRoot; + // Undo what we did to the shared <body> + $('body').removeAttr('data-page'); + awardsHandler.destroy(); }); describe('::showEmojiMenu', function() { diff --git a/spec/javascripts/behaviors/quick_submit_spec.js b/spec/javascripts/behaviors/quick_submit_spec.js index f62bf43adb9..d5300d9c63d 100644 --- a/spec/javascripts/behaviors/quick_submit_spec.js +++ b/spec/javascripts/behaviors/quick_submit_spec.js @@ -19,6 +19,11 @@ describe('Quick Submit behavior', () => { this.textarea = $('.js-quick-submit textarea').first(); }); + afterEach(() => { + // Undo what we did to the shared <body> + $('body').removeAttr('data-page'); + }); + it('does not respond to other keyCodes', () => { this.textarea.trigger(keydownEvent({ keyCode: 32, diff --git a/spec/javascripts/merge_request_notes_spec.js b/spec/javascripts/merge_request_notes_spec.js index 395dc560671..ac6ace48108 100644 --- a/spec/javascripts/merge_request_notes_spec.js +++ b/spec/javascripts/merge_request_notes_spec.js @@ -23,12 +23,17 @@ describe('Merge request notes', () => { loadFixtures(discussionTabFixture); gl.utils.disableButtonIfEmptyField = _.noop; window.project_uploads_path = 'http://test.host/uploads'; - $('body').data('page', 'projects:merge_requests:show'); + $('body').attr('data-page', 'projects:merge_requests:show'); window.gon.current_user_id = $('.note:last').data('author-id'); return new Notes('', []); }); + afterEach(() => { + // Undo what we did to the shared <body> + $('body').removeAttr('data-page'); + }); + describe('up arrow', () => { it('edits last comment when triggered in main form', () => { const upArrowEvent = $.Event('keydown'); @@ -71,12 +76,17 @@ describe('Merge request notes', () => { <textarea class="js-note-text"></textarea> </form>`; setFixtures(diffsResponse.html + noteFormHtml); - $('body').data('page', 'projects:merge_requests:show'); + $('body').attr('data-page', 'projects:merge_requests:show'); window.gon.current_user_id = $('.note:last').data('author-id'); return new Notes('', []); }); + afterEach(() => { + // Undo what we did to the shared <body> + $('body').removeAttr('data-page'); + }); + describe('up arrow', () => { it('edits last comment in discussion when triggered in discussion form', (done) => { const upArrowEvent = $.Event('keydown'); diff --git a/spec/javascripts/merge_request_tabs_spec.js b/spec/javascripts/merge_request_tabs_spec.js index ccdbfcba692..18916c5aa97 100644 --- a/spec/javascripts/merge_request_tabs_spec.js +++ b/spec/javascripts/merge_request_tabs_spec.js @@ -277,7 +277,7 @@ import 'vendor/jquery.scrollTo'; describe('loadDiff', function () { beforeEach(() => { loadFixtures('merge_requests/diff_comment.html.raw'); - spyOn(window.gl.utils, 'getPagePath').and.returnValue('merge_requests'); + $('body').attr('data-page', 'projects:merge_requests:show'); window.gl.ImageFile = () => {}; window.notes = new Notes('', []); spyOn(window.notes, 'toggleDiffNote').and.callThrough(); @@ -286,6 +286,9 @@ import 'vendor/jquery.scrollTo'; afterEach(() => { delete window.gl.ImageFile; delete window.notes; + + // Undo what we did to the shared <body> + $('body').removeAttr('data-page'); }); it('requires an absolute pathname', function () { diff --git a/spec/javascripts/notes_spec.js b/spec/javascripts/notes_spec.js index 65d2e8fd9fb..34a49bee3f5 100644 --- a/spec/javascripts/notes_spec.js +++ b/spec/javascripts/notes_spec.js @@ -39,7 +39,12 @@ import '~/notes'; loadFixtures(commentsTemplate); gl.utils.disableButtonIfEmptyField = _.noop; window.project_uploads_path = 'http://test.host/uploads'; - $('body').data('page', 'projects:merge_requets:show'); + $('body').attr('data-page', 'projects:merge_requets:show'); + }); + + afterEach(() => { + // Undo what we did to the shared <body> + $('body').removeAttr('data-page'); }); describe('task lists', function() { diff --git a/spec/javascripts/search_autocomplete_spec.js b/spec/javascripts/search_autocomplete_spec.js index a53f58b5d0d..cf811af3d6c 100644 --- a/spec/javascripts/search_autocomplete_spec.js +++ b/spec/javascripts/search_autocomplete_spec.js @@ -6,7 +6,7 @@ import '~/lib/utils/common_utils'; import 'vendor/fuzzaldrin-plus'; (function() { - var addBodyAttributes, assertLinks, dashboardIssuesPath, dashboardMRsPath, groupIssuesPath, groupMRsPath, groupName, mockDashboardOptions, mockGroupOptions, mockProjectOptions, projectIssuesPath, projectMRsPath, projectName, userId, widget; + var assertLinks, dashboardIssuesPath, dashboardMRsPath, groupIssuesPath, groupMRsPath, groupName, mockDashboardOptions, mockGroupOptions, mockProjectOptions, projectIssuesPath, projectMRsPath, projectName, userId, widget; var userName = 'root'; widget = null; @@ -29,25 +29,31 @@ import 'vendor/fuzzaldrin-plus'; groupName = 'Gitlab Org'; + const removeBodyAttributes = function() { + const $body = $('body'); + + $body.removeAttr('data-page'); + $body.removeAttr('data-project'); + $body.removeAttr('data-group'); + }; + // Add required attributes to body before starting the test. // section would be dashboard|group|project - addBodyAttributes = function(section) { - var $body; + const addBodyAttributes = function(section) { if (section == null) { section = 'dashboard'; } - $body = $('body'); - $body.removeAttr('data-page'); - $body.removeAttr('data-project'); - $body.removeAttr('data-group'); + + const $body = $('body'); + removeBodyAttributes(); switch (section) { case 'dashboard': - return $body.data('page', 'root:index'); + return $body.attr('data-page', 'root:index'); case 'group': - $body.data('page', 'groups:show'); + $body.attr('data-page', 'groups:show'); return $body.data('group', 'gitlab-org'); case 'project': - $body.data('page', 'projects:show'); + $body.attr('data-page', 'projects:show'); return $body.data('project', 'gitlab-ce'); } }; @@ -108,7 +114,7 @@ import 'vendor/fuzzaldrin-plus'; preloadFixtures('static/search_autocomplete.html.raw'); beforeEach(function() { loadFixtures('static/search_autocomplete.html.raw'); - widget = new gl.SearchAutocomplete; + // Prevent turbolinks from triggering within gl_dropdown spyOn(window.gl.utils, 'visitUrl').and.returnValue(true); @@ -120,6 +126,8 @@ import 'vendor/fuzzaldrin-plus'; }); afterEach(function() { + // Undo what we did to the shared <body> + removeBodyAttributes(); window.gon = {}; }); it('should show Dashboard specific dropdown menu', function() { |