diff options
-rw-r--r-- | spec/javascripts/boards/board_list_common_spec.js | 58 | ||||
-rw-r--r-- | spec/javascripts/boards/board_list_spec.js | 51 |
2 files changed, 60 insertions, 49 deletions
diff --git a/spec/javascripts/boards/board_list_common_spec.js b/spec/javascripts/boards/board_list_common_spec.js new file mode 100644 index 00000000000..cb337e4cc83 --- /dev/null +++ b/spec/javascripts/boards/board_list_common_spec.js @@ -0,0 +1,58 @@ +/* global List */ +/* global ListIssue */ + +import MockAdapter from 'axios-mock-adapter'; +import Vue from 'vue'; +import axios from '~/lib/utils/axios_utils'; +import Sortable from 'sortablejs'; +import BoardList from '~/boards/components/board_list.vue'; + +import '~/boards/models/issue'; +import '~/boards/models/list'; +import { listObj, boardsMockInterceptor, mockBoardService } from './mock_data'; +import boardsStore from '~/boards/stores/boards_store'; + +window.Sortable = Sortable; + +export default function createComponent({ done, listIssueProps = {}, componentProps = {} }) { + const el = document.createElement('div'); + + document.body.appendChild(el); + const mock = new MockAdapter(axios); + mock.onAny().reply(boardsMockInterceptor); + gl.boardService = mockBoardService(); + boardsStore.create(); + + const BoardListComp = Vue.extend(BoardList); + const list = new List(listObj); + const issue = new ListIssue({ + title: 'Testing', + id: 1, + iid: 1, + confidential: false, + labels: [], + assignees: [], + ...listIssueProps, + }); + list.issuesSize = 1; + list.issues.push(issue); + + const component = new BoardListComp({ + el, + propsData: { + disabled: false, + list, + issues: list.issues, + loading: false, + issueLinkBase: '/issues', + rootPath: '/', + ...componentProps, + }, + }).$mount(); + + Vue.nextTick(() => { + done(); + }); + + return { component, mock }; +} diff --git a/spec/javascripts/boards/board_list_spec.js b/spec/javascripts/boards/board_list_spec.js index 396fc823ef5..9c9b435d7fd 100644 --- a/spec/javascripts/boards/board_list_spec.js +++ b/spec/javascripts/boards/board_list_spec.js @@ -1,60 +1,13 @@ -/* global List */ -/* global ListIssue */ - import Vue from 'vue'; -import MockAdapter from 'axios-mock-adapter'; -import axios from '~/lib/utils/axios_utils'; -import Sortable from 'sortablejs'; -import BoardList from '~/boards/components/board_list.vue'; import eventHub from '~/boards/eventhub'; -import '~/boards/models/issue'; -import '~/boards/models/list'; -import boardsStore from '~/boards/stores/boards_store'; -import { listObj, boardsMockInterceptor, mockBoardService } from './mock_data'; - -window.Sortable = Sortable; +import createComponent from './board_list_common_spec'; describe('Board list component', () => { let mock; let component; beforeEach(done => { - const el = document.createElement('div'); - - document.body.appendChild(el); - mock = new MockAdapter(axios); - mock.onAny().reply(boardsMockInterceptor); - gl.boardService = mockBoardService(); - boardsStore.create(); - - const BoardListComp = Vue.extend(BoardList); - const list = new List(listObj); - const issue = new ListIssue({ - title: 'Testing', - id: 1, - iid: 1, - confidential: false, - labels: [], - assignees: [], - }); - list.issuesSize = 1; - list.issues.push(issue); - - component = new BoardListComp({ - el, - propsData: { - disabled: false, - list, - issues: list.issues, - loading: false, - issueLinkBase: '/issues', - rootPath: '/', - }, - }).$mount(); - - Vue.nextTick(() => { - done(); - }); + ({ mock, component } = createComponent({ done })); }); afterEach(() => { |