Commit 1fb9de2b authored by blackst0ne's avatar blackst0ne

Change Done column to Closed in issue boards

parent 6eeba4b1
......@@ -79,7 +79,7 @@ $(() => {
resp.json().forEach((board) => {
const list = Store.addList(board);
if (list.type === 'done') {
if (list.type === 'closed') {
list.position = Infinity;
}
});
......
......@@ -48,7 +48,7 @@ import Vue from 'vue';
template: `
<div
class="block list"
v-if="list.type !== 'done'">
v-if="list.type !== 'closed'">
<button
class="btn btn-default btn-block"
type="button"
......
......@@ -10,7 +10,7 @@ class List {
this.position = obj.position;
this.title = obj.title;
this.type = obj.list_type;
this.preset = ['done', 'blank'].indexOf(this.type) > -1;
this.preset = ['closed', 'blank'].indexOf(this.type) > -1;
this.page = 1;
this.loading = true;
this.loadingMore = false;
......
......@@ -45,7 +45,7 @@ import Cookies from 'js-cookie';
},
shouldAddBlankState () {
// Decide whether to add the blank state
return !(this.state.lists.filter(list => list.type !== 'done')[0]);
return !(this.state.lists.filter(list => list.type !== 'closed')[0]);
},
addBlankState () {
if (!this.shouldAddBlankState() || this.welcomeIsHidden() || this.disabled) return;
......@@ -98,7 +98,7 @@ import Cookies from 'js-cookie';
issueTo.removeLabel(listFrom.label);
}
if (listTo.type === 'done') {
if (listTo.type === 'closed') {
issueLists.forEach((list) => {
list.removeIssue(issue);
});
......
......@@ -5,7 +5,7 @@ class Board < ActiveRecord::Base
validates :project, presence: true
def done_list
lists.merge(List.done).take
def closed_list
lists.merge(List.closed).take
end
end
......@@ -2,7 +2,7 @@ class List < ActiveRecord::Base
belongs_to :board
belongs_to :label
enum list_type: { label: 1, done: 2 }
enum list_type: { label: 1, closed: 2 }
validates :board, :list_type, presence: true
validates :label, :position, presence: true, if: :label?
......
......@@ -12,7 +12,7 @@ module Boards
def create_board!
board = project.boards.create
board.lists.create(list_type: :done)
board.lists.create(list_type: :closed)
board
end
......
......@@ -41,7 +41,7 @@ module Boards
end
def set_state
params[:state] = list && list.done? ? 'closed' : 'opened'
params[:state] = list && list.closed? ? 'closed' : 'opened'
end
def board_label_ids
......
......@@ -48,8 +48,8 @@ module Boards
end
def issue_state
return 'reopen' if moving_from_list.done?
return 'close' if moving_to_list.done?
return 'reopen' if moving_from_list.closed?
return 'close' if moving_to_list.closed?
end
def add_label_ids
......
......@@ -7,12 +7,12 @@
data: { container: "body", placement: "bottom" } }
{{ list.title }}
.board-issue-count-holder.pull-right.clearfix{ "v-if" => 'list.type !== "blank"' }
%span.board-issue-count.pull-left{ ":class" => '{ "has-btn": list.type !== "done" && !disabled }' }
%span.board-issue-count.pull-left{ ":class" => '{ "has-btn": list.type !== "closed" && !disabled }' }
{{ list.issuesSize }}
- if can?(current_user, :admin_issue, @project)
%button.btn.btn-small.btn-default.pull-right.has-tooltip{ type: "button",
"@click" => "showNewIssueForm",
"v-if" => 'list.type !== "done"',
"v-if" => 'list.type !== "closed"',
"aria-label" => "Add an issue",
"title" => "Add an issue",
data: { placement: "top", container: "body" } }
......
......@@ -3,7 +3,7 @@
= icon("spinner spin")
- if can? current_user, :create_issue, @project
%board-new-issue{ ":list" => "list",
"v-if" => 'list.type !== "done" && showIssueForm' }
"v-if" => 'list.type !== "closed" && showIssueForm' }
%ul.board-list{ "ref" => "list",
"v-show" => "!loading",
":data-board" => "list.id",
......
---
title: Change Done column to Closed in issue boards
merge_request: 10198
author: blackst0ne
......@@ -63,7 +63,7 @@ Example response:
## List board lists
Get a list of the board's lists.
Does not include `backlog` and `done` lists
Does not include `backlog` and `closed` lists
```
GET /projects/:id/boards/:board_id/lists
......
......@@ -3,7 +3,7 @@ FactoryGirl.define do
project factory: :empty_project
after(:create) do |board|
board.lists.create(list_type: :done)
board.lists.create(list_type: :closed)
end
end
end
......@@ -6,8 +6,8 @@ FactoryGirl.define do
sequence(:position)
end
factory :done_list, parent: :list do
list_type :done
factory :closed_list, parent: :list do
list_type :closed
label nil
position nil
end
......
......@@ -42,7 +42,7 @@ describe 'Issue Boards', feature: true, js: true do
end
it 'creates default lists' do
lists = ['To Do', 'Doing', 'Done']
lists = ['To Do', 'Doing', 'Closed']
page.within(find('.board-blank-state')) do
click_button('Add default lists')
......@@ -65,7 +65,7 @@ describe 'Issue Boards', feature: true, js: true do
let(:testing) { create(:label, project: project, name: 'Testing') }
let(:bug) { create(:label, project: project, name: 'Bug') }
let!(:backlog) { create(:label, project: project, name: 'Backlog') }
let!(:done) { create(:label, project: project, name: 'Done') }
let!(:closed) { create(:label, project: project, name: 'Closed') }
let!(:accepting) { create(:label, project: project, name: 'Accepting Merge Requests') }
let!(:list1) { create(:list, board: board, label: planning, position: 0) }
......@@ -114,7 +114,7 @@ describe 'Issue Boards', feature: true, js: true do
end
end
it 'search done list' do
it 'search closed list' do
find('.filtered-search').set(issue8.title)
find('.filtered-search').native.send_keys(:enter)
......@@ -186,13 +186,13 @@ describe 'Issue Boards', feature: true, js: true do
end
end
context 'done' do
it 'shows list of done issues' do
context 'closed' do
it 'shows list of closed issues' do
wait_for_board_cards(3, 1)
wait_for_ajax
end
it 'moves issue to done' do
it 'moves issue to closed' do
drag(list_from_index: 0, list_to_index: 2)
wait_for_board_cards(1, 7)
......@@ -205,7 +205,7 @@ describe 'Issue Boards', feature: true, js: true do
expect(find('.board:nth-child(3)')).not_to have_content(planning.title)
end
it 'removes all of the same issue to done' do
it 'removes all of the same issue to closed' do
drag(list_from_index: 0, list_to_index: 2)
wait_for_board_cards(1, 7)
......@@ -252,7 +252,7 @@ describe 'Issue Boards', feature: true, js: true do
expect(find('.board:nth-child(1)').all('.card').first).not_to have_content(planning.title)
end
it 'issue moves from done' do
it 'issue moves from closed' do
drag(list_from_index: 2, list_to_index: 1)
expect(find('.board:nth-child(2)')).to have_content(issue8.title)
......@@ -308,12 +308,12 @@ describe 'Issue Boards', feature: true, js: true do
expect(page).to have_selector('.board', count: 4)
end
it 'creates new list for Done label' do
it 'creates new list for Closed label' do
click_button 'Add list'
wait_for_ajax
page.within('.dropdown-menu-issues-board-new') do
click_link done.title
click_link closed.title
end
wait_for_vue_resource
......@@ -326,7 +326,7 @@ describe 'Issue Boards', feature: true, js: true do
wait_for_ajax
page.within('.dropdown-menu-issues-board-new') do
click_link done.title
click_link closed.title
end
wait_for_vue_resource
......
......@@ -25,7 +25,7 @@ describe 'Issue Boards new issue', feature: true, js: true do
expect(page).to have_selector('.board-issue-count-holder .btn', count: 1)
end
it 'does not display new issue button in done list' do
it 'does not display new issue button in closed list' do
page.within('.board:nth-child(2)') do
expect(page).not_to have_selector('.board-issue-count-holder .btn')
end
......
......@@ -10,7 +10,7 @@
"id": { "type": "integer" },
"list_type": {
"type": "string",
"enum": ["label", "done"]
"enum": ["label", "closed"]
},
"label": {
"type": ["object", "null"],
......
......@@ -106,9 +106,9 @@ describe('Store', () => {
expect(gl.issueBoards.BoardsStore.shouldAddBlankState()).toBe(false);
});
it('check for blank state adding when done list exist', () => {
it('check for blank state adding when closed list exist', () => {
gl.issueBoards.BoardsStore.addList({
list_type: 'done'
list_type: 'closed'
});
expect(gl.issueBoards.BoardsStore.shouldAddBlankState()).toBe(true);
......
......@@ -19,8 +19,8 @@ describe List do
expect(subject).to validate_uniqueness_of(:label_id).scoped_to(:board_id)
end
context 'when list_type is set to done' do
subject { described_class.new(list_type: :done) }
context 'when list_type is set to closed' do
subject { described_class.new(list_type: :closed) }
it { is_expected.not_to validate_presence_of(:label) }
it { is_expected.not_to validate_presence_of(:position) }
......@@ -34,8 +34,8 @@ describe List do
expect(subject.destroy).to be_truthy
end
it 'can not be destroyed when when list_type is set to done' do
subject = create(:done_list)
it 'can not be destroyed when when list_type is set to closed' do
subject = create(:closed_list)
expect(subject.destroy).to be_falsey
end
......@@ -48,8 +48,8 @@ describe List do
expect(subject).to be_destroyable
end
it 'returns false when list_type is set to done' do
subject.list_type = :done
it 'returns false when list_type is set to closed' do
subject.list_type = :closed
expect(subject).not_to be_destroyable
end
......@@ -62,8 +62,8 @@ describe List do
expect(subject).to be_movable
end
it 'returns false when list_type is set to done' do
subject.list_type = :done
it 'returns false when list_type is set to closed' do
subject.list_type = :closed
expect(subject).not_to be_movable
end
......@@ -77,10 +77,10 @@ describe List do
expect(subject.title).to eq 'Development'
end
it 'returns Done when list_type is set to done' do
subject.list_type = :done
it 'returns Closed when list_type is set to closed' do
subject.list_type = :closed
expect(subject.title).to eq 'Done'
expect(subject.title).to eq 'Closed'
end
end
end
......@@ -15,7 +15,7 @@ describe Boards::CreateService, services: true do
board = service.execute
expect(board.lists.size).to eq 1
expect(board.lists.first).to be_done
expect(board.lists.first).to be_closed
end
end
......
......@@ -15,7 +15,7 @@ describe Boards::Issues::ListService, services: true do
let!(:list1) { create(:list, board: board, label: development, position: 0) }
let!(:list2) { create(:list, board: board, label: testing, position: 1) }
let!(:done) { create(:done_list, board: board) }
let!(:closed) { create(:closed_list, board: board) }
let!(:opened_issue1) { create(:labeled_issue, project: project, labels: [bug]) }
let!(:opened_issue2) { create(:labeled_issue, project: project, labels: [p2]) }
......@@ -53,8 +53,8 @@ describe Boards::Issues::ListService, services: true do
expect(issues).to eq [opened_issue2, reopened_issue1, opened_issue1]
end
it 'returns closed issues when listing issues from Done' do
params = { board_id: board.id, id: done.id }
it 'returns closed issues when listing issues from Closed' do
params = { board_id: board.id, id: closed.id }
issues = described_class.new(project, user, params).execute
......
......@@ -12,7 +12,7 @@ describe Boards::Issues::MoveService, services: true do
let!(:list1) { create(:list, board: board1, label: development, position: 0) }
let!(:list2) { create(:list, board: board1, label: testing, position: 1) }
let!(:done) { create(:done_list, board: board1) }
let!(:closed) { create(:closed_list, board: board1) }
before do
project.team << [user, :developer]
......@@ -35,13 +35,13 @@ describe Boards::Issues::MoveService, services: true do
end
end
context 'when moving to done' do
context 'when moving to closed' do
let(:board2) { create(:board, project: project) }
let(:regression) { create(:label, project: project, name: 'Regression') }
let!(:list3) { create(:list, board: board2, label: regression, position: 1) }
let(:issue) { create(:labeled_issue, project: project, labels: [bug, development, testing, regression]) }
let(:params) { { board_id: board1.id, from_list_id: list2.id, to_list_id: done.id } }
let(:params) { { board_id: board1.id, from_list_id: list2.id, to_list_id: closed.id } }
it 'delegates the close proceedings to Issues::CloseService' do
expect_any_instance_of(Issues::CloseService).to receive(:execute).with(issue).once
......@@ -58,9 +58,9 @@ describe Boards::Issues::MoveService, services: true do
end
end
context 'when moving from done' do
context 'when moving from closed' do
let(:issue) { create(:labeled_issue, :closed, project: project, labels: [bug]) }
let(:params) { { board_id: board1.id, from_list_id: done.id, to_list_id: list2.id } }
let(:params) { { board_id: board1.id, from_list_id: closed.id, to_list_id: list2.id } }
it 'delegates the re-open proceedings to Issues::ReopenService' do
expect_any_instance_of(Issues::ReopenService).to receive(:execute).with(issue).once
......
......@@ -18,18 +18,18 @@ describe Boards::Lists::DestroyService, services: true do
development = create(:list, board: board, position: 0)
review = create(:list, board: board, position: 1)
staging = create(:list, board: board, position: 2)
done = board.done_list
closed = board.closed_list
described_class.new(project, user).execute(development)
expect(review.reload.position).to eq 0
expect(staging.reload.position).to eq 1
expect(done.reload.position).to be_nil
expect(closed.reload.position).to be_nil
end
end
it 'does not remove list from board when list type is done' do
list = board.done_list
it 'does not remove list from board when list type is closed' do
list = board.closed_list
service = described_class.new(project, user)
expect { service.execute(list) }.not_to change(board.lists, :count)
......
......@@ -10,7 +10,7 @@ describe Boards::Lists::ListService, services: true do
service = described_class.new(project, double)
expect(service.execute(board)).to eq [list, board.done_list]
expect(service.execute(board)).to eq [list, board.closed_list]
end
end
end
......@@ -10,7 +10,7 @@ describe Boards::Lists::MoveService, services: true do
let!(:development) { create(:list, board: board, position: 1) }
let!(:review) { create(:list, board: board, position: 2) }
let!(:staging) { create(:list, board: board, position: 3) }
let!(:done) { create(:done_list, board: board) }
let!(:closed) { create(:closed_list, board: board) }
context 'when list type is set to label' do
it 'keeps position of lists when new position is nil' do
......@@ -86,10 +86,10 @@ describe Boards::Lists::MoveService, services: true do
end
end
it 'keeps position of lists when list type is done' do
it 'keeps position of lists when list type is closed' do
service = described_class.new(project, user, position: 2)
service.execute(done)
service.execute(closed)
expect(current_list_positions).to eq [0, 1, 2, 3]
end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment