diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-01-22 12:08:53 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-01-22 12:08:53 +0300 |
commit | 4dff02cf71591bd7ab47e44f3e1f2206f61c06eb (patch) | |
tree | 70a7286bbc624c264a06c6693f5e94ebede93dd0 /spec | |
parent | 16e3c34cac856092627cc41a8a9d9c69f3b26c03 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec')
18 files changed, 387 insertions, 125 deletions
diff --git a/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb b/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb index a2ec34335ec..bbeb91bbd19 100644 --- a/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb +++ b/spec/features/merge_request/user_suggests_changes_on_diff_spec.rb @@ -73,6 +73,23 @@ RSpec.describe 'User comments on a diff', :js do end end + it 'allows suggestions in replies' do + click_diff_line(find("[id='#{sample_compare.changes[1][:line_code]}']")) + + page.within('.js-discussion-note-form') do + fill_in('note_note', with: "```suggestion\n# change to a comment\n```") + click_button('Add comment now') + end + + wait_for_requests + + click_button 'Reply...' + + find('.js-suggestion-btn').click + + expect(find('.js-vue-issue-note-form').value).to include("url = https://github.com/gitlabhq/gitlab-shell.git") + end + it 'suggestion is appliable' do click_diff_line(find("[id='#{sample_compare.changes[1][:line_code]}']")) diff --git a/spec/features/search/user_searches_for_commits_spec.rb b/spec/features/search/user_searches_for_commits_spec.rb index b860cd08e64..1a882050126 100644 --- a/spec/features/search/user_searches_for_commits_spec.rb +++ b/spec/features/search/user_searches_for_commits_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User searches for commits' do +RSpec.describe 'User searches for commits', :js do let(:project) { create(:project, :repository) } let(:sha) { '6d394385cf567f80a8fd85055db1ab4c5295806f' } let(:user) { create(:user) } @@ -41,7 +41,7 @@ RSpec.describe 'User searches for commits' do submit_search('See merge request') select_search_scope('Commits') - expect(page).to have_selector('.commit-row-description', count: 9) + expect(page).to have_selector('.commit-row-description', visible: false, count: 9) end end end diff --git a/spec/features/search/user_searches_for_projects_spec.rb b/spec/features/search/user_searches_for_projects_spec.rb index b64909dd42f..e34ae031679 100644 --- a/spec/features/search/user_searches_for_projects_spec.rb +++ b/spec/features/search/user_searches_for_projects_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'User searches for projects' do +RSpec.describe 'User searches for projects', :js do let!(:project) { create(:project, :public, name: 'Shop') } context 'when signed out' do diff --git a/spec/frontend/boards/components/board_card_layout_deprecated_spec.js b/spec/frontend/boards/components/board_card_layout_deprecated_spec.js new file mode 100644 index 00000000000..adeb96eb5eb --- /dev/null +++ b/spec/frontend/boards/components/board_card_layout_deprecated_spec.js @@ -0,0 +1,159 @@ +/* global List */ +/* global ListLabel */ + +import Vuex from 'vuex'; +import { createLocalVue, shallowMount } from '@vue/test-utils'; + +import MockAdapter from 'axios-mock-adapter'; +import waitForPromises from 'helpers/wait_for_promises'; +import axios from '~/lib/utils/axios_utils'; + +import '~/boards/models/label'; +import '~/boards/models/assignee'; +import '~/boards/models/list'; +import boardsVuexStore from '~/boards/stores'; +import boardsStore from '~/boards/stores/boards_store'; +import BoardCardLayout from '~/boards/components/board_card_layout_deprecated.vue'; +import issueCardInner from '~/boards/components/issue_card_inner.vue'; +import { listObj, boardsMockInterceptor, setMockEndpoints } from '../mock_data'; + +import { ISSUABLE } from '~/boards/constants'; + +describe('Board card layout', () => { + let wrapper; + let mock; + let list; + let store; + + const localVue = createLocalVue(); + localVue.use(Vuex); + + const createStore = ({ getters = {}, actions = {} } = {}) => { + store = new Vuex.Store({ + ...boardsVuexStore, + actions, + getters, + }); + }; + + // this particular mount component needs to be used after the root beforeEach because it depends on list being initialized + const mountComponent = ({ propsData = {}, provide = {} } = {}) => { + wrapper = shallowMount(BoardCardLayout, { + localVue, + stubs: { + issueCardInner, + }, + store, + propsData: { + list, + issue: list.issues[0], + disabled: false, + index: 0, + ...propsData, + }, + provide: { + groupId: null, + rootPath: '/', + scopedLabelsAvailable: false, + ...provide, + }, + }); + }; + + const setupData = () => { + list = new List(listObj); + boardsStore.create(); + boardsStore.detail.issue = {}; + const label1 = new ListLabel({ + id: 3, + title: 'testing 123', + color: '#000cff', + text_color: 'white', + description: 'test', + }); + return waitForPromises().then(() => { + list.issues[0].labels.push(label1); + }); + }; + + beforeEach(() => { + mock = new MockAdapter(axios); + mock.onAny().reply(boardsMockInterceptor); + setMockEndpoints(); + return setupData(); + }); + + afterEach(() => { + wrapper.destroy(); + wrapper = null; + list = null; + mock.restore(); + }); + + describe('mouse events', () => { + it('sets showDetail to true on mousedown', async () => { + createStore(); + mountComponent(); + + wrapper.trigger('mousedown'); + await wrapper.vm.$nextTick(); + + expect(wrapper.vm.showDetail).toBe(true); + }); + + it('sets showDetail to false on mousemove', async () => { + createStore(); + mountComponent(); + wrapper.trigger('mousedown'); + await wrapper.vm.$nextTick(); + expect(wrapper.vm.showDetail).toBe(true); + wrapper.trigger('mousemove'); + await wrapper.vm.$nextTick(); + expect(wrapper.vm.showDetail).toBe(false); + }); + + it("calls 'setActiveId' when 'graphqlBoardLists' feature flag is turned on", async () => { + const setActiveId = jest.fn(); + createStore({ + actions: { + setActiveId, + }, + }); + mountComponent({ + provide: { + glFeatures: { graphqlBoardLists: true }, + }, + }); + + wrapper.trigger('mouseup'); + await wrapper.vm.$nextTick(); + + expect(setActiveId).toHaveBeenCalledTimes(1); + expect(setActiveId).toHaveBeenCalledWith(expect.any(Object), { + id: list.issues[0].id, + sidebarType: ISSUABLE, + }); + }); + + it("calls 'setActiveId' when epic swimlanes is active", async () => { + const setActiveId = jest.fn(); + const isSwimlanesOn = () => true; + createStore({ + getters: { isSwimlanesOn }, + actions: { + setActiveId, + }, + }); + mountComponent(); + + wrapper.trigger('mouseup'); + await wrapper.vm.$nextTick(); + + expect(setActiveId).toHaveBeenCalledTimes(1); + expect(setActiveId).toHaveBeenCalledWith(expect.any(Object), { + id: list.issues[0].id, + sidebarType: ISSUABLE, + }); + }); + }); +}); diff --git a/spec/frontend/boards/components/board_card_layout_spec.js b/spec/frontend/boards/components/board_card_layout_spec.js index d8633871e8d..88407c3e451 100644 --- a/spec/frontend/boards/components/board_card_layout_spec.js +++ b/spec/frontend/boards/components/board_card_layout_spec.js @@ -1,28 +1,15 @@ -/* global List */ -/* global ListLabel */ - import Vuex from 'vuex'; import { createLocalVue, shallowMount } from '@vue/test-utils'; -import MockAdapter from 'axios-mock-adapter'; -import waitForPromises from 'helpers/wait_for_promises'; -import axios from '~/lib/utils/axios_utils'; - -import '~/boards/models/label'; -import '~/boards/models/assignee'; -import '~/boards/models/list'; -import boardsVuexStore from '~/boards/stores'; -import boardsStore from '~/boards/stores/boards_store'; +import defaultState from '~/boards/stores/state'; import BoardCardLayout from '~/boards/components/board_card_layout.vue'; -import issueCardInner from '~/boards/components/issue_card_inner.vue'; -import { listObj, boardsMockInterceptor, setMockEndpoints } from '../mock_data'; +import IssueCardInner from '~/boards/components/issue_card_inner.vue'; +import { mockLabelList, mockIssue } from '../mock_data'; import { ISSUABLE } from '~/boards/constants'; describe('Board card layout', () => { let wrapper; - let mock; - let list; let store; const localVue = createLocalVue(); @@ -30,7 +17,7 @@ describe('Board card layout', () => { const createStore = ({ getters = {}, actions = {} } = {}) => { store = new Vuex.Store({ - ...boardsVuexStore, + state: defaultState, actions, getters, }); @@ -41,12 +28,12 @@ describe('Board card layout', () => { wrapper = shallowMount(BoardCardLayout, { localVue, stubs: { - issueCardInner, + IssueCardInner, }, store, propsData: { - list, - issue: list.issues[0], + list: mockLabelList, + issue: mockIssue, disabled: false, index: 0, ...propsData, @@ -60,34 +47,9 @@ describe('Board card layout', () => { }); }; - const setupData = () => { - list = new List(listObj); - boardsStore.create(); - boardsStore.detail.issue = {}; - const label1 = new ListLabel({ - id: 3, - title: 'testing 123', - color: '#000cff', - text_color: 'white', - description: 'test', - }); - return waitForPromises().then(() => { - list.issues[0].labels.push(label1); - }); - }; - - beforeEach(() => { - mock = new MockAdapter(axios); - mock.onAny().reply(boardsMockInterceptor); - setMockEndpoints(); - return setupData(); - }); - afterEach(() => { wrapper.destroy(); wrapper = null; - list = null; - mock.restore(); }); describe('mouse events', () => { @@ -112,25 +74,21 @@ describe('Board card layout', () => { expect(wrapper.vm.showDetail).toBe(false); }); - it("calls 'setActiveId' when 'graphqlBoardLists' feature flag is turned on", async () => { + it("calls 'setActiveId'", async () => { const setActiveId = jest.fn(); createStore({ actions: { setActiveId, }, }); - mountComponent({ - provide: { - glFeatures: { graphqlBoardLists: true }, - }, - }); + mountComponent(); wrapper.trigger('mouseup'); await wrapper.vm.$nextTick(); expect(setActiveId).toHaveBeenCalledTimes(1); expect(setActiveId).toHaveBeenCalledWith(expect.any(Object), { - id: list.issues[0].id, + id: mockIssue.id, sidebarType: ISSUABLE, }); }); @@ -151,7 +109,7 @@ describe('Board card layout', () => { expect(setActiveId).toHaveBeenCalledTimes(1); expect(setActiveId).toHaveBeenCalledWith(expect.any(Object), { - id: list.issues[0].id, + id: mockIssue.id, sidebarType: ISSUABLE, }); }); diff --git a/spec/frontend/boards/components/board_configuration_options_spec.js b/spec/frontend/boards/components/board_configuration_options_spec.js index d9614c254e2..6f0971a9458 100644 --- a/spec/frontend/boards/components/board_configuration_options_spec.js +++ b/spec/frontend/boards/components/board_configuration_options_spec.js @@ -7,6 +7,7 @@ describe('BoardConfigurationOptions', () => { const defaultProps = { hideBacklogList: false, hideClosedList: false, + readonly: false, }; const createComponent = (props = {}) => { @@ -61,4 +62,18 @@ describe('BoardConfigurationOptions', () => { expect(wrapper.emitted('update:hideClosedList')).toEqual([[true]]); }); + + it('renders checkboxes disabled when user does not have edit rights', () => { + createComponent({ readonly: true }); + + expect(closedListCheckbox().attributes('disabled')).toBe('true'); + expect(backlogListCheckbox().attributes('disabled')).toBe('true'); + }); + + it('renders checkboxes enabled when user has edit rights', () => { + createComponent(); + + expect(closedListCheckbox().attributes('disabled')).toBeUndefined(); + expect(backlogListCheckbox().attributes('disabled')).toBeUndefined(); + }); }); diff --git a/spec/frontend/boards/components/sidebar/board_sidebar_milestone_select_spec.js b/spec/frontend/boards/components/sidebar/board_sidebar_milestone_select_spec.js index 74d88d9f34c..e6e2befedd0 100644 --- a/spec/frontend/boards/components/sidebar/board_sidebar_milestone_select_spec.js +++ b/spec/frontend/boards/components/sidebar/board_sidebar_milestone_select_spec.js @@ -20,7 +20,7 @@ describe('~/boards/components/sidebar/board_sidebar_milestone_select.vue', () => wrapper = null; }); - const createWrapper = ({ milestone = null } = {}) => { + const createWrapper = ({ milestone = null, loading = false } = {}) => { store = createStore(); store.state.issues = { [TEST_ISSUE.id]: { ...TEST_ISSUE, milestone } }; store.state.activeId = TEST_ISSUE.id; @@ -38,7 +38,7 @@ describe('~/boards/components/sidebar/board_sidebar_milestone_select.vue', () => }, mocks: { $apollo: { - loading: false, + loading, }, }, }); @@ -63,12 +63,7 @@ describe('~/boards/components/sidebar/board_sidebar_milestone_select.vue', () => }); it('shows loader while Apollo is loading', async () => { - createWrapper({ milestone: TEST_MILESTONE }); - - expect(findLoader().exists()).toBe(false); - - wrapper.vm.$apollo.loading = true; - await wrapper.vm.$nextTick(); + createWrapper({ milestone: TEST_MILESTONE, loading: true }); expect(findLoader().exists()).toBe(true); }); @@ -76,8 +71,7 @@ describe('~/boards/components/sidebar/board_sidebar_milestone_select.vue', () => it('shows message when error or no milestones found', async () => { createWrapper(); - wrapper.setData({ milestones: [] }); - await wrapper.vm.$nextTick(); + await wrapper.setData({ milestones: [] }); expect(findNoMilestonesFoundItem().text()).toBe('No milestones found'); }); diff --git a/spec/frontend/boards/issue_spec.js b/spec/frontend/boards/issue_spec.js index d68e17c06a7..1f354fb04db 100644 --- a/spec/frontend/boards/issue_spec.js +++ b/spec/frontend/boards/issue_spec.js @@ -41,7 +41,7 @@ describe('Issue model', () => { }); expect(issue.labels.length).toBe(1); - expect(issue.labels[0].color).toBe('red'); + expect(issue.labels[0].color).toBe('#F0AD4E'); }); it('adds other label with same title', () => { diff --git a/spec/frontend/boards/mock_data.js b/spec/frontend/boards/mock_data.js index d5cfb9b7d07..6d60937f850 100644 --- a/spec/frontend/boards/mock_data.js +++ b/spec/frontend/boards/mock_data.js @@ -137,7 +137,7 @@ export const rawIssue = { { id: 1, title: 'test', - color: 'red', + color: '#F0AD4E', description: 'testing', }, ], @@ -165,7 +165,7 @@ export const mockIssue = { { id: 1, title: 'test', - color: 'red', + color: '#F0AD4E', description: 'testing', }, ], diff --git a/spec/frontend/boards/stores/actions_spec.js b/spec/frontend/boards/stores/actions_spec.js index 04b08b579f8..c285e04a042 100644 --- a/spec/frontend/boards/stores/actions_spec.js +++ b/spec/frontend/boards/stores/actions_spec.js @@ -1222,6 +1222,40 @@ describe('setSelectedProject', () => { }); }); +describe('toggleBoardItemMultiSelection', () => { + const boardItem = mockIssue; + + it('should commit mutation ADD_BOARD_ITEM_TO_SELECTION if item is not on selection state', () => { + testAction( + actions.toggleBoardItemMultiSelection, + boardItem, + { selectedBoardItems: [] }, + [ + { + type: types.ADD_BOARD_ITEM_TO_SELECTION, + payload: boardItem, + }, + ], + [], + ); + }); + + it('should commit mutation REMOVE_BOARD_ITEM_FROM_SELECTION if item is on selection state', () => { + testAction( + actions.toggleBoardItemMultiSelection, + boardItem, + { selectedBoardItems: [mockIssue] }, + [ + { + type: types.REMOVE_BOARD_ITEM_FROM_SELECTION, + payload: boardItem, + }, + ], + [], + ); + }); +}); + describe('fetchBacklog', () => { expectNotImplemented(actions.fetchBacklog); }); diff --git a/spec/frontend/boards/stores/mutations_spec.js b/spec/frontend/boards/stores/mutations_spec.js index 73283117bc7..2b6548534c3 100644 --- a/spec/frontend/boards/stores/mutations_spec.js +++ b/spec/frontend/boards/stores/mutations_spec.js @@ -594,4 +594,27 @@ describe('Board Store Mutations', () => { expect(state.selectedProject).toEqual(mockGroupProjects[0]); }); }); + + describe('ADD_BOARD_ITEM_TO_SELECTION', () => { + it('Should add boardItem to selectedBoardItems state', () => { + expect(state.selectedBoardItems).toEqual([]); + + mutations[types.ADD_BOARD_ITEM_TO_SELECTION](state, mockIssue); + + expect(state.selectedBoardItems).toEqual([mockIssue]); + }); + }); + + describe('REMOVE_BOARD_ITEM_FROM_SELECTION', () => { + it('Should remove boardItem to selectedBoardItems state', () => { + state = { + ...state, + selectedBoardItems: [mockIssue], + }; + + mutations[types.REMOVE_BOARD_ITEM_FROM_SELECTION](state, mockIssue); + + expect(state.selectedBoardItems).toEqual([]); + }); + }); }); diff --git a/spec/frontend/search/highlight_blob_search_result_spec.js b/spec/frontend/search/highlight_blob_search_result_spec.js index 112e6f5124f..c1b0c7d794b 100644 --- a/spec/frontend/search/highlight_blob_search_result_spec.js +++ b/spec/frontend/search/highlight_blob_search_result_spec.js @@ -1,6 +1,7 @@ import setHighlightClass from '~/search/highlight_blob_search_result'; const fixture = 'search/blob_search_result.html'; +const searchKeyword = 'Send'; // spec/frontend/fixtures/search.rb#79 describe('search/highlight_blob_search_result', () => { preloadFixtures(fixture); @@ -8,7 +9,7 @@ describe('search/highlight_blob_search_result', () => { beforeEach(() => loadFixtures(fixture)); it('highlights lines with search term occurrence', () => { - setHighlightClass(); + setHighlightClass(searchKeyword); expect(document.querySelectorAll('.blob-result .hll').length).toBe(4); }); diff --git a/spec/frontend/search/index_spec.js b/spec/frontend/search/index_spec.js index 023cd341345..1992a7f4437 100644 --- a/spec/frontend/search/index_spec.js +++ b/spec/frontend/search/index_spec.js @@ -1,9 +1,11 @@ +import setHighlightClass from 'ee_else_ce/search/highlight_blob_search_result'; import { initSearchApp } from '~/search'; import createStore from '~/search/store'; jest.mock('~/search/store'); jest.mock('~/search/topbar'); jest.mock('~/search/sidebar'); +jest.mock('ee_else_ce/search/highlight_blob_search_result'); describe('initSearchApp', () => { let defaultLocation; @@ -42,6 +44,7 @@ describe('initSearchApp', () => { it(`decodes ${search} to ${decodedSearch}`, () => { expect(createStore).toHaveBeenCalledWith({ query: { search: decodedSearch } }); + expect(setHighlightClass).toHaveBeenCalledWith(decodedSearch); }); }); }); diff --git a/spec/frontend/search/topbar/components/app_spec.js b/spec/frontend/search/topbar/components/app_spec.js new file mode 100644 index 00000000000..faf3629b444 --- /dev/null +++ b/spec/frontend/search/topbar/components/app_spec.js @@ -0,0 +1,113 @@ +import Vuex from 'vuex'; +import { createLocalVue, shallowMount } from '@vue/test-utils'; +import { GlForm, GlSearchBoxByType, GlButton } from '@gitlab/ui'; +import { MOCK_QUERY } from 'jest/search/mock_data'; +import GlobalSearchTopbar from '~/search/topbar/components/app.vue'; +import GroupFilter from '~/search/topbar/components/group_filter.vue'; +import ProjectFilter from '~/search/topbar/components/project_filter.vue'; + +const localVue = createLocalVue(); +localVue.use(Vuex); + +describe('GlobalSearchTopbar', () => { + let wrapper; + + const actionSpies = { + applyQuery: jest.fn(), + setQuery: jest.fn(), + }; + + const createComponent = (initialState) => { + const store = new Vuex.Store({ + state: { + query: MOCK_QUERY, + ...initialState, + }, + actions: actionSpies, + }); + + wrapper = shallowMount(GlobalSearchTopbar, { + localVue, + store, + }); + }; + + afterEach(() => { + wrapper.destroy(); + wrapper = null; + }); + + const findTopbarForm = () => wrapper.find(GlForm); + const findGlSearchBox = () => wrapper.find(GlSearchBoxByType); + const findGroupFilter = () => wrapper.find(GroupFilter); + const findProjectFilter = () => wrapper.find(ProjectFilter); + const findSearchButton = () => wrapper.find(GlButton); + + describe('template', () => { + beforeEach(() => { + createComponent(); + }); + + it('renders Topbar Form always', () => { + expect(findTopbarForm().exists()).toBe(true); + }); + + describe('Search box', () => { + it('renders always', () => { + expect(findGlSearchBox().exists()).toBe(true); + }); + + describe('onSearch', () => { + const testSearch = 'test search'; + + beforeEach(() => { + findGlSearchBox().vm.$emit('input', testSearch); + }); + + it('calls setQuery when input event is fired from GlSearchBoxByType', () => { + expect(actionSpies.setQuery).toHaveBeenCalledWith(expect.any(Object), { + key: 'search', + value: testSearch, + }); + }); + }); + }); + + describe.each` + snippets | showFilters + ${null} | ${true} + ${{ query: { snippets: '' } }} | ${true} + ${{ query: { snippets: false } }} | ${true} + ${{ query: { snippets: true } }} | ${false} + ${{ query: { snippets: 'false' } }} | ${true} + ${{ query: { snippets: 'true' } }} | ${false} + `('topbar filters', ({ snippets, showFilters }) => { + beforeEach(() => { + createComponent(snippets); + }); + + it(`does${showFilters ? '' : ' not'} render when snippets is ${JSON.stringify( + snippets, + )}`, () => { + expect(findGroupFilter().exists()).toBe(showFilters); + expect(findProjectFilter().exists()).toBe(showFilters); + }); + }); + + it('renders SearchButton always', () => { + expect(findSearchButton().exists()).toBe(true); + }); + }); + + describe('actions', () => { + beforeEach(() => { + createComponent(); + }); + + it('clicking SearchButton calls applyQuery', () => { + findTopbarForm().vm.$emit('submit', { preventDefault: () => {} }); + + expect(actionSpies.applyQuery).toHaveBeenCalled(); + }); + }); +}); diff --git a/spec/frontend/search_spec.js b/spec/frontend/search_spec.js deleted file mode 100644 index d234a7fccb9..00000000000 --- a/spec/frontend/search_spec.js +++ /dev/null @@ -1,23 +0,0 @@ -import setHighlightClass from 'ee_else_ce/search/highlight_blob_search_result'; -import Search from '~/pages/search/show/search'; - -jest.mock('~/api'); -jest.mock('ee_else_ce/search/highlight_blob_search_result'); - -describe('Search', () => { - const fixturePath = 'search/show.html'; - - preloadFixtures(fixturePath); - - describe('constructor side effects', () => { - afterEach(() => { - jest.restoreAllMocks(); - }); - - it('highlights lines with search terms in blob search results', () => { - new Search(); // eslint-disable-line no-new - - expect(setHighlightClass).toHaveBeenCalled(); - }); - }); -}); diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 9fac6c8e192..7b3d413c02b 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -221,7 +221,6 @@ RSpec.configure do |config| # of older sidebar. # See https://gitlab.com/groups/gitlab-org/-/epics/1863 stub_feature_flags(vue_issuable_sidebar: false) - stub_feature_flags(vue_issuable_epic_sidebar: false) # Merge request widget GraphQL requests are disabled in the tests # for now whilst we migrate as much as we can over the GraphQL diff --git a/spec/views/search/_filter.html.haml_spec.rb b/spec/views/search/_filter.html.haml_spec.rb deleted file mode 100644 index 868408f7beb..00000000000 --- a/spec/views/search/_filter.html.haml_spec.rb +++ /dev/null @@ -1,17 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe 'search/_filter' do - context 'when the search page is opened' do - it 'displays the correct elements' do - render - - expect(rendered).to have_selector('label[for="dashboard_search_group"]') - expect(rendered).to have_selector('input#js-search-group-dropdown') - - expect(rendered).to have_selector('label[for="dashboard_search_project"]') - expect(rendered).to have_selector('input#js-search-project-dropdown') - end - end -end diff --git a/spec/views/search/_form.html.haml_spec.rb b/spec/views/search/_form.html.haml_spec.rb deleted file mode 100644 index 073a39e4ed6..00000000000 --- a/spec/views/search/_form.html.haml_spec.rb +++ /dev/null @@ -1,14 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe 'search/_form' do - context 'when the search page is opened' do - it 'displays the correct elements' do - render - - expect(rendered).to have_selector('.search-field-holder.form-group') - expect(rendered).to have_selector('label[for="dashboard_search"]') - end - end -end |