diff options
Diffstat (limited to 'spec')
-rw-r--r-- | spec/features/merge_request/batch_comments_spec.rb | 10 | ||||
-rw-r--r-- | spec/features/projects/settings/repository_settings_spec.rb | 4 | ||||
-rw-r--r-- | spec/frontend/batch_comments/components/review_bar_spec.js | 51 | ||||
-rw-r--r-- | spec/frontend/blob/blob_blame_link_spec.js | 47 | ||||
-rw-r--r-- | spec/frontend/blob/blob_links_tracking_spec.js | 4 | ||||
-rw-r--r-- | spec/helpers/events_helper_spec.rb | 19 | ||||
-rw-r--r-- | spec/views/events/event/_common.html.haml_spec.rb | 39 |
7 files changed, 119 insertions, 55 deletions
diff --git a/spec/features/merge_request/batch_comments_spec.rb b/spec/features/merge_request/batch_comments_spec.rb index f892b01e624..fafaea8ac68 100644 --- a/spec/features/merge_request/batch_comments_spec.rb +++ b/spec/features/merge_request/batch_comments_spec.rb @@ -101,7 +101,7 @@ RSpec.describe 'Merge request > Batch comments', :js do write_diff_comment - visit_overview_with_pending_comment + visit_overview end it 'can add comment to review' do @@ -232,14 +232,6 @@ RSpec.describe 'Merge request > Batch comments', :js do wait_for_requests end - def visit_overview_with_pending_comment - accept_alert do - visit project_merge_request_path(merge_request.project, merge_request) - end - - wait_for_requests - end - def write_diff_comment(**params) click_diff_line(find_by_scrolling("[id='#{sample_compare.changes[0][:line_code]}']")) diff --git a/spec/features/projects/settings/repository_settings_spec.rb b/spec/features/projects/settings/repository_settings_spec.rb index ddfed73e2ca..63e0ee4a251 100644 --- a/spec/features/projects/settings/repository_settings_spec.rb +++ b/spec/features/projects/settings/repository_settings_spec.rb @@ -209,7 +209,9 @@ RSpec.describe 'Projects > Settings > Repository settings' do end it 'generates an SSH public key on submission', :js do - fill_in 'url', with: 'ssh://user@localhost/project.git' + fill_in 'url', with: ssh_url + expect(page).to have_css(".js-mirror-url-hidden[value=\"#{ssh_url}\"]", visible: false) + select 'SSH public key', from: 'Authentication method' select_direction diff --git a/spec/frontend/batch_comments/components/review_bar_spec.js b/spec/frontend/batch_comments/components/review_bar_spec.js index f98e0a4c64a..f50db6ab210 100644 --- a/spec/frontend/batch_comments/components/review_bar_spec.js +++ b/spec/frontend/batch_comments/components/review_bar_spec.js @@ -6,8 +6,6 @@ import createStore from '../create_batch_comments_store'; describe('Batch comments review bar component', () => { let store; let wrapper; - let addEventListenerSpy; - let removeEventListenerSpy; const createComponent = (propsData = {}) => { store = createStore(); @@ -20,58 +18,25 @@ describe('Batch comments review bar component', () => { beforeEach(() => { document.body.className = ''; - - addEventListenerSpy = jest.spyOn(window, 'addEventListener'); - removeEventListenerSpy = jest.spyOn(window, 'removeEventListener'); }); afterEach(() => { - addEventListenerSpy.mockRestore(); - removeEventListenerSpy.mockRestore(); wrapper.destroy(); }); - describe('when mounted', () => { - it('it adds review-bar-visible class to body', async () => { - expect(document.body.classList.contains(REVIEW_BAR_VISIBLE_CLASS_NAME)).toBe(false); - - createComponent(); - - expect(document.body.classList.contains(REVIEW_BAR_VISIBLE_CLASS_NAME)).toBe(true); - }); + it('it adds review-bar-visible class to body when review bar is mounted', async () => { + expect(document.body.classList.contains(REVIEW_BAR_VISIBLE_CLASS_NAME)).toBe(false); - it('it adds a blocking handler to the `beforeunload` window event', () => { - expect(addEventListenerSpy).not.toBeCalled(); + createComponent(); - createComponent(); - - expect(addEventListenerSpy).toHaveBeenCalledTimes(1); - expect(addEventListenerSpy).toBeCalledWith('beforeunload', expect.any(Function), { - capture: true, - }); - }); + expect(document.body.classList.contains(REVIEW_BAR_VISIBLE_CLASS_NAME)).toBe(true); }); - describe('before destroyed', () => { - it('it removes review-bar-visible class to body', async () => { - createComponent(); - - wrapper.destroy(); + it('it removes review-bar-visible class to body when review bar is destroyed', async () => { + createComponent(); - expect(document.body.classList.contains(REVIEW_BAR_VISIBLE_CLASS_NAME)).toBe(false); - }); - - it('it removes the blocking handler from the `beforeunload` window event', () => { - createComponent(); - - expect(removeEventListenerSpy).not.toBeCalled(); - - wrapper.destroy(); + wrapper.destroy(); - expect(removeEventListenerSpy).toHaveBeenCalledTimes(1); - expect(removeEventListenerSpy).toBeCalledWith('beforeunload', expect.any(Function), { - capture: true, - }); - }); + expect(document.body.classList.contains(REVIEW_BAR_VISIBLE_CLASS_NAME)).toBe(false); }); }); diff --git a/spec/frontend/blob/blob_blame_link_spec.js b/spec/frontend/blob/blob_blame_link_spec.js new file mode 100644 index 00000000000..0d19177a11f --- /dev/null +++ b/spec/frontend/blob/blob_blame_link_spec.js @@ -0,0 +1,47 @@ +import { setHTMLFixture, resetHTMLFixture } from 'helpers/fixtures'; +import addBlameLink from '~/blob/blob_blame_link'; + +describe('Blob links', () => { + const mouseoverEvent = new MouseEvent('mouseover', { + view: window, + bubbles: true, + cancelable: true, + }); + + beforeEach(() => { + setHTMLFixture(` + <div id="blob-content-holder"> + <div class="line-numbers" data-blame-path="/blamePath"> + <a id="L5" href="#L5" data-line-number="5" class="file-line-num js-line-links">5</a> + </div> + <pre id="LC5">Line 5 content</pre> + </div> + `); + + addBlameLink('#blob-content-holder', 'js-line-links'); + document.querySelector('.file-line-num').dispatchEvent(mouseoverEvent); + }); + + afterEach(() => { + resetHTMLFixture(); + }); + + it('adds wrapper elements with correct classes', () => { + const wrapper = document.querySelector('.line-links'); + + expect(wrapper).toBeTruthy(); + expect(wrapper.classList).toContain('diff-line-num'); + }); + + it('adds blame link with correct classes and path', () => { + const blameLink = document.querySelector('.file-line-blame'); + expect(blameLink).toBeTruthy(); + expect(blameLink.getAttribute('href')).toBe('/blamePath#L5'); + }); + + it('adds line link within wraper with correct classes and path', () => { + const lineLink = document.querySelector('.file-line-num'); + expect(lineLink).toBeTruthy(); + expect(lineLink.getAttribute('href')).toBe('#L5'); + }); +}); diff --git a/spec/frontend/blob/blob_links_tracking_spec.js b/spec/frontend/blob/blob_links_tracking_spec.js index 22e087bc180..8ef1e9f0ac9 100644 --- a/spec/frontend/blob/blob_links_tracking_spec.js +++ b/spec/frontend/blob/blob_links_tracking_spec.js @@ -15,7 +15,7 @@ describe('Blob links Tracking', () => { beforeEach(() => { setHTMLFixture(` - <div id="blob-content-holder"> + <div class="file-holder"> <div class="line-links diff-line-num"> <a href="#L5" class="file-line-blame"></a> <a id="L5" href="#L5" data-line-number="5" class="file-line-num">5</a> @@ -23,7 +23,7 @@ describe('Blob links Tracking', () => { <pre id="LC5">Line 5 content</pre> </div> `); - addBlobLinksTracking('#blob-content-holder', eventsToTrack); + addBlobLinksTracking(); jest.spyOn(Tracking, 'event'); }); diff --git a/spec/helpers/events_helper_spec.rb b/spec/helpers/events_helper_spec.rb index 073cebeecd5..cc6804f0355 100644 --- a/spec/helpers/events_helper_spec.rb +++ b/spec/helpers/events_helper_spec.rb @@ -5,6 +5,25 @@ require 'spec_helper' RSpec.describe EventsHelper do include Gitlab::Routing + describe '#event_target_path' do + subject { helper.event_target_path(event.present) } + + context 'when target is a work item' do + let(:work_item) { create(:work_item) } + let(:event) { create(:event, target: work_item, target_type: 'WorkItem') } + + it { is_expected.to eq(Gitlab::UrlBuilder.build(work_item, only_path: true)) } + end + + context 'when target is not a work item' do + let(:project) { create(:project) } + let(:issue) { create(:issue, project: project) } + let(:event) { create(:event, target: issue, project: project) } + + it { is_expected.to eq([project, issue]) } + end + end + describe '#event_commit_title' do let(:message) { 'foo & bar ' + 'A' * 70 + '\n' + 'B' * 80 } diff --git a/spec/views/events/event/_common.html.haml_spec.rb b/spec/views/events/event/_common.html.haml_spec.rb new file mode 100644 index 00000000000..0de84e2fdb8 --- /dev/null +++ b/spec/views/events/event/_common.html.haml_spec.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe 'events/event/_common.html.haml' do + let_it_be(:project) { create(:project) } + let_it_be(:issue) { create(:issue, project: project) } + let_it_be(:user) { create(:user) } + + context 'when it is a work item event' do + let(:work_item) { create(:work_item, project: project) } + + let(:event) do + create(:event, :created, project: project, target: work_item, target_type: 'WorkItem', author: user) + end + + it 'renders the correct url' do + render partial: 'events/event/common', locals: { event: event.present } + + expect(rendered).to have_link( + work_item.reference_link_text, href: "/#{project.full_path}/-/work_items/#{work_item.id}" + ) + end + end + + context 'when it is an isssue event' do + let(:issue) { create(:issue, project: project) } + + let(:event) do + create(:event, :created, project: project, target: issue, author: user) + end + + it 'renders the correct url' do + render partial: 'events/event/common', locals: { event: event.present } + + expect(rendered).to have_link(issue.reference_link_text, href: "/#{project.full_path}/-/issues/#{issue.iid}") + end + end +end |