troo 0.0.8 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +3 -1
- data/.ruby-version +1 -1
- data/.trooconf.example +18 -0
- data/Gemfile.lock +178 -0
- data/README.md +77 -21
- data/Rakefile +1 -1
- data/bin/completion.bash +10 -0
- data/bin/completion.zsh +10 -0
- data/bin/init.sh +15 -0
- data/bin/troo +12 -3
- data/config/cucumber.yml +3 -3
- data/config/en.yml +29 -0
- data/config/trello_api.yml +19 -0
- data/features/add/board.feature +3 -19
- data/features/add/card.feature +14 -18
- data/features/add/comment.feature +14 -14
- data/features/add/list.feature +11 -14
- data/features/default/board.feature +4 -4
- data/features/default/card.feature +4 -4
- data/features/default/list.feature +4 -4
- data/features/move/card.feature +54 -0
- data/features/refresh/all.feature +8 -4
- data/features/refresh/board.feature +9 -6
- data/features/refresh/card.feature +9 -6
- data/features/refresh/list.feature +9 -6
- data/features/show/board.feature +7 -7
- data/features/show/boards.feature +19 -0
- data/features/show/card.feature +86 -15
- data/features/show/comment.feature +14 -12
- data/features/show/list.feature +19 -14
- data/features/status.feature +27 -13
- data/features/step_definitions/fabrication_steps.rb +43 -8
- data/features/step_definitions/troo_steps.rb +3 -2
- data/features/support/env.rb +1 -0
- data/features/troo.feature +0 -12
- data/lib/troo.rb +32 -29
- data/lib/troo/api/client.rb +117 -0
- data/lib/troo/api/endpoints.rb +39 -0
- data/lib/troo/api/headers.rb +44 -0
- data/lib/troo/api/oauth_settings.rb +36 -0
- data/lib/troo/api/request.rb +37 -0
- data/lib/troo/api/response.rb +31 -0
- data/lib/troo/cli/add.rb +8 -12
- data/lib/troo/cli/commands/add.rb +95 -0
- data/lib/troo/cli/commands/default.rb +44 -0
- data/lib/troo/cli/commands/move/card.rb +95 -0
- data/lib/troo/cli/commands/refresh.rb +80 -0
- data/lib/troo/cli/commands/refresh/all.rb +52 -0
- data/lib/troo/cli/commands/show.rb +56 -0
- data/lib/troo/cli/commands/show/show_boards.rb +36 -0
- data/lib/troo/cli/commands/show/show_comments.rb +54 -0
- data/lib/troo/cli/commands/status.rb +68 -0
- data/lib/troo/cli/default.rb +3 -3
- data/lib/troo/cli/main.rb +60 -9
- data/lib/troo/cli/refresh.rb +4 -4
- data/lib/troo/cli/show.rb +7 -7
- data/lib/troo/cli/thor_fixes.rb +1 -5
- data/lib/troo/configuration.rb +53 -0
- data/lib/troo/debug.rb +18 -0
- data/lib/troo/decorators/member.rb +2 -19
- data/lib/troo/decorators/resource.rb +130 -0
- data/lib/troo/helpers/decorator_helpers.rb +21 -74
- data/lib/troo/helpers/model_helpers.rb +19 -4
- data/lib/troo/helpers/remote_model_helpers.rb +54 -0
- data/lib/troo/models/board.rb +19 -11
- data/lib/troo/models/card.rb +20 -17
- data/lib/troo/models/comment.rb +28 -8
- data/lib/troo/models/list.rb +22 -14
- data/lib/troo/models/member.rb +21 -5
- data/lib/troo/models/refresh.rb +3 -4
- data/lib/troo/persistence/local.rb +63 -0
- data/lib/troo/presentation/formatter.rb +132 -0
- data/lib/troo/presentation/template.rb +0 -4
- data/lib/troo/presenters/board.rb +32 -51
- data/lib/troo/presenters/card.rb +4 -11
- data/lib/troo/presenters/comment.rb +30 -16
- data/lib/troo/presenters/list.rb +25 -21
- data/lib/troo/presenters/member.rb +1 -8
- data/lib/troo/remote/all.rb +16 -0
- data/lib/troo/remote/board.rb +64 -0
- data/lib/troo/remote/card.rb +81 -0
- data/lib/troo/remote/comment.rb +70 -0
- data/lib/troo/remote/comment_data.rb +11 -0
- data/lib/troo/remote/comment_data_board.rb +13 -0
- data/lib/troo/remote/comment_data_card.rb +15 -0
- data/lib/troo/remote/list.rb +49 -0
- data/lib/troo/remote/member.rb +75 -0
- data/lib/troo/remote/persistence/board.rb +57 -0
- data/lib/troo/remote/persistence/card.rb +59 -0
- data/lib/troo/remote/persistence/comment.rb +58 -0
- data/lib/troo/remote/persistence/list.rb +57 -0
- data/lib/troo/remote/persistence/move_card.rb +85 -0
- data/lib/troo/retrieval/local.rb +100 -0
- data/lib/troo/retrieval/remote.rb +91 -0
- data/lib/troo/troo.rb +42 -42
- data/lib/troo/version.rb +1 -1
- data/lib/troo/views/card.erb +8 -10
- data/lib/troo/views/comments.erb +4 -0
- data/test/cassettes/board_by_id.yml +21 -30
- data/test/cassettes/boards_all.yml +22 -90
- data/test/cassettes/card_by_id.yml +49 -0
- data/test/cassettes/cards_by_board_id.yml +22 -90
- data/test/cassettes/cards_by_list_id.yml +22 -87
- data/test/cassettes/comments_by_board_id.yml +22 -95
- data/test/cassettes/comments_by_card_id.yml +22 -87
- data/test/cassettes/create_board.yml +20 -32
- data/test/cassettes/create_card.yml +21 -35
- data/test/cassettes/create_comment.yml +19 -37
- data/test/cassettes/create_list.yml +18 -32
- data/test/cassettes/list_by_id.yml +46 -0
- data/test/cassettes/lists_by_board_id.yml +19 -91
- data/test/cassettes/member_by_id.yml +48 -0
- data/test/cassettes/members_by_board_id.yml +21 -82
- data/test/cassettes/move_card_board.yml +49 -0
- data/test/cassettes/move_card_list.yml +49 -0
- data/test/lib/troo/api/client_test.rb +75 -0
- data/test/lib/troo/api/endpoints_test.rb +48 -0
- data/test/lib/troo/api/headers_test.rb +27 -0
- data/test/lib/troo/api/oauth_settings_test.rb +10 -0
- data/test/lib/troo/api/request_test.rb +63 -0
- data/test/lib/troo/api/response_test.rb +15 -0
- data/test/lib/troo/cli/add_test.rb +113 -0
- data/test/lib/troo/cli/commands/add_test.rb +66 -0
- data/test/lib/troo/cli/commands/default_test.rb +39 -0
- data/test/lib/troo/cli/commands/move/card_test.rb +86 -0
- data/test/lib/troo/cli/commands/refresh/all_test.rb +37 -0
- data/test/lib/troo/cli/commands/refresh_test.rb +59 -0
- data/test/lib/troo/cli/commands/show/show_boards_test.rb +35 -0
- data/test/lib/troo/cli/commands/show/show_comments_test.rb +63 -0
- data/test/lib/troo/cli/commands/show_test.rb +65 -0
- data/test/lib/troo/cli/commands/status_test.rb +48 -0
- data/test/lib/troo/cli/default_test.rb +39 -0
- data/test/lib/troo/cli/main_test.rb +102 -0
- data/test/lib/troo/cli/refresh_test.rb +43 -0
- data/test/lib/troo/cli/show_test.rb +49 -0
- data/test/lib/troo/cli/thor_fixes_test.rb +38 -0
- data/test/lib/troo/configuration_test.rb +43 -0
- data/test/lib/troo/debug_test.rb +25 -0
- data/test/lib/troo/decorators/card_test.rb +105 -229
- data/test/lib/troo/decorators/member_test.rb +20 -35
- data/test/lib/troo/decorators/resource_test.rb +157 -0
- data/test/lib/troo/helpers/decorator_helpers_test.rb +10 -19
- data/test/lib/troo/helpers/model_helpers_test.rb +18 -8
- data/test/lib/troo/helpers/remote_model_helpers_test.rb +68 -0
- data/test/lib/troo/models/behaviours/set_default_test.rb +0 -10
- data/test/lib/troo/models/board_test.rb +2 -2
- data/test/lib/troo/models/card_test.rb +2 -2
- data/test/lib/troo/models/comment_test.rb +6 -2
- data/test/lib/troo/models/list_test.rb +2 -2
- data/test/lib/troo/models/member_test.rb +6 -2
- data/test/lib/troo/persistence/local_test.rb +31 -0
- data/test/lib/troo/presentation/formatter_test.rb +31 -0
- data/test/lib/troo/presentation/sentence_test.rb +0 -12
- data/test/lib/troo/presentation/template_test.rb +1 -14
- data/test/lib/troo/presenters/board_test.rb +17 -36
- data/test/lib/troo/presenters/card_test.rb +1 -31
- data/test/lib/troo/presenters/comment_test.rb +19 -19
- data/test/lib/troo/presenters/list_test.rb +18 -18
- data/test/lib/troo/presenters/member_test.rb +1 -14
- data/test/lib/troo/remote/board_test.rb +66 -0
- data/test/lib/troo/remote/card_test.rb +81 -0
- data/test/lib/troo/remote/comment_data_board.rb +9 -0
- data/test/lib/troo/remote/comment_data_card_test.rb +9 -0
- data/test/lib/troo/remote/comment_data_test.rb +9 -0
- data/test/lib/troo/remote/comment_test.rb +100 -0
- data/test/lib/troo/remote/list_test.rb +67 -0
- data/test/lib/troo/remote/member_test.rb +70 -0
- data/test/lib/troo/remote/persistence/board_test.rb +39 -0
- data/test/lib/troo/remote/persistence/card_test.rb +50 -0
- data/test/lib/troo/remote/persistence/comment_test.rb +45 -0
- data/test/lib/troo/remote/persistence/list_test.rb +45 -0
- data/test/lib/troo/remote/persistence/move_card_test.rb +78 -0
- data/test/lib/troo/retrieval/local_test.rb +192 -0
- data/test/lib/troo/retrieval/remote_test.rb +49 -0
- data/test/support/fabrication.rb +17 -17
- data/test/support/fake_trello/fake_response.rb +38 -0
- data/test/support/fake_trello/server.rb +124 -0
- data/test/support/remotes/all_boards.json +41 -0
- data/test/support/remotes/board.json +140 -0
- data/test/support/remotes/board_by_id.json +75 -0
- data/test/support/remotes/card.json +40 -0
- data/test/support/remotes/card_by_card_id.json +302 -0
- data/test/support/remotes/comment.json +27 -0
- data/test/support/remotes/create_board.json +38 -0
- data/test/support/remotes/list.json +7 -0
- data/test/support/remotes/member.json +50 -0
- data/test/system_test.sh +21 -1
- data/test/test_helper.rb +2 -1
- data/troo.gemspec +28 -20
- metadata +376 -269
- data/configuration.yml.example +0 -7
- data/features/cleanup.feature +0 -13
- data/lib/troo/actions/create_board.rb +0 -46
- data/lib/troo/actions/create_card.rb +0 -44
- data/lib/troo/actions/create_comment.rb +0 -46
- data/lib/troo/actions/create_list.rb +0 -42
- data/lib/troo/actions/move_card.rb +0 -37
- data/lib/troo/adaptors/board.rb +0 -32
- data/lib/troo/adaptors/card.rb +0 -67
- data/lib/troo/adaptors/comment.rb +0 -42
- data/lib/troo/adaptors/list.rb +0 -37
- data/lib/troo/adaptors/member.rb +0 -52
- data/lib/troo/adaptors/resource.rb +0 -17
- data/lib/troo/commands/add/board.rb +0 -26
- data/lib/troo/commands/add/card.rb +0 -33
- data/lib/troo/commands/add/comment.rb +0 -33
- data/lib/troo/commands/add/list.rb +0 -33
- data/lib/troo/commands/add/resource.rb +0 -21
- data/lib/troo/commands/commands.rb +0 -28
- data/lib/troo/commands/default/board.rb +0 -25
- data/lib/troo/commands/default/card.rb +0 -25
- data/lib/troo/commands/default/list.rb +0 -25
- data/lib/troo/commands/default/resource.rb +0 -26
- data/lib/troo/commands/refresh/all.rb +0 -41
- data/lib/troo/commands/refresh/board.rb +0 -28
- data/lib/troo/commands/refresh/card.rb +0 -29
- data/lib/troo/commands/refresh/list.rb +0 -29
- data/lib/troo/commands/refresh/resource.rb +0 -42
- data/lib/troo/commands/show/board.rb +0 -13
- data/lib/troo/commands/show/boards.rb +0 -35
- data/lib/troo/commands/show/card.rb +0 -13
- data/lib/troo/commands/show/comments.rb +0 -21
- data/lib/troo/commands/show/list.rb +0 -13
- data/lib/troo/commands/show/resource.rb +0 -41
- data/lib/troo/commands/status/board.rb +0 -30
- data/lib/troo/commands/status/card.rb +0 -30
- data/lib/troo/commands/status/list.rb +0 -30
- data/lib/troo/commands/status/resource.rb +0 -34
- data/lib/troo/decorators/board.rb +0 -66
- data/lib/troo/decorators/card.rb +0 -105
- data/lib/troo/decorators/comment.rb +0 -36
- data/lib/troo/decorators/list.rb +0 -60
- data/lib/troo/external/board.rb +0 -31
- data/lib/troo/external/card.rb +0 -31
- data/lib/troo/external/comment.rb +0 -27
- data/lib/troo/external/list.rb +0 -27
- data/lib/troo/external/member.rb +0 -27
- data/lib/troo/external/resource.rb +0 -42
- data/lib/troo/helpers/command_helpers.rb +0 -37
- data/lib/troo/models/persistence/board.rb +0 -19
- data/lib/troo/models/persistence/card.rb +0 -19
- data/lib/troo/models/persistence/comment.rb +0 -19
- data/lib/troo/models/persistence/list.rb +0 -19
- data/lib/troo/models/persistence/member.rb +0 -19
- data/lib/troo/models/persistence/resource.rb +0 -50
- data/lib/troo/models/remote/comment.rb +0 -21
- data/lib/troo/models/remote/resource.rb +0 -25
- data/lib/troo/models/retrieval/board.rb +0 -29
- data/lib/troo/models/retrieval/card.rb +0 -33
- data/lib/troo/models/retrieval/comment.rb +0 -25
- data/lib/troo/models/retrieval/list.rb +0 -29
- data/lib/troo/models/retrieval/member.rb +0 -25
- data/lib/troo/models/retrieval/resource.rb +0 -36
- data/lib/troo/views/comment.erb +0 -3
- data/test/cassettes/card_by_card_id.yml +0 -58
- data/test/cassettes/comments_by_list_id.yml +0 -109
- data/test/cassettes/list_by_list_id.yml +0 -56
- data/test/cassettes/member_by_member_id.yml +0 -60
- data/test/cassettes/move_card.yml +0 -61
- data/test/lib/troo/actions/create_board_test.rb +0 -66
- data/test/lib/troo/actions/create_card_test.rb +0 -71
- data/test/lib/troo/actions/create_comment_test.rb +0 -71
- data/test/lib/troo/actions/create_list_test.rb +0 -65
- data/test/lib/troo/actions/move_card_test.rb +0 -54
- data/test/lib/troo/adaptors/board_test.rb +0 -38
- data/test/lib/troo/adaptors/card_test.rb +0 -49
- data/test/lib/troo/adaptors/comment_test.rb +0 -41
- data/test/lib/troo/adaptors/list_test.rb +0 -38
- data/test/lib/troo/adaptors/member_test.rb +0 -44
- data/test/lib/troo/commands/add/board_test.rb +0 -43
- data/test/lib/troo/commands/add/card_test.rb +0 -44
- data/test/lib/troo/commands/add/comment_test.rb +0 -44
- data/test/lib/troo/commands/add/list_test.rb +0 -44
- data/test/lib/troo/commands/add/resource_test.rb +0 -25
- data/test/lib/troo/commands/default/board_test.rb +0 -37
- data/test/lib/troo/commands/default/card_test.rb +0 -37
- data/test/lib/troo/commands/default/list_test.rb +0 -37
- data/test/lib/troo/commands/default/resource_test.rb +0 -20
- data/test/lib/troo/commands/refresh/all_test.rb +0 -39
- data/test/lib/troo/commands/refresh/board_test.rb +0 -62
- data/test/lib/troo/commands/refresh/card_test.rb +0 -62
- data/test/lib/troo/commands/refresh/list_test.rb +0 -62
- data/test/lib/troo/commands/refresh/resource_test.rb +0 -20
- data/test/lib/troo/commands/show/board_test.rb +0 -65
- data/test/lib/troo/commands/show/boards_test.rb +0 -36
- data/test/lib/troo/commands/show/card_test.rb +0 -64
- data/test/lib/troo/commands/show/comments_test.rb +0 -64
- data/test/lib/troo/commands/show/list_test.rb +0 -64
- data/test/lib/troo/commands/show/resource_test.rb +0 -25
- data/test/lib/troo/commands/status/board_test.rb +0 -43
- data/test/lib/troo/commands/status/card_test.rb +0 -43
- data/test/lib/troo/commands/status/list_test.rb +0 -43
- data/test/lib/troo/commands/status/resource_test.rb +0 -19
- data/test/lib/troo/decorators/board_test.rb +0 -129
- data/test/lib/troo/decorators/comment_test.rb +0 -74
- data/test/lib/troo/decorators/list_test.rb +0 -102
- data/test/lib/troo/external/board_test.rb +0 -102
- data/test/lib/troo/external/card_test.rb +0 -131
- data/test/lib/troo/external/comment_test.rb +0 -109
- data/test/lib/troo/external/list_test.rb +0 -94
- data/test/lib/troo/external/member_test.rb +0 -94
- data/test/lib/troo/external/resource_test.rb +0 -25
- data/test/lib/troo/helpers/command_helpers_test.rb +0 -82
- data/test/lib/troo/models/persistence/board_test.rb +0 -62
- data/test/lib/troo/models/persistence/card_test.rb +0 -61
- data/test/lib/troo/models/persistence/comment_test.rb +0 -69
- data/test/lib/troo/models/persistence/list_test.rb +0 -60
- data/test/lib/troo/models/persistence/member_test.rb +0 -60
- data/test/lib/troo/models/remote/comment_test.rb +0 -56
- data/test/lib/troo/models/remote/resource_test.rb +0 -26
- data/test/lib/troo/models/retrieval/board_test.rb +0 -93
- data/test/lib/troo/models/retrieval/card_test.rb +0 -101
- data/test/lib/troo/models/retrieval/comment_test.rb +0 -46
- data/test/lib/troo/models/retrieval/list_test.rb +0 -93
- data/test/lib/troo/models/retrieval/member_test.rb +0 -58
@@ -0,0 +1,63 @@
|
|
1
|
+
require_relative '../../../../../test_helper'
|
2
|
+
|
3
|
+
module Troo
|
4
|
+
module Commands
|
5
|
+
describe ShowComments do
|
6
|
+
let(:described_class) { ShowComments }
|
7
|
+
let(:type) { :comments }
|
8
|
+
let(:id) { '1' }
|
9
|
+
let(:default) { false }
|
10
|
+
let(:resource) {}
|
11
|
+
let(:presenter) { stub }
|
12
|
+
|
13
|
+
before do
|
14
|
+
API::Client.stubs(:perform)
|
15
|
+
@card = Fabricate.build(:card, default: default)
|
16
|
+
Troo::Card.stubs(:retrieve).returns(resource)
|
17
|
+
Presenters::Comment.stubs(:new).returns(presenter)
|
18
|
+
presenter.stubs(:show).returns(@card.name)
|
19
|
+
end
|
20
|
+
|
21
|
+
after { database_cleanup }
|
22
|
+
|
23
|
+
describe '.dispatch' do
|
24
|
+
subject { described_class.dispatch(id) }
|
25
|
+
|
26
|
+
context 'when a resource ID is provided' do
|
27
|
+
context 'and the resource exists' do
|
28
|
+
let(:resource) { @card }
|
29
|
+
|
30
|
+
it 'presents the comments' do
|
31
|
+
subject.must_match(/#{@card.name}/)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
context 'but the resource does not exist' do
|
36
|
+
it 'returns a polite message' do
|
37
|
+
subject.must_match(/Card cannot be found/)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context 'when a resource ID is not provided' do
|
43
|
+
let(:id) {}
|
44
|
+
|
45
|
+
context 'and a default resource is set' do
|
46
|
+
let(:default) { true }
|
47
|
+
let(:resource) { @card }
|
48
|
+
|
49
|
+
it 'presents the comments' do
|
50
|
+
subject.must_match(/#{@card.name}/)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
context 'and a default resource is not set' do
|
55
|
+
it 'returns a polite message' do
|
56
|
+
subject.must_match(/to set a default card first/)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require_relative '../../../../test_helper'
|
2
|
+
|
3
|
+
module Troo
|
4
|
+
module Commands
|
5
|
+
describe Show do
|
6
|
+
let(:described_class) { Show }
|
7
|
+
let(:klass) { stub(type: :resource_type) }
|
8
|
+
let(:id) {}
|
9
|
+
let(:type) { :card }
|
10
|
+
let(:id) { '1' }
|
11
|
+
let(:default) { false }
|
12
|
+
let(:resource) {}
|
13
|
+
let(:presenter) { stub }
|
14
|
+
|
15
|
+
before do
|
16
|
+
API::Client.stubs(:perform)
|
17
|
+
@card = Fabricate.build(:card, default: default)
|
18
|
+
klass.stubs(:retrieve).returns(resource)
|
19
|
+
Presenters::Card.stubs(:new).returns(presenter)
|
20
|
+
presenter.stubs(:show).returns(@card.name)
|
21
|
+
end
|
22
|
+
|
23
|
+
after { database_cleanup }
|
24
|
+
|
25
|
+
describe '.dispatch' do
|
26
|
+
subject { described_class.dispatch(klass, id) }
|
27
|
+
|
28
|
+
context 'when a resource ID is provided' do
|
29
|
+
context 'and the resource exists' do
|
30
|
+
let(:resource) { @card }
|
31
|
+
|
32
|
+
it 'presents the cards' do
|
33
|
+
subject.must_match(/#{@card.name}/)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'but the resource does not exist' do
|
38
|
+
it 'returns a polite message' do
|
39
|
+
subject.must_match(/cannot be found/)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context 'when a resource ID is not provided' do
|
45
|
+
let(:id) {}
|
46
|
+
|
47
|
+
context 'and a default resource is set' do
|
48
|
+
let(:default) { true }
|
49
|
+
let(:resource) { @card }
|
50
|
+
|
51
|
+
it 'presents the cards' do
|
52
|
+
subject.must_match(/#{@card.name}/)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'and a default resource is not set' do
|
57
|
+
it 'returns a polite message' do
|
58
|
+
subject.must_match(/to set a default/)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require_relative '../../../../test_helper'
|
2
|
+
|
3
|
+
module Troo
|
4
|
+
module Commands
|
5
|
+
describe Status do
|
6
|
+
let(:described_class) { Status }
|
7
|
+
let(:klass) { Troo::Board }
|
8
|
+
let(:default) { true }
|
9
|
+
|
10
|
+
before { API::Client.stubs(:perform) }
|
11
|
+
|
12
|
+
describe '.dispatch' do
|
13
|
+
subject { described_class.dispatch(klass) }
|
14
|
+
|
15
|
+
before { @board = Fabricate(:board, default: default) }
|
16
|
+
after { database_cleanup }
|
17
|
+
|
18
|
+
context 'when a default is set' do
|
19
|
+
it 'returns a polite message' do
|
20
|
+
subject.must_match(/1 board found/)
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'returns the name of the resource' do
|
24
|
+
subject.must_match(/My Test Board/)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'when no default is set' do
|
29
|
+
let(:default) { false }
|
30
|
+
|
31
|
+
context 'and the resource exists' do
|
32
|
+
it 'returns a polite message' do
|
33
|
+
subject.must_match(/No default board set/)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'and no resources exist' do
|
38
|
+
before { klass.stubs(:count).returns(0) }
|
39
|
+
|
40
|
+
it 'returns a polite message' do
|
41
|
+
subject.must_match(/No boards found/)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require_relative '../../../test_helper'
|
2
|
+
|
3
|
+
module Troo
|
4
|
+
module CLI
|
5
|
+
describe Default do
|
6
|
+
let(:described_class) { Default }
|
7
|
+
|
8
|
+
describe '#board' do
|
9
|
+
let(:id) {}
|
10
|
+
|
11
|
+
subject { capture_io { described_class.new.board(id) }.join }
|
12
|
+
|
13
|
+
it 'returns the output of the command' do
|
14
|
+
subject.must_match(/Board cannot be found/)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#card' do
|
19
|
+
let(:id) {}
|
20
|
+
|
21
|
+
subject { capture_io { described_class.new.card(id) }.join }
|
22
|
+
|
23
|
+
it 'returns the output of the command' do
|
24
|
+
subject.must_match(/Card cannot be found/)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#list' do
|
29
|
+
let(:id) {}
|
30
|
+
|
31
|
+
subject { capture_io { described_class.new.list(id) }.join }
|
32
|
+
|
33
|
+
it 'returns the output of the command' do
|
34
|
+
subject.must_match(/List cannot be found/)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
require_relative '../../../test_helper'
|
2
|
+
|
3
|
+
module Troo
|
4
|
+
module CLI
|
5
|
+
describe Main do
|
6
|
+
let(:described_class) { Main }
|
7
|
+
|
8
|
+
describe '#init' do
|
9
|
+
let(:exists) { false }
|
10
|
+
|
11
|
+
before do
|
12
|
+
File.stubs(:exist?).returns(exists)
|
13
|
+
FileUtils.stubs(:cp)
|
14
|
+
end
|
15
|
+
|
16
|
+
subject { capture_io { described_class.new.init }.join }
|
17
|
+
|
18
|
+
context 'when a configuration file exists' do
|
19
|
+
let(:exists) { true }
|
20
|
+
|
21
|
+
it 'returns the output of the command' do
|
22
|
+
subject.must_match(/already exists/)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'when a configuration file does not exist' do
|
27
|
+
it 'returns the output of the command' do
|
28
|
+
subject.must_match(/does not exist/)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe '#status' do
|
34
|
+
before { Commands::Status.stubs(:dispatch) }
|
35
|
+
|
36
|
+
subject { capture_io { described_class.new.status }.join }
|
37
|
+
|
38
|
+
it 'returns the output of the command' do
|
39
|
+
subject.must_match(/Status/)
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'returns the last refresh time' do
|
43
|
+
subject.must_match(/Last refreshed/)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe '#config' do
|
48
|
+
subject { capture_io { described_class.new.config }.join }
|
49
|
+
|
50
|
+
it 'returns the current configuration' do
|
51
|
+
subject.must_match(/Current configuration/)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe '#cleanup' do
|
56
|
+
let(:confirm) { "y\n" }
|
57
|
+
|
58
|
+
before { $stdin.stubs(:gets).returns(confirm) }
|
59
|
+
|
60
|
+
subject { capture_io { described_class.new.cleanup }.join }
|
61
|
+
|
62
|
+
context 'when the user confirms the operation' do
|
63
|
+
it 'returns the output of the command' do
|
64
|
+
subject.must_match(/All local data has been removed/)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
context 'when the user cancels the operation' do
|
69
|
+
let(:confirm) { "n\n" }
|
70
|
+
|
71
|
+
it 'returns the output of the command' do
|
72
|
+
subject.must_match(/No local data has been removed/)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe '#version' do
|
78
|
+
subject { capture_io { described_class.new.version }.join }
|
79
|
+
|
80
|
+
it 'returns the output of the command' do
|
81
|
+
subject.must_match(/#{Troo::VERSION}/)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
describe '#move' do
|
86
|
+
let(:card_id) {}
|
87
|
+
let(:list_id) {}
|
88
|
+
let(:board_id) {}
|
89
|
+
|
90
|
+
subject do
|
91
|
+
capture_io do
|
92
|
+
described_class.new.move(card_id, list_id, board_id)
|
93
|
+
end.join
|
94
|
+
end
|
95
|
+
|
96
|
+
it 'returns the output of the command' do
|
97
|
+
subject.must_match(/Card cannot be found/)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require_relative '../../../test_helper'
|
2
|
+
|
3
|
+
module Troo
|
4
|
+
module CLI
|
5
|
+
describe Refresh do
|
6
|
+
let(:described_class) { Refresh }
|
7
|
+
|
8
|
+
describe '#all' do
|
9
|
+
before { Retrieval::Remote.stubs(:fetch).returns([]) }
|
10
|
+
|
11
|
+
subject { capture_io { described_class.new.all }.join }
|
12
|
+
|
13
|
+
it 'returns the output of the command' do
|
14
|
+
subject.must_match(/Cannot refresh all local data/)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#board' do
|
19
|
+
subject { capture_io { described_class.new.board }.join }
|
20
|
+
|
21
|
+
it 'returns the output of the command' do
|
22
|
+
subject.must_match(/Board cannot be found/)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe '#card' do
|
27
|
+
subject { capture_io { described_class.new.card }.join }
|
28
|
+
|
29
|
+
it 'returns the output of the command' do
|
30
|
+
subject.must_match(/Card cannot be found/)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe '#list' do
|
35
|
+
subject { capture_io { described_class.new.list }.join }
|
36
|
+
|
37
|
+
it 'returns the output of the command' do
|
38
|
+
subject.must_match(/List cannot be found/)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require_relative '../../../test_helper'
|
2
|
+
|
3
|
+
module Troo
|
4
|
+
module CLI
|
5
|
+
describe Show do
|
6
|
+
let(:described_class) { Show }
|
7
|
+
|
8
|
+
describe '#boards' do
|
9
|
+
subject { capture_io { described_class.new.boards }.join }
|
10
|
+
|
11
|
+
it 'returns the output of the command' do
|
12
|
+
subject.must_match(/Boards cannot be found/)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '#board' do
|
17
|
+
subject { capture_io { described_class.new.board }.join }
|
18
|
+
|
19
|
+
it 'returns the output of the command' do
|
20
|
+
subject.must_match(/Board cannot be found/)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe '#list' do
|
25
|
+
subject { capture_io { described_class.new.list }.join }
|
26
|
+
|
27
|
+
it 'returns the output of the command' do
|
28
|
+
subject.must_match(/List cannot be found/)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '#card' do
|
33
|
+
subject { capture_io { described_class.new.card }.join }
|
34
|
+
|
35
|
+
it 'returns the output of the command' do
|
36
|
+
subject.must_match(/Card cannot be found/)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '#comments' do
|
41
|
+
subject { capture_io { described_class.new.comments }.join }
|
42
|
+
|
43
|
+
it 'returns the output of the command' do
|
44
|
+
subject.must_match(/Card cannot be found/)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require_relative '../../../test_helper'
|
2
|
+
|
3
|
+
module Troo
|
4
|
+
module CLI
|
5
|
+
describe ThorFixes do
|
6
|
+
let(:described_class) { ThorFixes }
|
7
|
+
let(:command) { stub(usage: 'usage') }
|
8
|
+
let(:namespace) {}
|
9
|
+
let(:subcommand) {}
|
10
|
+
let(:package_name) {}
|
11
|
+
|
12
|
+
describe '.banner' do
|
13
|
+
before do
|
14
|
+
described_class
|
15
|
+
.instance_variable_set('@package_name', package_name)
|
16
|
+
end
|
17
|
+
|
18
|
+
subject do
|
19
|
+
described_class.banner(command, namespace, subcommand)
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'when executing a subcommand' do
|
23
|
+
let(:package_name) { 'show' }
|
24
|
+
|
25
|
+
it 'package_name has a leading space' do
|
26
|
+
subject.must_match(/show usage/)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'when executing a top-level command' do
|
31
|
+
it 'package_name does not have a leading space' do
|
32
|
+
subject.must_match(/\s{1}usage/)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|