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,15 @@
|
|
1
|
+
require_relative '../../../test_helper'
|
2
|
+
|
3
|
+
module Troo
|
4
|
+
module API
|
5
|
+
describe Response do
|
6
|
+
let(:described_class) { Response }
|
7
|
+
let(:parameters) { {} }
|
8
|
+
end
|
9
|
+
|
10
|
+
describe ErrorResponse do
|
11
|
+
let(:described_class) { ErrorResponse }
|
12
|
+
let(:parameters) { {} }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
require_relative '../../../test_helper'
|
2
|
+
|
3
|
+
module Troo
|
4
|
+
module CLI
|
5
|
+
describe Add do
|
6
|
+
let(:described_class) { Add }
|
7
|
+
|
8
|
+
before do
|
9
|
+
Troo::Commands::Add.stubs(:dispatch)
|
10
|
+
.returns('could not be created')
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#board' do
|
14
|
+
let(:value) {}
|
15
|
+
|
16
|
+
subject do
|
17
|
+
capture_io { described_class.new.board(value) }.join
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'when a value is provided' do
|
21
|
+
let(:value) { 'some value' }
|
22
|
+
|
23
|
+
it 'returns the output of the command' do
|
24
|
+
subject.must_match(/could not be created/)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'when a value is not provided' do
|
29
|
+
before { $stdin.stubs(:gets).returns("some value\n") }
|
30
|
+
|
31
|
+
it 'returns the output of the command' do
|
32
|
+
subject.must_match(/could not be created/)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe '#card' do
|
38
|
+
let(:id) {}
|
39
|
+
let(:value) {}
|
40
|
+
|
41
|
+
subject do
|
42
|
+
capture_io { described_class.new.card(id, value) }.join
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'when a value is provided' do
|
46
|
+
let(:value) { 'some value' }
|
47
|
+
|
48
|
+
it 'returns the output of the command' do
|
49
|
+
subject.must_match(/could not be created/)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
context 'when a value is not provided' do
|
54
|
+
before { $stdin.stubs(:gets).returns("some value\n") }
|
55
|
+
|
56
|
+
it 'returns the output of the command' do
|
57
|
+
subject.must_match(/could not be created/)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe '#comment' do
|
63
|
+
let(:id) {}
|
64
|
+
let(:value) {}
|
65
|
+
|
66
|
+
subject do
|
67
|
+
capture_io { described_class.new.comment(id, value) }.join
|
68
|
+
end
|
69
|
+
|
70
|
+
context 'when a value is provided' do
|
71
|
+
let(:value) { 'some value' }
|
72
|
+
|
73
|
+
it 'returns the output of the command' do
|
74
|
+
subject.must_match(/could not be created/)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
context 'when a value is not provided' do
|
79
|
+
before { $stdin.stubs(:gets).returns("some value\n") }
|
80
|
+
|
81
|
+
it 'returns the output of the command' do
|
82
|
+
subject.must_match(/could not be created/)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
describe '#list' do
|
88
|
+
let(:id) {}
|
89
|
+
let(:value) {}
|
90
|
+
|
91
|
+
subject do
|
92
|
+
capture_io { described_class.new.list(id, value) }.join
|
93
|
+
end
|
94
|
+
|
95
|
+
context 'when a value is provided' do
|
96
|
+
let(:value) { 'some value' }
|
97
|
+
|
98
|
+
it 'returns the output of the command' do
|
99
|
+
subject.must_match(/could not be created/)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
context 'when a value is not provided' do
|
104
|
+
before { $stdin.stubs(:gets).returns("some value\n") }
|
105
|
+
|
106
|
+
it 'returns the output of the command' do
|
107
|
+
subject.must_match(/could not be created/)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require_relative '../../../../test_helper'
|
2
|
+
|
3
|
+
module Troo
|
4
|
+
module Commands
|
5
|
+
describe Add do
|
6
|
+
let(:described_class) { Add }
|
7
|
+
let(:value) {}
|
8
|
+
let(:id) {}
|
9
|
+
let(:options) { { type: type } }
|
10
|
+
let(:type) { :none }
|
11
|
+
let(:outcome) { false }
|
12
|
+
let(:resource) { stub('resource', external_id: '200') }
|
13
|
+
|
14
|
+
before do
|
15
|
+
['Board', 'Card', 'List'].each do |type|
|
16
|
+
Object.const_get("Troo::#{type}").stubs(:retrieve)
|
17
|
+
.returns(resource)
|
18
|
+
end
|
19
|
+
['Board', 'Card', 'List', 'Comment'].each do |type|
|
20
|
+
Object.const_get("Troo::Remote::Persistence::#{type}")
|
21
|
+
.stubs(:with).returns(outcome)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '.dispatch' do
|
26
|
+
subject { described_class.dispatch(value, id, options) }
|
27
|
+
|
28
|
+
[:board, :card, :list, :comment].each do |test_type|
|
29
|
+
context "when the type is #{test_type}" do
|
30
|
+
let(:type) { test_type }
|
31
|
+
|
32
|
+
context 'when the parent resource exists' do
|
33
|
+
context 'and the new resource was created' do
|
34
|
+
let(:outcome) { true }
|
35
|
+
|
36
|
+
it 'returns a polite message' do
|
37
|
+
subject.must_match(/New/)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context 'and the new resource was not created' do
|
42
|
+
it 'returns a polite message' do
|
43
|
+
subject.must_match(/could not/)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'when the parent resource does not exist' do
|
49
|
+
let(:resource) {}
|
50
|
+
|
51
|
+
it 'returns a polite message' do
|
52
|
+
subject.must_match(/could not/)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
context 'when the type is not specified' do
|
59
|
+
it 'returns a polite message' do
|
60
|
+
subject.must_match(/Could not create resource/)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require_relative '../../../../test_helper'
|
2
|
+
|
3
|
+
module Troo
|
4
|
+
module Commands
|
5
|
+
describe Default do
|
6
|
+
let(:described_class) { Default }
|
7
|
+
let(:klass) { stub(type: :resource_type) }
|
8
|
+
let(:id) {}
|
9
|
+
let(:resource) { stub }
|
10
|
+
let(:outcome) { true }
|
11
|
+
let(:decorator) { stub(name: 'Test') }
|
12
|
+
|
13
|
+
before do
|
14
|
+
API::Client.stubs(:perform)
|
15
|
+
klass.stubs(:retrieve).returns(resource)
|
16
|
+
resource.stubs(:set_default!).returns(outcome)
|
17
|
+
resource.stubs(:decorator).returns(decorator)
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '.dispatch' do
|
21
|
+
subject { described_class.dispatch(klass, id) }
|
22
|
+
|
23
|
+
context 'when the resource exists' do
|
24
|
+
it 'sets the default and returns a polite message' do
|
25
|
+
subject.must_match(/set as default/)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context 'when the resource does not exist' do
|
30
|
+
let(:outcome) { false }
|
31
|
+
|
32
|
+
it 'returns a polite message' do
|
33
|
+
subject.must_match(/cannot be found/)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
require_relative '../../../../../test_helper'
|
2
|
+
|
3
|
+
module Troo
|
4
|
+
module Commands
|
5
|
+
module Move
|
6
|
+
describe Card do
|
7
|
+
let(:described_class) { Card }
|
8
|
+
let(:card_id) { '1' }
|
9
|
+
let(:list_id) { '2' }
|
10
|
+
let(:board_id) {}
|
11
|
+
let(:outcome) { false }
|
12
|
+
let(:card) { @card }
|
13
|
+
let(:list) { @list }
|
14
|
+
let(:board) {}
|
15
|
+
|
16
|
+
before do
|
17
|
+
@card = Fabricate.build(:card)
|
18
|
+
@list = Fabricate.build(:list, name: 'Another Test List')
|
19
|
+
@board = Fabricate.build(:board)
|
20
|
+
Troo::Card.stubs(:retrieve).returns(card)
|
21
|
+
Troo::List.stubs(:retrieve).returns(list)
|
22
|
+
Troo::Board.stubs(:retrieve).returns(board)
|
23
|
+
Remote::Persistence::MoveCard.stubs(:with).returns(outcome)
|
24
|
+
end
|
25
|
+
|
26
|
+
describe '#move' do
|
27
|
+
subject do
|
28
|
+
described_class.dispatch(card_id, list_id, board_id)
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'when the card can be moved' do
|
32
|
+
let(:outcome) { true }
|
33
|
+
|
34
|
+
it 'returns a polite message' do
|
35
|
+
subject.must_match(/moved to/)
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'when the optional board is provided' do
|
39
|
+
let(:board_id) { '2' }
|
40
|
+
let(:board) { @board }
|
41
|
+
|
42
|
+
it 'returns a polite message' do
|
43
|
+
subject.must_match(/Test List\' on \'My/)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'when the card cannot be moved' do
|
49
|
+
context 'when the card does not exist' do
|
50
|
+
let(:card) {}
|
51
|
+
|
52
|
+
it 'returns a polite message' do
|
53
|
+
subject.must_match(/Card cannot be found/)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context 'when the list does not exist' do
|
58
|
+
let(:list) {}
|
59
|
+
|
60
|
+
it 'returns a polite message' do
|
61
|
+
subject.must_match(/List cannot be found/)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
context 'when the board does not exist' do
|
66
|
+
let(:board_id) { '2' }
|
67
|
+
let(:board) {}
|
68
|
+
|
69
|
+
it 'returns a polite message' do
|
70
|
+
subject.must_match(/Board cannot be found/)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
context 'when the move fails for another reason' do
|
75
|
+
let(:outcome) { false }
|
76
|
+
|
77
|
+
it 'returns a polite message' do
|
78
|
+
subject.must_match(/could not be moved/)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require_relative '../../../../../test_helper'
|
2
|
+
|
3
|
+
module Troo
|
4
|
+
module Commands
|
5
|
+
describe RefreshAll do
|
6
|
+
def load_mock_trello_response
|
7
|
+
json = File.read('./test/support/remotes/board.json')
|
8
|
+
hash = Yajl::Parser.parse(json)
|
9
|
+
Troo::Remote::Board.new(hash)
|
10
|
+
end
|
11
|
+
let(:described_class) { RefreshAll }
|
12
|
+
let(:resource) { [load_mock_trello_response] }
|
13
|
+
|
14
|
+
before do
|
15
|
+
Retrieval::Remote.stubs(:fetch).returns(resource)
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '.dispatch' do
|
19
|
+
subject { described_class.dispatch }
|
20
|
+
|
21
|
+
context 'when all the resources are refreshed' do
|
22
|
+
it 'returns a polite message' do
|
23
|
+
subject.must_match(/All local data refreshed/)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'when all the resources are not refreshed' do
|
28
|
+
let(:resource) { [] }
|
29
|
+
|
30
|
+
it 'returns a polite message' do
|
31
|
+
subject.must_match(/Cannot refresh all local data/)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require_relative '../../../../test_helper'
|
2
|
+
|
3
|
+
module Troo
|
4
|
+
module Commands
|
5
|
+
describe Refresh do
|
6
|
+
let(:described_class) { Refresh }
|
7
|
+
let(:id) {}
|
8
|
+
let(:resource) {}
|
9
|
+
let(:retrieved) {}
|
10
|
+
let(:klass) do
|
11
|
+
stub(type: :resource_type, remote: stub)
|
12
|
+
end
|
13
|
+
|
14
|
+
before do
|
15
|
+
API::Client.stubs(:perform)
|
16
|
+
@board = Fabricate.build(:board)
|
17
|
+
Retrieval::Local.stubs(:retrieve).returns(resource)
|
18
|
+
Retrieval::Remote.stubs(:fetch).returns(retrieved)
|
19
|
+
end
|
20
|
+
|
21
|
+
after { database_cleanup }
|
22
|
+
|
23
|
+
describe '.dispatch' do
|
24
|
+
subject { described_class.dispatch(klass, id) }
|
25
|
+
|
26
|
+
context 'when the resource exists' do
|
27
|
+
let(:resource) { @board }
|
28
|
+
let(:retrieved) { [@board] }
|
29
|
+
|
30
|
+
context 'and the resource is refreshed' do
|
31
|
+
it 'returns a polite message' do
|
32
|
+
subject.must_match(/refreshed/)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'and multiple resources are refreshed' do
|
37
|
+
let(:retrieved) { [@board, @board] }
|
38
|
+
|
39
|
+
it 'returns a polite message' do
|
40
|
+
subject.must_match(/Multiple/)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'when the resource does not exist' do
|
46
|
+
it 'returns a polite message' do
|
47
|
+
subject.must_match(/cannot be found/)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context 'and the default resource does not exist' do
|
52
|
+
it 'returns a polite message' do
|
53
|
+
subject.must_match(/to set a default/)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require_relative '../../../../../test_helper'
|
2
|
+
|
3
|
+
module Troo
|
4
|
+
module Commands
|
5
|
+
describe ShowBoards do
|
6
|
+
let(:described_class) { ShowBoards }
|
7
|
+
let(:resources) { [] }
|
8
|
+
|
9
|
+
before do
|
10
|
+
API::Client.stubs(:perform)
|
11
|
+
@board = Fabricate.build(:board)
|
12
|
+
Troo::Board.stubs(:all).returns(resources)
|
13
|
+
Presenters::Board.stubs(:all).returns(@board.name)
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '.dispatch' do
|
17
|
+
subject { described_class.dispatch }
|
18
|
+
|
19
|
+
context 'when boards exist' do
|
20
|
+
let(:resources) { [@board] }
|
21
|
+
|
22
|
+
it 'presents the boards' do
|
23
|
+
subject.must_match(/#{@board.name}/)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'when no boards exist' do
|
28
|
+
it 'returns a polite message' do
|
29
|
+
subject.must_match(/Boards cannot be found/)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|