From df469864b1ab1e0bfaa1e843d3d0a84042604646 Mon Sep 17 00:00:00 2001 From: "Luke \"Jared\" Bennett" Date: Tue, 7 Feb 2017 18:02:49 +0000 Subject: Updated the filename regex --- spec/javascripts/boards/boards_store_spec.js | 158 +++++++++++++++++++ spec/javascripts/boards/boards_store_spec.js.es6 | 158 ------------------- spec/javascripts/boards/issue_card_spec.js | 191 +++++++++++++++++++++++ spec/javascripts/boards/issue_card_spec.js.es6 | 191 ----------------------- spec/javascripts/boards/issue_spec.js | 82 ++++++++++ spec/javascripts/boards/issue_spec.js.es6 | 82 ---------- spec/javascripts/boards/list_spec.js | 87 +++++++++++ spec/javascripts/boards/list_spec.js.es6 | 87 ----------- spec/javascripts/boards/mock_data.js | 63 ++++++++ spec/javascripts/boards/mock_data.js.es6 | 63 -------- spec/javascripts/boards/modal_store_spec.js | 132 ++++++++++++++++ spec/javascripts/boards/modal_store_spec.js.es6 | 132 ---------------- 12 files changed, 713 insertions(+), 713 deletions(-) create mode 100644 spec/javascripts/boards/boards_store_spec.js delete mode 100644 spec/javascripts/boards/boards_store_spec.js.es6 create mode 100644 spec/javascripts/boards/issue_card_spec.js delete mode 100644 spec/javascripts/boards/issue_card_spec.js.es6 create mode 100644 spec/javascripts/boards/issue_spec.js delete mode 100644 spec/javascripts/boards/issue_spec.js.es6 create mode 100644 spec/javascripts/boards/list_spec.js delete mode 100644 spec/javascripts/boards/list_spec.js.es6 create mode 100644 spec/javascripts/boards/mock_data.js delete mode 100644 spec/javascripts/boards/mock_data.js.es6 create mode 100644 spec/javascripts/boards/modal_store_spec.js delete mode 100644 spec/javascripts/boards/modal_store_spec.js.es6 (limited to 'spec/javascripts/boards') diff --git a/spec/javascripts/boards/boards_store_spec.js b/spec/javascripts/boards/boards_store_spec.js new file mode 100644 index 00000000000..9dd741a680b --- /dev/null +++ b/spec/javascripts/boards/boards_store_spec.js @@ -0,0 +1,158 @@ +/* eslint-disable comma-dangle, one-var, no-unused-vars */ +/* global Vue */ +/* global BoardService */ +/* global boardsMockInterceptor */ +/* global Cookies */ +/* global listObj */ +/* global listObjDuplicate */ + +require('~/lib/utils/url_utility'); +require('~/boards/models/issue'); +require('~/boards/models/label'); +require('~/boards/models/list'); +require('~/boards/models/user'); +require('~/boards/services/board_service'); +require('~/boards/stores/boards_store'); +require('./mock_data'); + +describe('Store', () => { + beforeEach(() => { + Vue.http.interceptors.push(boardsMockInterceptor); + gl.boardService = new BoardService('/test/issue-boards/board', '', '1'); + gl.issueBoards.BoardsStore.create(); + + Cookies.set('issue_board_welcome_hidden', 'false', { + expires: 365 * 10, + path: '' + }); + }); + + afterEach(() => { + Vue.http.interceptors = _.without(Vue.http.interceptors, boardsMockInterceptor); + }); + + it('starts with a blank state', () => { + expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(0); + }); + + describe('lists', () => { + it('creates new list without persisting to DB', () => { + gl.issueBoards.BoardsStore.addList(listObj); + + expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(1); + }); + + it('finds list by ID', () => { + gl.issueBoards.BoardsStore.addList(listObj); + const list = gl.issueBoards.BoardsStore.findList('id', 1); + + expect(list.id).toBe(1); + }); + + it('finds list by type', () => { + gl.issueBoards.BoardsStore.addList(listObj); + const list = gl.issueBoards.BoardsStore.findList('type', 'label'); + + expect(list).toBeDefined(); + }); + + it('gets issue when new list added', (done) => { + gl.issueBoards.BoardsStore.addList(listObj); + const list = gl.issueBoards.BoardsStore.findList('id', 1); + + expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(1); + + setTimeout(() => { + expect(list.issues.length).toBe(1); + expect(list.issues[0].id).toBe(1); + done(); + }, 0); + }); + + it('persists new list', (done) => { + gl.issueBoards.BoardsStore.new({ + title: 'Test', + type: 'label', + label: { + id: 1, + title: 'Testing', + color: 'red', + description: 'testing;' + } + }); + expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(1); + + setTimeout(() => { + const list = gl.issueBoards.BoardsStore.findList('id', 1); + expect(list).toBeDefined(); + expect(list.id).toBe(1); + expect(list.position).toBe(0); + done(); + }, 0); + }); + + it('check for blank state adding', () => { + expect(gl.issueBoards.BoardsStore.shouldAddBlankState()).toBe(true); + }); + + it('check for blank state not adding', () => { + gl.issueBoards.BoardsStore.addList(listObj); + expect(gl.issueBoards.BoardsStore.shouldAddBlankState()).toBe(false); + }); + + it('check for blank state adding when done list exist', () => { + gl.issueBoards.BoardsStore.addList({ + list_type: 'done' + }); + + expect(gl.issueBoards.BoardsStore.shouldAddBlankState()).toBe(true); + }); + + it('adds the blank state', () => { + gl.issueBoards.BoardsStore.addBlankState(); + + const list = gl.issueBoards.BoardsStore.findList('type', 'blank', 'blank'); + expect(list).toBeDefined(); + }); + + it('removes list from state', () => { + gl.issueBoards.BoardsStore.addList(listObj); + + expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(1); + + gl.issueBoards.BoardsStore.removeList(1, 'label'); + + expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(0); + }); + + it('moves the position of lists', () => { + const listOne = gl.issueBoards.BoardsStore.addList(listObj); + const listTwo = gl.issueBoards.BoardsStore.addList(listObjDuplicate); + + expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(2); + + gl.issueBoards.BoardsStore.moveList(listOne, ['2', '1']); + + expect(listOne.position).toBe(1); + }); + + it('moves an issue from one list to another', (done) => { + const listOne = gl.issueBoards.BoardsStore.addList(listObj); + const listTwo = gl.issueBoards.BoardsStore.addList(listObjDuplicate); + + expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(2); + + setTimeout(() => { + expect(listOne.issues.length).toBe(1); + expect(listTwo.issues.length).toBe(1); + + gl.issueBoards.BoardsStore.moveIssueToList(listOne, listTwo, listOne.findIssue(1)); + + expect(listOne.issues.length).toBe(0); + expect(listTwo.issues.length).toBe(1); + + done(); + }, 0); + }); + }); +}); diff --git a/spec/javascripts/boards/boards_store_spec.js.es6 b/spec/javascripts/boards/boards_store_spec.js.es6 deleted file mode 100644 index 9dd741a680b..00000000000 --- a/spec/javascripts/boards/boards_store_spec.js.es6 +++ /dev/null @@ -1,158 +0,0 @@ -/* eslint-disable comma-dangle, one-var, no-unused-vars */ -/* global Vue */ -/* global BoardService */ -/* global boardsMockInterceptor */ -/* global Cookies */ -/* global listObj */ -/* global listObjDuplicate */ - -require('~/lib/utils/url_utility'); -require('~/boards/models/issue'); -require('~/boards/models/label'); -require('~/boards/models/list'); -require('~/boards/models/user'); -require('~/boards/services/board_service'); -require('~/boards/stores/boards_store'); -require('./mock_data'); - -describe('Store', () => { - beforeEach(() => { - Vue.http.interceptors.push(boardsMockInterceptor); - gl.boardService = new BoardService('/test/issue-boards/board', '', '1'); - gl.issueBoards.BoardsStore.create(); - - Cookies.set('issue_board_welcome_hidden', 'false', { - expires: 365 * 10, - path: '' - }); - }); - - afterEach(() => { - Vue.http.interceptors = _.without(Vue.http.interceptors, boardsMockInterceptor); - }); - - it('starts with a blank state', () => { - expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(0); - }); - - describe('lists', () => { - it('creates new list without persisting to DB', () => { - gl.issueBoards.BoardsStore.addList(listObj); - - expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(1); - }); - - it('finds list by ID', () => { - gl.issueBoards.BoardsStore.addList(listObj); - const list = gl.issueBoards.BoardsStore.findList('id', 1); - - expect(list.id).toBe(1); - }); - - it('finds list by type', () => { - gl.issueBoards.BoardsStore.addList(listObj); - const list = gl.issueBoards.BoardsStore.findList('type', 'label'); - - expect(list).toBeDefined(); - }); - - it('gets issue when new list added', (done) => { - gl.issueBoards.BoardsStore.addList(listObj); - const list = gl.issueBoards.BoardsStore.findList('id', 1); - - expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(1); - - setTimeout(() => { - expect(list.issues.length).toBe(1); - expect(list.issues[0].id).toBe(1); - done(); - }, 0); - }); - - it('persists new list', (done) => { - gl.issueBoards.BoardsStore.new({ - title: 'Test', - type: 'label', - label: { - id: 1, - title: 'Testing', - color: 'red', - description: 'testing;' - } - }); - expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(1); - - setTimeout(() => { - const list = gl.issueBoards.BoardsStore.findList('id', 1); - expect(list).toBeDefined(); - expect(list.id).toBe(1); - expect(list.position).toBe(0); - done(); - }, 0); - }); - - it('check for blank state adding', () => { - expect(gl.issueBoards.BoardsStore.shouldAddBlankState()).toBe(true); - }); - - it('check for blank state not adding', () => { - gl.issueBoards.BoardsStore.addList(listObj); - expect(gl.issueBoards.BoardsStore.shouldAddBlankState()).toBe(false); - }); - - it('check for blank state adding when done list exist', () => { - gl.issueBoards.BoardsStore.addList({ - list_type: 'done' - }); - - expect(gl.issueBoards.BoardsStore.shouldAddBlankState()).toBe(true); - }); - - it('adds the blank state', () => { - gl.issueBoards.BoardsStore.addBlankState(); - - const list = gl.issueBoards.BoardsStore.findList('type', 'blank', 'blank'); - expect(list).toBeDefined(); - }); - - it('removes list from state', () => { - gl.issueBoards.BoardsStore.addList(listObj); - - expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(1); - - gl.issueBoards.BoardsStore.removeList(1, 'label'); - - expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(0); - }); - - it('moves the position of lists', () => { - const listOne = gl.issueBoards.BoardsStore.addList(listObj); - const listTwo = gl.issueBoards.BoardsStore.addList(listObjDuplicate); - - expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(2); - - gl.issueBoards.BoardsStore.moveList(listOne, ['2', '1']); - - expect(listOne.position).toBe(1); - }); - - it('moves an issue from one list to another', (done) => { - const listOne = gl.issueBoards.BoardsStore.addList(listObj); - const listTwo = gl.issueBoards.BoardsStore.addList(listObjDuplicate); - - expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(2); - - setTimeout(() => { - expect(listOne.issues.length).toBe(1); - expect(listTwo.issues.length).toBe(1); - - gl.issueBoards.BoardsStore.moveIssueToList(listOne, listTwo, listOne.findIssue(1)); - - expect(listOne.issues.length).toBe(0); - expect(listTwo.issues.length).toBe(1); - - done(); - }, 0); - }); - }); -}); diff --git a/spec/javascripts/boards/issue_card_spec.js b/spec/javascripts/boards/issue_card_spec.js new file mode 100644 index 00000000000..4340a571017 --- /dev/null +++ b/spec/javascripts/boards/issue_card_spec.js @@ -0,0 +1,191 @@ +/* global Vue */ +/* global ListUser */ +/* global ListLabel */ +/* global listObj */ +/* global ListIssue */ + +require('~/boards/models/issue'); +require('~/boards/models/label'); +require('~/boards/models/list'); +require('~/boards/models/user'); +require('~/boards/stores/boards_store'); +require('~/boards/components/issue_card_inner'); +require('./mock_data'); + +describe('Issue card component', () => { + const user = new ListUser({ + id: 1, + name: 'testing 123', + username: 'test', + avatar: 'test_image', + }); + const label1 = new ListLabel({ + id: 3, + title: 'testing 123', + color: 'blue', + text_color: 'white', + description: 'test', + }); + let component; + let issue; + let list; + + beforeEach(() => { + setFixtures('
'); + + list = listObj; + issue = new ListIssue({ + title: 'Testing', + iid: 1, + confidential: false, + labels: [list.label], + }); + + component = new Vue({ + el: document.querySelector('.test-container'), + data() { + return { + list, + issue, + issueLinkBase: '/test', + rootPath: '/', + }; + }, + components: { + 'issue-card': gl.issueBoards.IssueCardInner, + }, + template: ` + + `, + }); + }); + + it('renders issue title', () => { + expect( + component.$el.querySelector('.card-title').textContent, + ).toContain(issue.title); + }); + + it('includes issue base in link', () => { + expect( + component.$el.querySelector('.card-title a').getAttribute('href'), + ).toContain('/test'); + }); + + it('includes issue title on link', () => { + expect( + component.$el.querySelector('.card-title a').getAttribute('title'), + ).toBe(issue.title); + }); + + it('does not render confidential icon', () => { + expect( + component.$el.querySelector('.fa-eye-flash'), + ).toBeNull(); + }); + + it('renders confidential icon', (done) => { + component.issue.confidential = true; + + setTimeout(() => { + expect( + component.$el.querySelector('.confidential-icon'), + ).not.toBeNull(); + done(); + }, 0); + }); + + it('renders issue ID with #', () => { + expect( + component.$el.querySelector('.card-number').textContent, + ).toContain(`#${issue.id}`); + }); + + describe('assignee', () => { + it('does not render assignee', () => { + expect( + component.$el.querySelector('.card-assignee'), + ).toBeNull(); + }); + + describe('exists', () => { + beforeEach((done) => { + component.issue.assignee = user; + + setTimeout(() => { + done(); + }, 0); + }); + + it('renders assignee', () => { + expect( + component.$el.querySelector('.card-assignee'), + ).not.toBeNull(); + }); + + it('sets title', () => { + expect( + component.$el.querySelector('.card-assignee').getAttribute('title'), + ).toContain(`Assigned to ${user.name}`); + }); + + it('sets users path', () => { + expect( + component.$el.querySelector('.card-assignee').getAttribute('href'), + ).toBe('/test'); + }); + + it('renders avatar', () => { + expect( + component.$el.querySelector('.card-assignee img'), + ).not.toBeNull(); + }); + }); + }); + + describe('labels', () => { + it('does not render any', () => { + expect( + component.$el.querySelector('.label'), + ).toBeNull(); + }); + + describe('exists', () => { + beforeEach((done) => { + component.issue.addLabel(label1); + + setTimeout(() => { + done(); + }, 0); + }); + + it('does not render list label', () => { + expect( + component.$el.querySelectorAll('.label').length, + ).toBe(1); + }); + + it('renders label', () => { + expect( + component.$el.querySelector('.label').textContent, + ).toContain(label1.title); + }); + + it('sets label description as title', () => { + expect( + component.$el.querySelector('.label').getAttribute('title'), + ).toContain(label1.description); + }); + + it('sets background color of button', () => { + expect( + component.$el.querySelector('.label').style.backgroundColor, + ).toContain(label1.color); + }); + }); + }); +}); diff --git a/spec/javascripts/boards/issue_card_spec.js.es6 b/spec/javascripts/boards/issue_card_spec.js.es6 deleted file mode 100644 index 4340a571017..00000000000 --- a/spec/javascripts/boards/issue_card_spec.js.es6 +++ /dev/null @@ -1,191 +0,0 @@ -/* global Vue */ -/* global ListUser */ -/* global ListLabel */ -/* global listObj */ -/* global ListIssue */ - -require('~/boards/models/issue'); -require('~/boards/models/label'); -require('~/boards/models/list'); -require('~/boards/models/user'); -require('~/boards/stores/boards_store'); -require('~/boards/components/issue_card_inner'); -require('./mock_data'); - -describe('Issue card component', () => { - const user = new ListUser({ - id: 1, - name: 'testing 123', - username: 'test', - avatar: 'test_image', - }); - const label1 = new ListLabel({ - id: 3, - title: 'testing 123', - color: 'blue', - text_color: 'white', - description: 'test', - }); - let component; - let issue; - let list; - - beforeEach(() => { - setFixtures('
'); - - list = listObj; - issue = new ListIssue({ - title: 'Testing', - iid: 1, - confidential: false, - labels: [list.label], - }); - - component = new Vue({ - el: document.querySelector('.test-container'), - data() { - return { - list, - issue, - issueLinkBase: '/test', - rootPath: '/', - }; - }, - components: { - 'issue-card': gl.issueBoards.IssueCardInner, - }, - template: ` - - `, - }); - }); - - it('renders issue title', () => { - expect( - component.$el.querySelector('.card-title').textContent, - ).toContain(issue.title); - }); - - it('includes issue base in link', () => { - expect( - component.$el.querySelector('.card-title a').getAttribute('href'), - ).toContain('/test'); - }); - - it('includes issue title on link', () => { - expect( - component.$el.querySelector('.card-title a').getAttribute('title'), - ).toBe(issue.title); - }); - - it('does not render confidential icon', () => { - expect( - component.$el.querySelector('.fa-eye-flash'), - ).toBeNull(); - }); - - it('renders confidential icon', (done) => { - component.issue.confidential = true; - - setTimeout(() => { - expect( - component.$el.querySelector('.confidential-icon'), - ).not.toBeNull(); - done(); - }, 0); - }); - - it('renders issue ID with #', () => { - expect( - component.$el.querySelector('.card-number').textContent, - ).toContain(`#${issue.id}`); - }); - - describe('assignee', () => { - it('does not render assignee', () => { - expect( - component.$el.querySelector('.card-assignee'), - ).toBeNull(); - }); - - describe('exists', () => { - beforeEach((done) => { - component.issue.assignee = user; - - setTimeout(() => { - done(); - }, 0); - }); - - it('renders assignee', () => { - expect( - component.$el.querySelector('.card-assignee'), - ).not.toBeNull(); - }); - - it('sets title', () => { - expect( - component.$el.querySelector('.card-assignee').getAttribute('title'), - ).toContain(`Assigned to ${user.name}`); - }); - - it('sets users path', () => { - expect( - component.$el.querySelector('.card-assignee').getAttribute('href'), - ).toBe('/test'); - }); - - it('renders avatar', () => { - expect( - component.$el.querySelector('.card-assignee img'), - ).not.toBeNull(); - }); - }); - }); - - describe('labels', () => { - it('does not render any', () => { - expect( - component.$el.querySelector('.label'), - ).toBeNull(); - }); - - describe('exists', () => { - beforeEach((done) => { - component.issue.addLabel(label1); - - setTimeout(() => { - done(); - }, 0); - }); - - it('does not render list label', () => { - expect( - component.$el.querySelectorAll('.label').length, - ).toBe(1); - }); - - it('renders label', () => { - expect( - component.$el.querySelector('.label').textContent, - ).toContain(label1.title); - }); - - it('sets label description as title', () => { - expect( - component.$el.querySelector('.label').getAttribute('title'), - ).toContain(label1.description); - }); - - it('sets background color of button', () => { - expect( - component.$el.querySelector('.label').style.backgroundColor, - ).toContain(label1.color); - }); - }); - }); -}); diff --git a/spec/javascripts/boards/issue_spec.js b/spec/javascripts/boards/issue_spec.js new file mode 100644 index 00000000000..aab4d9c501e --- /dev/null +++ b/spec/javascripts/boards/issue_spec.js @@ -0,0 +1,82 @@ +/* eslint-disable comma-dangle */ +/* global BoardService */ +/* global ListIssue */ + +require('~/lib/utils/url_utility'); +require('~/boards/models/issue'); +require('~/boards/models/label'); +require('~/boards/models/list'); +require('~/boards/models/user'); +require('~/boards/services/board_service'); +require('~/boards/stores/boards_store'); +require('./mock_data'); + +describe('Issue model', () => { + let issue; + + beforeEach(() => { + gl.boardService = new BoardService('/test/issue-boards/board', '', '1'); + gl.issueBoards.BoardsStore.create(); + + issue = new ListIssue({ + title: 'Testing', + iid: 1, + confidential: false, + labels: [{ + id: 1, + title: 'test', + color: 'red', + description: 'testing' + }] + }); + }); + + it('has label', () => { + expect(issue.labels.length).toBe(1); + }); + + it('add new label', () => { + issue.addLabel({ + id: 2, + title: 'bug', + color: 'blue', + description: 'bugs!' + }); + expect(issue.labels.length).toBe(2); + }); + + it('does not add existing label', () => { + issue.addLabel({ + id: 2, + title: 'test', + color: 'blue', + description: 'bugs!' + }); + + expect(issue.labels.length).toBe(1); + }); + + it('finds label', () => { + const label = issue.findLabel(issue.labels[0]); + expect(label).toBeDefined(); + }); + + it('removes label', () => { + const label = issue.findLabel(issue.labels[0]); + issue.removeLabel(label); + expect(issue.labels.length).toBe(0); + }); + + it('removes multiple labels', () => { + issue.addLabel({ + id: 2, + title: 'bug', + color: 'blue', + description: 'bugs!' + }); + expect(issue.labels.length).toBe(2); + + issue.removeLabels([issue.labels[0], issue.labels[1]]); + expect(issue.labels.length).toBe(0); + }); +}); diff --git a/spec/javascripts/boards/issue_spec.js.es6 b/spec/javascripts/boards/issue_spec.js.es6 deleted file mode 100644 index aab4d9c501e..00000000000 --- a/spec/javascripts/boards/issue_spec.js.es6 +++ /dev/null @@ -1,82 +0,0 @@ -/* eslint-disable comma-dangle */ -/* global BoardService */ -/* global ListIssue */ - -require('~/lib/utils/url_utility'); -require('~/boards/models/issue'); -require('~/boards/models/label'); -require('~/boards/models/list'); -require('~/boards/models/user'); -require('~/boards/services/board_service'); -require('~/boards/stores/boards_store'); -require('./mock_data'); - -describe('Issue model', () => { - let issue; - - beforeEach(() => { - gl.boardService = new BoardService('/test/issue-boards/board', '', '1'); - gl.issueBoards.BoardsStore.create(); - - issue = new ListIssue({ - title: 'Testing', - iid: 1, - confidential: false, - labels: [{ - id: 1, - title: 'test', - color: 'red', - description: 'testing' - }] - }); - }); - - it('has label', () => { - expect(issue.labels.length).toBe(1); - }); - - it('add new label', () => { - issue.addLabel({ - id: 2, - title: 'bug', - color: 'blue', - description: 'bugs!' - }); - expect(issue.labels.length).toBe(2); - }); - - it('does not add existing label', () => { - issue.addLabel({ - id: 2, - title: 'test', - color: 'blue', - description: 'bugs!' - }); - - expect(issue.labels.length).toBe(1); - }); - - it('finds label', () => { - const label = issue.findLabel(issue.labels[0]); - expect(label).toBeDefined(); - }); - - it('removes label', () => { - const label = issue.findLabel(issue.labels[0]); - issue.removeLabel(label); - expect(issue.labels.length).toBe(0); - }); - - it('removes multiple labels', () => { - issue.addLabel({ - id: 2, - title: 'bug', - color: 'blue', - description: 'bugs!' - }); - expect(issue.labels.length).toBe(2); - - issue.removeLabels([issue.labels[0], issue.labels[1]]); - expect(issue.labels.length).toBe(0); - }); -}); diff --git a/spec/javascripts/boards/list_spec.js b/spec/javascripts/boards/list_spec.js new file mode 100644 index 00000000000..4397a32fedc --- /dev/null +++ b/spec/javascripts/boards/list_spec.js @@ -0,0 +1,87 @@ +/* eslint-disable comma-dangle */ +/* global Vue */ +/* global boardsMockInterceptor */ +/* global BoardService */ +/* global List */ +/* global listObj */ + +require('~/lib/utils/url_utility'); +require('~/boards/models/issue'); +require('~/boards/models/label'); +require('~/boards/models/list'); +require('~/boards/models/user'); +require('~/boards/services/board_service'); +require('~/boards/stores/boards_store'); +require('./mock_data'); + +describe('List model', () => { + let list; + + beforeEach(() => { + Vue.http.interceptors.push(boardsMockInterceptor); + gl.boardService = new BoardService('/test/issue-boards/board', '', '1'); + gl.issueBoards.BoardsStore.create(); + + list = new List(listObj); + }); + + afterEach(() => { + Vue.http.interceptors = _.without(Vue.http.interceptors, boardsMockInterceptor); + }); + + it('gets issues when created', (done) => { + setTimeout(() => { + expect(list.issues.length).toBe(1); + done(); + }, 0); + }); + + it('saves list and returns ID', (done) => { + list = new List({ + title: 'test', + label: { + id: 1, + title: 'test', + color: 'red' + } + }); + list.save(); + + setTimeout(() => { + expect(list.id).toBe(1); + expect(list.type).toBe('label'); + expect(list.position).toBe(0); + done(); + }, 0); + }); + + it('destroys the list', (done) => { + gl.issueBoards.BoardsStore.addList(listObj); + list = gl.issueBoards.BoardsStore.findList('id', 1); + expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(1); + list.destroy(); + + setTimeout(() => { + expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(0); + done(); + }, 0); + }); + + it('gets issue from list', (done) => { + setTimeout(() => { + const issue = list.findIssue(1); + expect(issue).toBeDefined(); + done(); + }, 0); + }); + + it('removes issue', (done) => { + setTimeout(() => { + const issue = list.findIssue(1); + expect(list.issues.length).toBe(1); + list.removeIssue(issue); + expect(list.issues.length).toBe(0); + done(); + }, 0); + }); +}); diff --git a/spec/javascripts/boards/list_spec.js.es6 b/spec/javascripts/boards/list_spec.js.es6 deleted file mode 100644 index 4397a32fedc..00000000000 --- a/spec/javascripts/boards/list_spec.js.es6 +++ /dev/null @@ -1,87 +0,0 @@ -/* eslint-disable comma-dangle */ -/* global Vue */ -/* global boardsMockInterceptor */ -/* global BoardService */ -/* global List */ -/* global listObj */ - -require('~/lib/utils/url_utility'); -require('~/boards/models/issue'); -require('~/boards/models/label'); -require('~/boards/models/list'); -require('~/boards/models/user'); -require('~/boards/services/board_service'); -require('~/boards/stores/boards_store'); -require('./mock_data'); - -describe('List model', () => { - let list; - - beforeEach(() => { - Vue.http.interceptors.push(boardsMockInterceptor); - gl.boardService = new BoardService('/test/issue-boards/board', '', '1'); - gl.issueBoards.BoardsStore.create(); - - list = new List(listObj); - }); - - afterEach(() => { - Vue.http.interceptors = _.without(Vue.http.interceptors, boardsMockInterceptor); - }); - - it('gets issues when created', (done) => { - setTimeout(() => { - expect(list.issues.length).toBe(1); - done(); - }, 0); - }); - - it('saves list and returns ID', (done) => { - list = new List({ - title: 'test', - label: { - id: 1, - title: 'test', - color: 'red' - } - }); - list.save(); - - setTimeout(() => { - expect(list.id).toBe(1); - expect(list.type).toBe('label'); - expect(list.position).toBe(0); - done(); - }, 0); - }); - - it('destroys the list', (done) => { - gl.issueBoards.BoardsStore.addList(listObj); - list = gl.issueBoards.BoardsStore.findList('id', 1); - expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(1); - list.destroy(); - - setTimeout(() => { - expect(gl.issueBoards.BoardsStore.state.lists.length).toBe(0); - done(); - }, 0); - }); - - it('gets issue from list', (done) => { - setTimeout(() => { - const issue = list.findIssue(1); - expect(issue).toBeDefined(); - done(); - }, 0); - }); - - it('removes issue', (done) => { - setTimeout(() => { - const issue = list.findIssue(1); - expect(list.issues.length).toBe(1); - list.removeIssue(issue); - expect(list.issues.length).toBe(0); - done(); - }, 0); - }); -}); diff --git a/spec/javascripts/boards/mock_data.js b/spec/javascripts/boards/mock_data.js new file mode 100644 index 00000000000..7a399b307ad --- /dev/null +++ b/spec/javascripts/boards/mock_data.js @@ -0,0 +1,63 @@ +/* eslint-disable comma-dangle, no-unused-vars, quote-props */ + +const listObj = { + id: 1, + position: 0, + title: 'Test', + list_type: 'label', + label: { + id: 1, + title: 'Testing', + color: 'red', + description: 'testing;' + } +}; + +const listObjDuplicate = { + id: 2, + position: 1, + title: 'Test', + list_type: 'label', + label: { + id: 2, + title: 'Testing', + color: 'red', + description: 'testing;' + } +}; + +const BoardsMockData = { + 'GET': { + '/test/issue-boards/board/1/lists{/id}/issues': { + issues: [{ + title: 'Testing', + iid: 1, + confidential: false, + labels: [] + }], + size: 1 + } + }, + 'POST': { + '/test/issue-boards/board/1/lists{/id}': listObj + }, + 'PUT': { + '/test/issue-boards/board/1/lists{/id}': {} + }, + 'DELETE': { + '/test/issue-boards/board/1/lists{/id}': {} + } +}; + +const boardsMockInterceptor = (request, next) => { + const body = BoardsMockData[request.method][request.url]; + + next(request.respondWith(JSON.stringify(body), { + status: 200 + })); +}; + +window.listObj = listObj; +window.listObjDuplicate = listObjDuplicate; +window.BoardsMockData = BoardsMockData; +window.boardsMockInterceptor = boardsMockInterceptor; diff --git a/spec/javascripts/boards/mock_data.js.es6 b/spec/javascripts/boards/mock_data.js.es6 deleted file mode 100644 index 7a399b307ad..00000000000 --- a/spec/javascripts/boards/mock_data.js.es6 +++ /dev/null @@ -1,63 +0,0 @@ -/* eslint-disable comma-dangle, no-unused-vars, quote-props */ - -const listObj = { - id: 1, - position: 0, - title: 'Test', - list_type: 'label', - label: { - id: 1, - title: 'Testing', - color: 'red', - description: 'testing;' - } -}; - -const listObjDuplicate = { - id: 2, - position: 1, - title: 'Test', - list_type: 'label', - label: { - id: 2, - title: 'Testing', - color: 'red', - description: 'testing;' - } -}; - -const BoardsMockData = { - 'GET': { - '/test/issue-boards/board/1/lists{/id}/issues': { - issues: [{ - title: 'Testing', - iid: 1, - confidential: false, - labels: [] - }], - size: 1 - } - }, - 'POST': { - '/test/issue-boards/board/1/lists{/id}': listObj - }, - 'PUT': { - '/test/issue-boards/board/1/lists{/id}': {} - }, - 'DELETE': { - '/test/issue-boards/board/1/lists{/id}': {} - } -}; - -const boardsMockInterceptor = (request, next) => { - const body = BoardsMockData[request.method][request.url]; - - next(request.respondWith(JSON.stringify(body), { - status: 200 - })); -}; - -window.listObj = listObj; -window.listObjDuplicate = listObjDuplicate; -window.BoardsMockData = BoardsMockData; -window.boardsMockInterceptor = boardsMockInterceptor; diff --git a/spec/javascripts/boards/modal_store_spec.js b/spec/javascripts/boards/modal_store_spec.js new file mode 100644 index 00000000000..1815847f3fa --- /dev/null +++ b/spec/javascripts/boards/modal_store_spec.js @@ -0,0 +1,132 @@ +/* global Vue */ +/* global ListIssue */ + +require('~/boards/models/issue'); +require('~/boards/models/label'); +require('~/boards/models/list'); +require('~/boards/models/user'); +require('~/boards/stores/modal_store'); + +describe('Modal store', () => { + let issue; + let issue2; + const Store = gl.issueBoards.ModalStore; + + beforeEach(() => { + // Setup default state + Store.store.issues = []; + Store.store.selectedIssues = []; + + issue = new ListIssue({ + title: 'Testing', + iid: 1, + confidential: false, + labels: [], + }); + issue2 = new ListIssue({ + title: 'Testing', + iid: 2, + confidential: false, + labels: [], + }); + Store.store.issues.push(issue); + Store.store.issues.push(issue2); + }); + + it('returns selected count', () => { + expect(Store.selectedCount()).toBe(0); + }); + + it('toggles the issue as selected', () => { + Store.toggleIssue(issue); + + expect(issue.selected).toBe(true); + expect(Store.selectedCount()).toBe(1); + }); + + it('toggles the issue as un-selected', () => { + Store.toggleIssue(issue); + Store.toggleIssue(issue); + + expect(issue.selected).toBe(false); + expect(Store.selectedCount()).toBe(0); + }); + + it('toggles all issues as selected', () => { + Store.toggleAll(); + + expect(issue.selected).toBe(true); + expect(issue2.selected).toBe(true); + expect(Store.selectedCount()).toBe(2); + }); + + it('toggles all issues as un-selected', () => { + Store.toggleAll(); + Store.toggleAll(); + + expect(issue.selected).toBe(false); + expect(issue2.selected).toBe(false); + expect(Store.selectedCount()).toBe(0); + }); + + it('toggles all if a single issue is selected', () => { + Store.toggleIssue(issue); + Store.toggleAll(); + + expect(issue.selected).toBe(true); + expect(issue2.selected).toBe(true); + expect(Store.selectedCount()).toBe(2); + }); + + it('adds issue to selected array', () => { + issue.selected = true; + Store.addSelectedIssue(issue); + + expect(Store.selectedCount()).toBe(1); + }); + + it('removes issue from selected array', () => { + Store.addSelectedIssue(issue); + Store.removeSelectedIssue(issue); + + expect(Store.selectedCount()).toBe(0); + }); + + it('returns selected issue index if present', () => { + Store.toggleIssue(issue); + + expect(Store.selectedIssueIndex(issue)).toBe(0); + }); + + it('returns -1 if issue is not selected', () => { + expect(Store.selectedIssueIndex(issue)).toBe(-1); + }); + + it('finds the selected issue', () => { + Store.toggleIssue(issue); + + expect(Store.findSelectedIssue(issue)).toBe(issue); + }); + + it('does not find a selected issue', () => { + expect(Store.findSelectedIssue(issue)).toBe(undefined); + }); + + it('does not remove from selected issue if tab is not all', () => { + Store.store.activeTab = 'selected'; + + Store.toggleIssue(issue); + Store.toggleIssue(issue); + + expect(Store.store.selectedIssues.length).toBe(1); + expect(Store.selectedCount()).toBe(0); + }); + + it('gets selected issue array with only selected issues', () => { + Store.toggleIssue(issue); + Store.toggleIssue(issue2); + Store.toggleIssue(issue2); + + expect(Store.getSelectedIssues().length).toBe(1); + }); +}); diff --git a/spec/javascripts/boards/modal_store_spec.js.es6 b/spec/javascripts/boards/modal_store_spec.js.es6 deleted file mode 100644 index 1815847f3fa..00000000000 --- a/spec/javascripts/boards/modal_store_spec.js.es6 +++ /dev/null @@ -1,132 +0,0 @@ -/* global Vue */ -/* global ListIssue */ - -require('~/boards/models/issue'); -require('~/boards/models/label'); -require('~/boards/models/list'); -require('~/boards/models/user'); -require('~/boards/stores/modal_store'); - -describe('Modal store', () => { - let issue; - let issue2; - const Store = gl.issueBoards.ModalStore; - - beforeEach(() => { - // Setup default state - Store.store.issues = []; - Store.store.selectedIssues = []; - - issue = new ListIssue({ - title: 'Testing', - iid: 1, - confidential: false, - labels: [], - }); - issue2 = new ListIssue({ - title: 'Testing', - iid: 2, - confidential: false, - labels: [], - }); - Store.store.issues.push(issue); - Store.store.issues.push(issue2); - }); - - it('returns selected count', () => { - expect(Store.selectedCount()).toBe(0); - }); - - it('toggles the issue as selected', () => { - Store.toggleIssue(issue); - - expect(issue.selected).toBe(true); - expect(Store.selectedCount()).toBe(1); - }); - - it('toggles the issue as un-selected', () => { - Store.toggleIssue(issue); - Store.toggleIssue(issue); - - expect(issue.selected).toBe(false); - expect(Store.selectedCount()).toBe(0); - }); - - it('toggles all issues as selected', () => { - Store.toggleAll(); - - expect(issue.selected).toBe(true); - expect(issue2.selected).toBe(true); - expect(Store.selectedCount()).toBe(2); - }); - - it('toggles all issues as un-selected', () => { - Store.toggleAll(); - Store.toggleAll(); - - expect(issue.selected).toBe(false); - expect(issue2.selected).toBe(false); - expect(Store.selectedCount()).toBe(0); - }); - - it('toggles all if a single issue is selected', () => { - Store.toggleIssue(issue); - Store.toggleAll(); - - expect(issue.selected).toBe(true); - expect(issue2.selected).toBe(true); - expect(Store.selectedCount()).toBe(2); - }); - - it('adds issue to selected array', () => { - issue.selected = true; - Store.addSelectedIssue(issue); - - expect(Store.selectedCount()).toBe(1); - }); - - it('removes issue from selected array', () => { - Store.addSelectedIssue(issue); - Store.removeSelectedIssue(issue); - - expect(Store.selectedCount()).toBe(0); - }); - - it('returns selected issue index if present', () => { - Store.toggleIssue(issue); - - expect(Store.selectedIssueIndex(issue)).toBe(0); - }); - - it('returns -1 if issue is not selected', () => { - expect(Store.selectedIssueIndex(issue)).toBe(-1); - }); - - it('finds the selected issue', () => { - Store.toggleIssue(issue); - - expect(Store.findSelectedIssue(issue)).toBe(issue); - }); - - it('does not find a selected issue', () => { - expect(Store.findSelectedIssue(issue)).toBe(undefined); - }); - - it('does not remove from selected issue if tab is not all', () => { - Store.store.activeTab = 'selected'; - - Store.toggleIssue(issue); - Store.toggleIssue(issue); - - expect(Store.store.selectedIssues.length).toBe(1); - expect(Store.selectedCount()).toBe(0); - }); - - it('gets selected issue array with only selected issues', () => { - Store.toggleIssue(issue); - Store.toggleIssue(issue2); - Store.toggleIssue(issue2); - - expect(Store.getSelectedIssues().length).toBe(1); - }); -}); -- cgit v1.2.1