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
@@ -1,94 +0,0 @@
|
|
1
|
-
require_relative '../../../test_helper'
|
2
|
-
|
3
|
-
module Troo
|
4
|
-
module External
|
5
|
-
describe List do
|
6
|
-
let(:described_class) { List }
|
7
|
-
|
8
|
-
describe 'when the mode is board' do
|
9
|
-
before do
|
10
|
-
VCR.insert_cassette(:lists_by_board_id,
|
11
|
-
decode_compressed_response: true)
|
12
|
-
end
|
13
|
-
after { VCR.eject_cassette }
|
14
|
-
|
15
|
-
let(:board_id) { '526d8e130a14a9d846001d96' }
|
16
|
-
let(:options) { { mode: :board } }
|
17
|
-
|
18
|
-
subject { described_class.fetch(board_id, options) }
|
19
|
-
|
20
|
-
it 'returns multiple lists' do
|
21
|
-
subject.size.must_equal(4)
|
22
|
-
end
|
23
|
-
|
24
|
-
context 'when the board cannot be found' do
|
25
|
-
before { Trello::Board.stubs(:find).raises(Trello::Error) }
|
26
|
-
|
27
|
-
it 'returns an empty collection' do
|
28
|
-
subject.must_equal([])
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
context 'when the access token is invalid' do
|
33
|
-
before do
|
34
|
-
Trello::Board.stubs(:find)
|
35
|
-
.raises(Trello::InvalidAccessToken)
|
36
|
-
end
|
37
|
-
|
38
|
-
subject { described_class.new(board_id, options).fetch }
|
39
|
-
|
40
|
-
it 'catches the exception and re-raises' do
|
41
|
-
proc { subject }.must_raise(Troo::InvalidAccessToken)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
describe 'when the mode is list' do
|
47
|
-
before do
|
48
|
-
VCR.insert_cassette(:list_by_list_id,
|
49
|
-
decode_compressed_response: true)
|
50
|
-
end
|
51
|
-
after { VCR.eject_cassette }
|
52
|
-
|
53
|
-
let(:list_id) { '526d8e130a14a9d846001d97' }
|
54
|
-
let(:options) { { mode: :list } }
|
55
|
-
|
56
|
-
subject { described_class.fetch(list_id, options) }
|
57
|
-
|
58
|
-
it 'returns a list with the list_id' do
|
59
|
-
subject.size.must_equal(1)
|
60
|
-
end
|
61
|
-
|
62
|
-
context 'when the list cannot be found' do
|
63
|
-
before { Trello::List.stubs(:find).raises(Trello::Error) }
|
64
|
-
|
65
|
-
it 'returns an empty collection' do
|
66
|
-
subject.must_equal([])
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
describe 'when the mode is card' do
|
72
|
-
let(:card_id) { '526d8f19ddb279532e005259' }
|
73
|
-
let(:options) { { mode: :card } }
|
74
|
-
|
75
|
-
subject { described_class.fetch(card_id, options) }
|
76
|
-
|
77
|
-
it 'returns an empty collection' do
|
78
|
-
subject.must_equal([])
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
describe 'when the mode is member' do
|
83
|
-
let(:member_id) { '5195fdb5a8c01a2318004f5d' }
|
84
|
-
let(:options) { { mode: :member } }
|
85
|
-
|
86
|
-
subject { described_class.fetch(member_id, options) }
|
87
|
-
|
88
|
-
it 'returns an empty collection' do
|
89
|
-
subject.must_equal([])
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
@@ -1,94 +0,0 @@
|
|
1
|
-
require_relative '../../../test_helper'
|
2
|
-
|
3
|
-
module Troo
|
4
|
-
module External
|
5
|
-
describe Member do
|
6
|
-
let(:described_class) { Member }
|
7
|
-
|
8
|
-
describe 'when the mode is board' do
|
9
|
-
before do
|
10
|
-
VCR.insert_cassette(:members_by_board_id,
|
11
|
-
decode_compressed_response: true)
|
12
|
-
end
|
13
|
-
after { VCR.eject_cassette }
|
14
|
-
|
15
|
-
let(:board_id) { '526d8e130a14a9d846001d96' }
|
16
|
-
let(:options) { { mode: :board } }
|
17
|
-
|
18
|
-
subject { described_class.fetch(board_id, options) }
|
19
|
-
|
20
|
-
it 'returns multiple members' do
|
21
|
-
subject.size.must_equal(1)
|
22
|
-
end
|
23
|
-
|
24
|
-
context 'when the board cannot be found' do
|
25
|
-
before { Trello::Board.stubs(:find).raises(Trello::Error) }
|
26
|
-
|
27
|
-
it 'returns an empty collection' do
|
28
|
-
subject.must_equal([])
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
context 'when the access token is invalid' do
|
33
|
-
before do
|
34
|
-
Trello::Board.stubs(:find)
|
35
|
-
.raises(Trello::InvalidAccessToken)
|
36
|
-
end
|
37
|
-
|
38
|
-
subject { described_class.new(board_id, options).fetch }
|
39
|
-
|
40
|
-
it 'catches the exception and re-raises' do
|
41
|
-
proc { subject }.must_raise(Troo::InvalidAccessToken)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
describe 'when the mode is list' do
|
47
|
-
let(:list_id) { '526d8e130a14a9d846001d97' }
|
48
|
-
let(:options) { { mode: :list } }
|
49
|
-
|
50
|
-
subject { described_class.fetch(list_id, options) }
|
51
|
-
|
52
|
-
it 'returns an empty collection' do
|
53
|
-
subject.must_equal([])
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
describe 'when the mode is card' do
|
58
|
-
let(:card_id) { '526d8f19ddb279532e005259' }
|
59
|
-
let(:options) { { mode: :card } }
|
60
|
-
|
61
|
-
subject { described_class.fetch(card_id, options) }
|
62
|
-
|
63
|
-
it 'returns an empty collection' do
|
64
|
-
subject.must_equal([])
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
describe 'when the mode is member' do
|
69
|
-
before do
|
70
|
-
VCR.insert_cassette(:member_by_member_id,
|
71
|
-
decode_compressed_response: true)
|
72
|
-
end
|
73
|
-
after { VCR.eject_cassette }
|
74
|
-
|
75
|
-
let(:member_id) { '5195fdb5a8c01a2318004f5d' }
|
76
|
-
let(:options) { { mode: :member } }
|
77
|
-
|
78
|
-
subject { described_class.fetch(member_id, options) }
|
79
|
-
|
80
|
-
it 'returns a member with the member_id' do
|
81
|
-
subject.size.must_equal(1)
|
82
|
-
end
|
83
|
-
|
84
|
-
context 'when the member cannot be found' do
|
85
|
-
before { Trello::Member.stubs(:find).raises(Trello::Error) }
|
86
|
-
|
87
|
-
it 'returns an empty collection' do
|
88
|
-
subject.must_equal([])
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require_relative '../../../test_helper'
|
2
|
-
|
3
|
-
module Troo
|
4
|
-
module External
|
5
|
-
describe Resource do
|
6
|
-
let(:described_class) { Resource }
|
7
|
-
let(:external_id) { '526d8e130a14a9d846001d96' }
|
8
|
-
let(:options) { {} }
|
9
|
-
|
10
|
-
describe '.initialize' do
|
11
|
-
subject { described_class.new(external_id, options) }
|
12
|
-
|
13
|
-
it 'assigns the external_id to an instance variable' do
|
14
|
-
subject.instance_variable_get('@external_id')
|
15
|
-
.must_equal(external_id)
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'assigns the options to an instance variable' do
|
19
|
-
subject.instance_variable_get('@options')
|
20
|
-
.must_equal(options)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,82 +0,0 @@
|
|
1
|
-
require_relative '../../../test_helper'
|
2
|
-
|
3
|
-
class CommandHelpersDummy
|
4
|
-
include Troo::CommandHelpers
|
5
|
-
|
6
|
-
def initialize(type, id)
|
7
|
-
@type, @id = type, id
|
8
|
-
end
|
9
|
-
|
10
|
-
private
|
11
|
-
|
12
|
-
attr_accessor :type
|
13
|
-
end
|
14
|
-
|
15
|
-
module Troo
|
16
|
-
describe CommandHelpers do
|
17
|
-
let(:described_class) { CommandHelpersDummy }
|
18
|
-
let(:described_instance) { described_class.new(type, id) }
|
19
|
-
let(:type) { :board }
|
20
|
-
let(:id) { nil }
|
21
|
-
|
22
|
-
describe '#error_no_default' do
|
23
|
-
subject { described_instance.error_no_default }
|
24
|
-
|
25
|
-
context 'when the type is comments' do
|
26
|
-
let(:type) { :comments }
|
27
|
-
|
28
|
-
it 'returns the no default set error message' do
|
29
|
-
subject.must_match(/to set a default card first/)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
context 'when the type is not comments' do
|
34
|
-
it 'returns the no default set error message' do
|
35
|
-
subject.must_match(/to set a default board first/)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
describe '#error_not_found' do
|
41
|
-
subject { described_instance.error_not_found }
|
42
|
-
|
43
|
-
context 'when the type is comments' do
|
44
|
-
let(:type) { :comments }
|
45
|
-
|
46
|
-
it 'returns the not found error message' do
|
47
|
-
subject.must_match(/Card cannot be found/)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
context 'when the type is not comments' do
|
52
|
-
it 'returns the no default set error message' do
|
53
|
-
subject.must_match(/Board cannot be found/)
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
describe '#type_str' do
|
59
|
-
subject { described_instance.type_str }
|
60
|
-
|
61
|
-
it 'returns the type as a string' do
|
62
|
-
subject.must_equal('board')
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
describe '#type_capitalize' do
|
67
|
-
subject { described_instance.type_capitalize }
|
68
|
-
|
69
|
-
it 'returns the type as a capitalized string' do
|
70
|
-
subject.must_equal('Board')
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
describe '#type_pluralize' do
|
75
|
-
subject { described_instance.type_pluralize }
|
76
|
-
|
77
|
-
it 'returns the type as a pluralized string' do
|
78
|
-
subject.must_equal('boards')
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
@@ -1,62 +0,0 @@
|
|
1
|
-
require_relative '../../../../test_helper'
|
2
|
-
|
3
|
-
module Troo
|
4
|
-
describe Persistence::Board do
|
5
|
-
let(:described_class) { Persistence::Board }
|
6
|
-
let(:resource) do
|
7
|
-
OpenStruct.new(
|
8
|
-
id: '526d8e130a14a9d846001d96',
|
9
|
-
name: resource_name,
|
10
|
-
description: 'A very brief description...',
|
11
|
-
closed: false)
|
12
|
-
end
|
13
|
-
let(:resource_name) { 'My Test Board' }
|
14
|
-
let(:options) { {} }
|
15
|
-
|
16
|
-
before { @board = Fabricate(:board) }
|
17
|
-
after { database_cleanup }
|
18
|
-
|
19
|
-
describe '.initialize' do
|
20
|
-
subject { described_class.new(resource, options) }
|
21
|
-
|
22
|
-
it 'assigns the resource to an instance variable' do
|
23
|
-
subject.instance_variable_get('@resource')
|
24
|
-
.must_equal(resource)
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'assigns the options to an instance variable' do
|
28
|
-
subject.instance_variable_get('@options').must_equal(options)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
describe '#persist' do
|
33
|
-
subject { described_class.for(resource, options) }
|
34
|
-
|
35
|
-
context 'when there is already a local copy' do
|
36
|
-
context 'and the local copy is identical' do
|
37
|
-
it 'returns the local copy' do
|
38
|
-
subject.must_equal(@board)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
context 'and the local copy is out of date' do
|
43
|
-
let(:resource_name) { 'My Renamed Board' }
|
44
|
-
|
45
|
-
it 'updates and returns the new local copy' do
|
46
|
-
subject.name.must_equal(resource_name)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
context 'when there is not already a local copy' do
|
52
|
-
let(:resource_name) { 'My New Test Board' }
|
53
|
-
|
54
|
-
before { database_cleanup }
|
55
|
-
|
56
|
-
it 'creates and returns the new local copy' do
|
57
|
-
subject.name.must_equal(resource_name)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
@@ -1,61 +0,0 @@
|
|
1
|
-
require_relative '../../../../test_helper'
|
2
|
-
|
3
|
-
module Troo
|
4
|
-
describe Persistence::Card do
|
5
|
-
let(:described_class) { Persistence::Card }
|
6
|
-
let(:resource) do
|
7
|
-
OpenStruct.new(
|
8
|
-
id: '526d8f19ddb279532e005259',
|
9
|
-
name: resource_name,
|
10
|
-
closed: false)
|
11
|
-
end
|
12
|
-
let(:resource_name) { 'My Test Card' }
|
13
|
-
let(:options) { {} }
|
14
|
-
|
15
|
-
before { @card = Fabricate(:card) }
|
16
|
-
after { database_cleanup }
|
17
|
-
|
18
|
-
describe '.initialize' do
|
19
|
-
subject { described_class.new(resource, options) }
|
20
|
-
|
21
|
-
it 'assigns the resource to an instance variable' do
|
22
|
-
subject.instance_variable_get('@resource')
|
23
|
-
.must_equal(resource)
|
24
|
-
end
|
25
|
-
|
26
|
-
it 'assigns the options to an instance variable' do
|
27
|
-
subject.instance_variable_get('@options').must_equal(options)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
describe '#persist' do
|
32
|
-
subject { described_class.for(resource, options) }
|
33
|
-
|
34
|
-
context 'when there is already a local copy' do
|
35
|
-
context 'and the local copy is identical' do
|
36
|
-
it 'returns the local copy' do
|
37
|
-
subject.must_equal(@card)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
context 'and the local copy is out of date' do
|
42
|
-
let(:resource_name) { 'My Renamed Card' }
|
43
|
-
|
44
|
-
it 'updates and returns the new local copy' do
|
45
|
-
subject.name.must_equal(resource_name)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
context 'when there is not already a local copy' do
|
51
|
-
let(:resource_name) { 'My New Test Card' }
|
52
|
-
|
53
|
-
before { database_cleanup }
|
54
|
-
|
55
|
-
it 'creates and returns the new local copy' do
|
56
|
-
subject.name.must_equal(resource_name)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
@@ -1,69 +0,0 @@
|
|
1
|
-
require_relative '../../../../test_helper'
|
2
|
-
|
3
|
-
module Troo
|
4
|
-
describe Persistence::Comment do
|
5
|
-
let(:described_class) { Persistence::Comment }
|
6
|
-
let(:resource) do
|
7
|
-
OpenStruct.new(
|
8
|
-
id: '51f9277b2822b8654f0023af',
|
9
|
-
date: '2013-12-17 22:01:13 UTC',
|
10
|
-
data: {
|
11
|
-
'text' => resource_text,
|
12
|
-
'board' => {
|
13
|
-
'id' => '526d8e130a14a9d846001d96'
|
14
|
-
},
|
15
|
-
'card' => {
|
16
|
-
'id' => '526d8f19ddb279532e005259'
|
17
|
-
}
|
18
|
-
})
|
19
|
-
end
|
20
|
-
let(:resource_text) { 'My Test Comment' }
|
21
|
-
let(:options) { {} }
|
22
|
-
|
23
|
-
before { @comment = Fabricate(:comment) }
|
24
|
-
after { database_cleanup }
|
25
|
-
|
26
|
-
describe '.initialize' do
|
27
|
-
subject { described_class.new(resource, options) }
|
28
|
-
|
29
|
-
it 'assigns the resource to an instance variable' do
|
30
|
-
subject.instance_variable_get('@resource')
|
31
|
-
.must_equal(resource)
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'assigns the options to an instance variable' do
|
35
|
-
subject.instance_variable_get('@options').must_equal(options)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
describe '#persist' do
|
40
|
-
subject { described_class.for(resource, options) }
|
41
|
-
|
42
|
-
context 'when there is already a local copy' do
|
43
|
-
context 'and the local copy is identical' do
|
44
|
-
it 'returns the local copy' do
|
45
|
-
subject.must_equal(@comment)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
context 'and the local copy is out of date' do
|
50
|
-
let(:resource_text) { 'My Renamed Comment' }
|
51
|
-
|
52
|
-
it 'updates and returns the new local copy' do
|
53
|
-
subject.text.must_equal(resource_text)
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
context 'when there is not already a local copy' do
|
59
|
-
let(:resource_text) { 'My New Test Comment' }
|
60
|
-
|
61
|
-
before { database_cleanup }
|
62
|
-
|
63
|
-
it 'creates and returns the new local copy' do
|
64
|
-
subject.text.must_equal(resource_text)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|