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,19 @@
|
|
1
|
+
Feature: Showing all boards
|
2
|
+
|
3
|
+
@show
|
4
|
+
Scenario: When boards exist
|
5
|
+
Given a board exists
|
6
|
+
When I run `troo show boards`
|
7
|
+
Then the output should contain:
|
8
|
+
"""
|
9
|
+
(1) My Test Board
|
10
|
+
No lists were found.
|
11
|
+
"""
|
12
|
+
|
13
|
+
@show
|
14
|
+
Scenario: When no boards exist
|
15
|
+
When I run `troo show boards`
|
16
|
+
Then the output should contain:
|
17
|
+
"""
|
18
|
+
Boards cannot be found.
|
19
|
+
"""
|
data/features/show/card.feature
CHANGED
@@ -1,16 +1,12 @@
|
|
1
1
|
Feature: Showing a card
|
2
|
-
Background:
|
3
|
-
Given a board exists
|
4
|
-
And a list exists
|
5
|
-
And a member exists
|
6
2
|
|
7
3
|
@show
|
8
4
|
Scenario: Showing a card with ID
|
9
5
|
Given a card exists
|
10
|
-
When I run `troo show card
|
6
|
+
When I run `troo show card 200`
|
11
7
|
Then the output should contain:
|
12
8
|
"""
|
13
|
-
|
9
|
+
(1) My Test Card
|
14
10
|
|
15
11
|
Description:
|
16
12
|
some description
|
@@ -22,16 +18,19 @@ Feature: Showing a card
|
|
22
18
|
@gavinlaking1
|
23
19
|
|
24
20
|
Metadata:
|
25
|
-
Board:
|
26
|
-
List:
|
21
|
+
Board: (1) My Test Board
|
22
|
+
List: (1) My Test List
|
27
23
|
Updated: Tue, Dec 17 at 21:48
|
28
24
|
"""
|
29
25
|
|
30
26
|
@show
|
31
27
|
Scenario: Cannot show card; not found
|
32
|
-
|
33
|
-
When I run `troo show card
|
34
|
-
Then the output should contain
|
28
|
+
Given the Trello API is stubbed with "400_card_by_id"
|
29
|
+
When I run `troo show card 400`
|
30
|
+
Then the output should contain:
|
31
|
+
"""
|
32
|
+
Card cannot be found.
|
33
|
+
"""
|
35
34
|
|
36
35
|
@show
|
37
36
|
Scenario: Showing the default card
|
@@ -39,7 +38,7 @@ Feature: Showing a card
|
|
39
38
|
When I run `troo show card`
|
40
39
|
Then the output should contain:
|
41
40
|
"""
|
42
|
-
|
41
|
+
(1) My Default Card *
|
43
42
|
|
44
43
|
Description:
|
45
44
|
some description
|
@@ -51,12 +50,84 @@ Feature: Showing a card
|
|
51
50
|
@gavinlaking1
|
52
51
|
|
53
52
|
Metadata:
|
54
|
-
Board:
|
55
|
-
List:
|
53
|
+
Board: (1) My Test Board
|
54
|
+
List: (1) My Test List
|
56
55
|
Updated: Tue, Dec 17 at 21:48
|
57
56
|
"""
|
58
57
|
|
59
58
|
@show
|
60
59
|
Scenario: Cannot show; no default card
|
61
60
|
When I run `troo show card`
|
62
|
-
Then the output should contain
|
61
|
+
Then the output should contain:
|
62
|
+
"""
|
63
|
+
set a default card first
|
64
|
+
"""
|
65
|
+
|
66
|
+
@show
|
67
|
+
Scenario: Showing a card with comments
|
68
|
+
Given a card exists
|
69
|
+
Given 2 comments exist
|
70
|
+
When I run `troo show card 200`
|
71
|
+
Then the output should contain:
|
72
|
+
"""
|
73
|
+
(1) My Test Card
|
74
|
+
|
75
|
+
Description:
|
76
|
+
some description
|
77
|
+
|
78
|
+
Comments:
|
79
|
+
@gavinlaking1:
|
80
|
+
My Test Comment
|
81
|
+
(Tue, Dec 17 at 22:01)
|
82
|
+
|
83
|
+
@gavinlaking1:
|
84
|
+
My Test Comment
|
85
|
+
(Tue, Dec 17 at 22:01)
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
Members:
|
90
|
+
@gavinlaking1
|
91
|
+
|
92
|
+
Metadata:
|
93
|
+
Board: (1) My Test Board
|
94
|
+
List: (1) My Test List
|
95
|
+
Updated: Tue, Dec 17 at 21:48
|
96
|
+
"""
|
97
|
+
|
98
|
+
@show
|
99
|
+
Scenario: Showing a card with many comments
|
100
|
+
Given a card exists
|
101
|
+
Given 5 comments exist
|
102
|
+
When I run `troo show card 200`
|
103
|
+
Then the output should contain:
|
104
|
+
"""
|
105
|
+
(1) My Test Card
|
106
|
+
|
107
|
+
Description:
|
108
|
+
some description
|
109
|
+
|
110
|
+
Comments:
|
111
|
+
@gavinlaking1:
|
112
|
+
My Test Comment
|
113
|
+
(Tue, Dec 17 at 22:01)
|
114
|
+
|
115
|
+
@gavinlaking1:
|
116
|
+
My Test Comment
|
117
|
+
(Tue, Dec 17 at 22:01)
|
118
|
+
|
119
|
+
@gavinlaking1:
|
120
|
+
My Test Comment
|
121
|
+
(Tue, Dec 17 at 22:01)
|
122
|
+
|
123
|
+
|
124
|
+
(There are more comments, use: 'troo show comments 67' to view all comments.)
|
125
|
+
|
126
|
+
Members:
|
127
|
+
@gavinlaking1
|
128
|
+
|
129
|
+
Metadata:
|
130
|
+
Board: (1) My Test Board
|
131
|
+
List: (1) My Test List
|
132
|
+
Updated: Tue, Dec 17 at 21:48
|
133
|
+
"""
|
@@ -1,23 +1,24 @@
|
|
1
1
|
Feature: Showing comments
|
2
|
-
Background:
|
3
|
-
Given a card exists
|
4
|
-
And a member exists
|
5
2
|
|
6
3
|
@show
|
7
4
|
Scenario: Showing comments for a card with ID
|
8
5
|
Given a comment exists
|
9
|
-
When I run `troo show comments
|
10
|
-
Then the output should contain
|
6
|
+
When I run `troo show comments 200`
|
7
|
+
Then the output should contain:
|
8
|
+
"""
|
9
|
+
My Test Comment
|
10
|
+
"""
|
11
11
|
|
12
12
|
@show
|
13
13
|
Scenario: Showing comments for a card with ID; no comments
|
14
|
-
|
14
|
+
Given a card exists
|
15
|
+
When I run `troo show comments 200`
|
15
16
|
Then the output should contain "No comments"
|
16
17
|
|
17
18
|
@show
|
18
19
|
Scenario: Cannot show comments; card not found
|
19
|
-
Given the Trello API is stubbed with "
|
20
|
-
When I run `troo show comments
|
20
|
+
Given the Trello API is stubbed with "400_card_by_id"
|
21
|
+
When I run `troo show comments 400`
|
21
22
|
Then the output should contain "Card cannot be found."
|
22
23
|
|
23
24
|
@show
|
@@ -27,10 +28,11 @@ Feature: Showing comments
|
|
27
28
|
When I run `troo show comments`
|
28
29
|
Then the output should contain:
|
29
30
|
"""
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
31
|
+
(1) My Default Card *
|
32
|
+
|
33
|
+
@gavinlaking1:
|
34
|
+
My Test Comment
|
35
|
+
(Tue, Dec 17 at 22:01)
|
34
36
|
"""
|
35
37
|
|
36
38
|
@show
|
data/features/show/list.feature
CHANGED
@@ -1,24 +1,25 @@
|
|
1
1
|
Feature: Showing a list
|
2
|
-
Background:
|
3
|
-
Given a board exists
|
4
|
-
And a card exists
|
5
2
|
|
6
3
|
@show
|
7
4
|
Scenario: Showing a list with ID
|
8
5
|
Given a list exists
|
9
|
-
When I run `troo show list
|
6
|
+
When I run `troo show list 200`
|
10
7
|
Then the output should contain:
|
11
8
|
"""
|
12
|
-
|
13
|
-
|
14
|
-
|
9
|
+
(1) My Test Board
|
10
|
+
|
11
|
+
(1) My Test List
|
12
|
+
No cards were found.
|
15
13
|
"""
|
16
14
|
|
17
15
|
@show
|
18
16
|
Scenario: Cannot show list; not found
|
19
|
-
Given the Trello API is stubbed with "
|
20
|
-
When I run `troo show list
|
21
|
-
Then the output should contain
|
17
|
+
Given the Trello API is stubbed with "400_list_by_id"
|
18
|
+
When I run `troo show list 400`
|
19
|
+
Then the output should contain:
|
20
|
+
"""
|
21
|
+
List cannot be found.
|
22
|
+
"""
|
22
23
|
|
23
24
|
@show
|
24
25
|
Scenario: Showing the default list
|
@@ -26,12 +27,16 @@ Feature: Showing a list
|
|
26
27
|
When I run `troo show list`
|
27
28
|
Then the output should contain:
|
28
29
|
"""
|
29
|
-
|
30
|
-
|
31
|
-
|
30
|
+
(1) My Test Board
|
31
|
+
|
32
|
+
(1) My Default List *
|
33
|
+
No cards were found.
|
32
34
|
"""
|
33
35
|
|
34
36
|
@show
|
35
37
|
Scenario: Cannot show; no default list
|
36
38
|
When I run `troo show list`
|
37
|
-
Then the output should contain
|
39
|
+
Then the output should contain:
|
40
|
+
"""
|
41
|
+
set a default list first
|
42
|
+
"""
|
data/features/status.feature
CHANGED
@@ -13,34 +13,48 @@ Feature: Showing the current status
|
|
13
13
|
|
14
14
|
@status
|
15
15
|
Scenario: When there is local data; all defaults set
|
16
|
-
Given
|
17
|
-
And a default list exists
|
18
|
-
And a default card exists
|
16
|
+
Given local data exists, all defaults set
|
19
17
|
When I run `troo status`
|
20
18
|
Then the output should contain:
|
21
19
|
"""
|
22
20
|
Status:
|
23
21
|
Boards: 1 board found.
|
24
|
-
|
22
|
+
(1) My Default Board *
|
25
23
|
Lists: 1 list found.
|
26
|
-
|
24
|
+
(1) My Default List *
|
27
25
|
Cards: 1 card found.
|
28
|
-
|
26
|
+
(1) My Default Card *
|
29
27
|
"""
|
30
28
|
|
31
29
|
@status
|
32
30
|
Scenario: When there is local data; some defaults set
|
33
|
-
Given
|
34
|
-
And a board exists
|
35
|
-
And a default list exists
|
36
|
-
And a card exists
|
31
|
+
Given local data exists
|
37
32
|
When I run `troo status`
|
38
33
|
Then the output should contain:
|
39
34
|
"""
|
40
35
|
Status:
|
41
36
|
Boards: 2 boards found.
|
42
|
-
|
37
|
+
(1) My Default Board *
|
43
38
|
Lists: 1 list found.
|
44
|
-
|
45
|
-
Cards: No default card set.
|
39
|
+
(1) My Default List *
|
40
|
+
Cards: No default card set. (1)
|
46
41
|
"""
|
42
|
+
|
43
|
+
@status
|
44
|
+
Scenario: Reports when local data was last updated
|
45
|
+
When I run `troo status`
|
46
|
+
Then the output should contain:
|
47
|
+
"""
|
48
|
+
Last refreshed:
|
49
|
+
Unknown. Run `troo refresh all`.
|
50
|
+
"""
|
51
|
+
|
52
|
+
@status
|
53
|
+
Scenario: Reports when local data was last updated
|
54
|
+
Given local data exists
|
55
|
+
When I run `troo status`
|
56
|
+
Then the output should not contain:
|
57
|
+
"""
|
58
|
+
Last refreshed:
|
59
|
+
Unknown. Run `troo refresh all`.
|
60
|
+
"""
|
@@ -2,33 +2,68 @@ require 'fabrication'
|
|
2
2
|
require_relative '../../test/support/fabrication.rb'
|
3
3
|
|
4
4
|
Given(/^a board exists$/) do
|
5
|
-
Fabricate(:board)
|
5
|
+
Fabricate(:board, external_id: 200)
|
6
6
|
end
|
7
7
|
|
8
8
|
Given(/^a list exists$/) do
|
9
|
-
Fabricate(:
|
9
|
+
Fabricate(:board)
|
10
|
+
Fabricate(:list, external_id: 200)
|
10
11
|
end
|
11
12
|
|
12
13
|
Given(/^a card exists$/) do
|
13
|
-
Fabricate(:
|
14
|
+
Fabricate(:board)
|
15
|
+
Fabricate(:list)
|
16
|
+
Fabricate(:member)
|
17
|
+
Fabricate(:card, external_id: 200)
|
14
18
|
end
|
15
19
|
|
16
20
|
Given(/^a comment exists$/) do
|
17
|
-
Fabricate(:
|
21
|
+
Fabricate(:card, external_id: 200)
|
22
|
+
Fabricate(:member)
|
23
|
+
Fabricate(:comment, external_card_id: 200)
|
18
24
|
end
|
19
25
|
|
20
|
-
Given(/^
|
26
|
+
Given(/^(\d+) comments exist$/) do |count|
|
27
|
+
Fabricate(:card, external_id: 200)
|
21
28
|
Fabricate(:member)
|
29
|
+
count.to_i.times do
|
30
|
+
Fabricate(:comment, external_card_id: 200)
|
31
|
+
end
|
22
32
|
end
|
23
33
|
|
24
34
|
Given(/^a default board exists$/) do
|
25
|
-
Fabricate(:board, default: true,
|
35
|
+
Fabricate(:board, default: true,
|
36
|
+
name: 'My Default Board',
|
37
|
+
external_id: 200)
|
26
38
|
end
|
27
39
|
|
28
40
|
Given(/^a default list exists$/) do
|
29
|
-
Fabricate(:
|
41
|
+
Fabricate(:board)
|
42
|
+
Fabricate(:list, default: true,
|
43
|
+
name: 'My Default List',
|
44
|
+
external_id: 200)
|
30
45
|
end
|
31
46
|
|
32
47
|
Given(/^a default card exists$/) do
|
33
|
-
Fabricate(:
|
48
|
+
Fabricate(:board)
|
49
|
+
Fabricate(:list)
|
50
|
+
Fabricate(:member)
|
51
|
+
Fabricate(:card, default: true,
|
52
|
+
name: 'My Default Card',
|
53
|
+
external_id: 200)
|
54
|
+
end
|
55
|
+
|
56
|
+
Given(/^local data exists, all defaults set$/) do
|
57
|
+
Fabricate(:board, default: true, name: 'My Default Board')
|
58
|
+
Fabricate(:list, default: true, name: 'My Default List')
|
59
|
+
Fabricate(:card, default: true, name: 'My Default Card')
|
60
|
+
Troo::Refresh.completed!
|
61
|
+
end
|
62
|
+
|
63
|
+
Given(/^local data exists$/) do
|
64
|
+
Fabricate(:board, default: true, name: 'My Default Board')
|
65
|
+
Fabricate(:board)
|
66
|
+
Fabricate(:list, default: true, name: 'My Default List')
|
67
|
+
Fabricate(:card, external_id: 200)
|
68
|
+
Troo::Refresh.completed!
|
34
69
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
Given(/^the Trello API is stubbed with "(.*?)"$/) do |stub|
|
2
|
-
VCR.insert_cassette(stub)
|
2
|
+
VCR.insert_cassette(stub, allow_playback_repeats: true)
|
3
3
|
end
|
4
4
|
|
5
5
|
Then(/^the output should be the version number of troo$/) do
|
@@ -7,7 +7,8 @@ Then(/^the output should be the version number of troo$/) do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
Before do
|
10
|
-
|
10
|
+
config = Troo::Configuration.load('test/support/.trooconf', :test)
|
11
|
+
Ohm.connect(db: config.database)
|
11
12
|
end
|
12
13
|
|
13
14
|
After do
|
data/features/support/env.rb
CHANGED
data/features/troo.feature
CHANGED
@@ -17,15 +17,3 @@ Feature: Troo Basics
|
|
17
17
|
"""
|
18
18
|
Could not find command "unknown".
|
19
19
|
"""
|
20
|
-
|
21
|
-
@pending @authentication
|
22
|
-
Scenario: Not authenticated with Trello
|
23
|
-
Given the Trello API is stubbed with "unauthenticated"
|
24
|
-
|
25
|
-
@pending @connectivity
|
26
|
-
Scenario: Trello not responding
|
27
|
-
Given the Trello API is stubbed with "trello_failure"
|
28
|
-
|
29
|
-
@pending @connectivity
|
30
|
-
Scenario: No network connection
|
31
|
-
|
data/lib/troo.rb
CHANGED
@@ -1,32 +1,36 @@
|
|
1
|
+
$LOAD_PATH << File.expand_path(File.dirname(__FILE__) + '/../lib')
|
2
|
+
|
1
3
|
require_relative 'troo/troo'
|
2
4
|
require_relative 'troo/version'
|
3
5
|
|
4
6
|
module Troo
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
warn 'No configuration file found...'
|
11
|
-
src = File.dirname(__FILE__) + '/../configuration.yml.example'
|
12
|
-
dst = Dir.home + '/.trooconf'
|
13
|
-
FileUtils.cp(src, dst)
|
14
|
-
warn "New configuration file created at '#{Dir.home}/.trooconf'"
|
15
|
-
exit!
|
7
|
+
InvalidAccessToken = Class.new(StandardError)
|
8
|
+
EndpointNotFound = Class.new(StandardError)
|
9
|
+
|
10
|
+
def self.configuration(file = Dir.home + '/.trooconf', env = :default)
|
11
|
+
@configuration ||= Troo::Configuration.load(file, env)
|
16
12
|
end
|
13
|
+
configuration
|
17
14
|
|
18
|
-
def self.
|
19
|
-
@
|
15
|
+
def self.endpoints(version = :version_1)
|
16
|
+
@endpoints ||= Troo::API::Endpoints
|
17
|
+
.load(File.dirname(__FILE__) + '/../config/trello_api.yml', version)
|
20
18
|
end
|
19
|
+
endpoints
|
21
20
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
21
|
+
def self.logger
|
22
|
+
@logger ||= Logger
|
23
|
+
.new(File.dirname(__FILE__) + '/../logs/troo.log').tap do |log|
|
24
|
+
log.formatter = proc do |mode, time, prog, msg|
|
25
|
+
"#{time.iso8601} #{mode}:\n#{msg}\n\n"
|
26
|
+
end
|
27
|
+
end
|
28
28
|
end
|
29
29
|
|
30
|
+
# RestClient.log = File.dirname(__FILE__) + '/../logs/restclient.log'
|
31
|
+
|
32
|
+
Ohm.connect(db: Troo.configuration.database)
|
33
|
+
|
30
34
|
class Launcher
|
31
35
|
def initialize(argv, stdin = STDIN,
|
32
36
|
stdout = STDOUT,
|
@@ -41,19 +45,18 @@ module Troo
|
|
41
45
|
|
42
46
|
def execute!
|
43
47
|
$stdin, $stdout, $stderr = @stdin, @stdout, @stderr
|
48
|
+
pad { Troo::CLI::Main.start(@argv) }
|
49
|
+
@kernel.exit(0)
|
50
|
+
ensure
|
51
|
+
$stdin, $stdout, $stderr = STDIN, STDOUT, STDERR
|
52
|
+
end
|
44
53
|
|
54
|
+
private
|
55
|
+
|
56
|
+
def pad
|
45
57
|
puts
|
46
|
-
|
58
|
+
yield
|
47
59
|
puts
|
48
|
-
|
49
|
-
@kernel.exit(0)
|
50
|
-
rescue Troo::InvalidAccessToken
|
51
|
-
@stderr.puts 'Your Trello access credentials have expired, ' \
|
52
|
-
' please renew and try again.'
|
53
|
-
@kernel.exit(1)
|
54
|
-
rescue SocketError
|
55
|
-
@stderr.puts 'Cannot continue, no network connection.'
|
56
|
-
@kernel.exit(1)
|
57
60
|
end
|
58
61
|
end
|
59
62
|
end
|