troo 0.0.7 → 0.0.8
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 +2 -0
- data/.rubocop.yml +2 -0
- data/Guardfile +3 -1
- data/Rakefile +7 -0
- data/bin/troo +3 -8
- data/config/.gitkeep +0 -0
- data/config/cucumber.yml +8 -0
- data/features/add/board.feature +26 -0
- data/features/add/card.feature +34 -0
- data/features/add/comment.feature +21 -0
- data/features/add/list.feature +24 -0
- data/features/cleanup.feature +13 -0
- data/features/default/board.feature +21 -0
- data/features/default/card.feature +21 -0
- data/features/default/list.feature +21 -0
- data/features/refresh/all.feature +7 -0
- data/features/refresh/board.feature +26 -0
- data/features/refresh/card.feature +27 -0
- data/features/refresh/list.feature +27 -0
- data/features/show/board.feature +32 -0
- data/features/show/card.feature +62 -0
- data/features/show/comment.feature +39 -0
- data/features/show/list.feature +37 -0
- data/features/status.feature +46 -1
- data/features/step_definitions/fabrication_steps.rb +34 -0
- data/features/step_definitions/troo_steps.rb +16 -0
- data/features/support/env.rb +22 -24
- data/features/troo.feature +31 -1
- data/lib/troo/actions/create_board.rb +10 -7
- data/lib/troo/actions/create_card.rb +5 -4
- data/lib/troo/actions/create_comment.rb +15 -13
- data/lib/troo/actions/create_list.rb +5 -4
- data/lib/troo/actions/move_card.rb +4 -3
- data/lib/troo/{external/board_adaptor.rb → adaptors/board.rb} +3 -14
- data/lib/troo/{external/card_adaptor.rb → adaptors/card.rb} +4 -15
- data/lib/troo/{external/comment_adaptor.rb → adaptors/comment.rb} +6 -17
- data/lib/troo/{external/list_adaptor.rb → adaptors/list.rb} +3 -14
- data/lib/troo/{external/member_adaptor.rb → adaptors/member.rb} +3 -14
- data/lib/troo/adaptors/resource.rb +17 -0
- data/lib/troo/cli/add.rb +53 -0
- data/lib/troo/cli/default.rb +25 -0
- data/lib/troo/cli/main.rb +46 -0
- data/lib/troo/cli/refresh.rb +31 -0
- data/lib/troo/cli/show.rb +41 -0
- data/lib/troo/cli/thor_fixes.rb +13 -0
- data/lib/troo/commands/add/board.rb +26 -0
- data/lib/troo/commands/add/card.rb +33 -0
- data/lib/troo/commands/add/comment.rb +33 -0
- data/lib/troo/commands/add/list.rb +33 -0
- data/lib/troo/commands/add/resource.rb +21 -0
- data/lib/troo/commands/commands.rb +28 -0
- data/lib/troo/commands/default/board.rb +25 -0
- data/lib/troo/commands/default/card.rb +25 -0
- data/lib/troo/commands/default/list.rb +25 -0
- data/lib/troo/commands/default/resource.rb +26 -0
- data/lib/troo/commands/refresh/all.rb +41 -0
- data/lib/troo/commands/refresh/board.rb +28 -0
- data/lib/troo/commands/refresh/card.rb +29 -0
- data/lib/troo/commands/refresh/list.rb +29 -0
- data/lib/troo/commands/refresh/resource.rb +42 -0
- data/lib/troo/commands/show/board.rb +13 -0
- data/lib/troo/commands/show/boards.rb +35 -0
- data/lib/troo/commands/show/card.rb +13 -0
- data/lib/troo/commands/show/comments.rb +21 -0
- data/lib/troo/commands/show/list.rb +13 -0
- data/lib/troo/commands/show/resource.rb +41 -0
- data/lib/troo/commands/status/board.rb +30 -0
- data/lib/troo/commands/status/card.rb +30 -0
- data/lib/troo/commands/status/list.rb +30 -0
- data/lib/troo/commands/status/resource.rb +34 -0
- data/lib/troo/decorators/board.rb +66 -0
- data/lib/troo/decorators/card.rb +105 -0
- data/lib/troo/decorators/comment.rb +36 -0
- data/lib/troo/decorators/list.rb +60 -0
- data/lib/troo/decorators/member.rb +28 -0
- data/lib/troo/external/board.rb +14 -26
- data/lib/troo/external/card.rb +2 -19
- data/lib/troo/external/comment.rb +5 -23
- data/lib/troo/external/list.rb +2 -20
- data/lib/troo/external/member.rb +2 -20
- data/lib/troo/external/resource.rb +21 -6
- data/lib/troo/helpers/command_helpers.rb +37 -0
- data/lib/troo/{display → helpers}/decorator_helpers.rb +23 -17
- data/lib/troo/{models → helpers}/model_helpers.rb +1 -1
- data/lib/troo/models/behaviours/set_default.rb +49 -0
- data/lib/troo/models/board.rb +10 -7
- data/lib/troo/models/card.rb +33 -15
- data/lib/troo/models/comment.rb +8 -5
- data/lib/troo/models/list.rb +10 -6
- data/lib/troo/models/member.rb +7 -4
- data/lib/troo/models/persistence/board.rb +19 -0
- data/lib/troo/models/persistence/card.rb +19 -0
- data/lib/troo/models/persistence/comment.rb +19 -0
- data/lib/troo/models/persistence/list.rb +19 -0
- data/lib/troo/models/persistence/member.rb +19 -0
- data/lib/troo/models/persistence/resource.rb +50 -0
- data/lib/troo/models/refresh.rb +1 -1
- data/lib/troo/models/remote/comment.rb +21 -0
- data/lib/troo/models/remote/resource.rb +25 -0
- data/lib/troo/models/retrieval/board.rb +29 -0
- data/lib/troo/models/retrieval/card.rb +33 -0
- data/lib/troo/models/retrieval/comment.rb +25 -0
- data/lib/troo/models/retrieval/list.rb +29 -0
- data/lib/troo/models/retrieval/member.rb +25 -0
- data/lib/troo/models/retrieval/resource.rb +36 -0
- data/lib/troo/presentation/sentence.rb +57 -0
- data/lib/troo/presentation/template.rb +4 -3
- data/lib/troo/presenters/board.rb +81 -0
- data/lib/troo/presenters/card.rb +30 -0
- data/lib/troo/presenters/comment.rb +38 -0
- data/lib/troo/presenters/list.rb +44 -0
- data/lib/troo/presenters/member.rb +32 -0
- data/lib/troo/troo.rb +79 -65
- data/lib/troo/version.rb +1 -2
- data/lib/troo.rb +36 -8
- data/test/lib/troo/actions/create_board_test.rb +34 -15
- data/test/lib/troo/actions/create_card_test.rb +35 -18
- data/test/lib/troo/actions/create_comment_test.rb +38 -16
- data/test/lib/troo/actions/create_list_test.rb +31 -15
- data/test/lib/troo/actions/move_card_test.rb +23 -15
- data/test/lib/troo/adaptors/board_test.rb +38 -0
- data/test/lib/troo/adaptors/card_test.rb +49 -0
- data/test/lib/troo/adaptors/comment_test.rb +41 -0
- data/test/lib/troo/adaptors/list_test.rb +38 -0
- data/test/lib/troo/adaptors/member_test.rb +44 -0
- data/test/lib/troo/commands/add/board_test.rb +43 -0
- data/test/lib/troo/commands/add/card_test.rb +44 -0
- data/test/lib/troo/commands/add/comment_test.rb +44 -0
- data/test/lib/troo/commands/add/list_test.rb +44 -0
- data/test/lib/troo/commands/add/resource_test.rb +25 -0
- data/test/lib/troo/commands/default/board_test.rb +37 -0
- data/test/lib/troo/commands/default/card_test.rb +37 -0
- data/test/lib/troo/commands/default/list_test.rb +37 -0
- data/test/lib/troo/commands/default/resource_test.rb +20 -0
- data/test/lib/troo/commands/refresh/all_test.rb +39 -0
- data/test/lib/troo/commands/refresh/board_test.rb +62 -0
- data/test/lib/troo/commands/refresh/card_test.rb +62 -0
- data/test/lib/troo/commands/refresh/list_test.rb +62 -0
- data/test/lib/troo/commands/refresh/resource_test.rb +20 -0
- data/test/lib/troo/commands/show/board_test.rb +65 -0
- data/test/lib/troo/commands/show/boards_test.rb +36 -0
- data/test/lib/troo/commands/show/card_test.rb +64 -0
- data/test/lib/troo/commands/show/comments_test.rb +64 -0
- data/test/lib/troo/commands/show/list_test.rb +64 -0
- data/test/lib/troo/commands/show/resource_test.rb +25 -0
- data/test/lib/troo/commands/status/board_test.rb +43 -0
- data/test/lib/troo/commands/status/card_test.rb +43 -0
- data/test/lib/troo/commands/status/list_test.rb +43 -0
- data/test/lib/troo/commands/status/resource_test.rb +19 -0
- data/test/lib/troo/decorators/board_test.rb +129 -0
- data/test/lib/troo/decorators/card_test.rb +237 -0
- data/test/lib/troo/decorators/comment_test.rb +74 -0
- data/test/lib/troo/decorators/list_test.rb +102 -0
- data/test/lib/troo/decorators/member_test.rb +50 -0
- data/test/lib/troo/external/board_test.rb +74 -41
- data/test/lib/troo/external/card_test.rb +49 -37
- data/test/lib/troo/external/comment_test.rb +43 -33
- data/test/lib/troo/external/list_test.rb +37 -30
- data/test/lib/troo/external/member_test.rb +37 -30
- data/test/lib/troo/external/resource_test.rb +18 -1
- data/test/lib/troo/helpers/command_helpers_test.rb +82 -0
- data/test/lib/troo/{display → helpers}/decorator_helpers_test.rb +6 -6
- data/test/lib/troo/helpers/model_helpers_test.rb +103 -0
- data/test/lib/troo/models/behaviours/set_default_test.rb +54 -0
- data/test/lib/troo/models/board_test.rb +13 -14
- data/test/lib/troo/models/card_test.rb +64 -33
- data/test/lib/troo/models/comment_test.rb +18 -19
- data/test/lib/troo/models/list_test.rb +15 -15
- data/test/lib/troo/models/member_test.rb +18 -18
- data/test/lib/troo/models/persistence/board_test.rb +62 -0
- data/test/lib/troo/models/persistence/card_test.rb +61 -0
- data/test/lib/troo/models/persistence/comment_test.rb +69 -0
- data/test/lib/troo/models/persistence/list_test.rb +60 -0
- data/test/lib/troo/models/persistence/member_test.rb +60 -0
- data/test/lib/troo/models/refresh_test.rb +12 -11
- data/test/lib/troo/models/remote/comment_test.rb +56 -0
- data/test/lib/troo/models/remote/resource_test.rb +26 -0
- data/test/lib/troo/models/retrieval/board_test.rb +93 -0
- data/test/lib/troo/models/retrieval/card_test.rb +101 -0
- data/test/lib/troo/models/retrieval/comment_test.rb +46 -0
- data/test/lib/troo/models/retrieval/list_test.rb +93 -0
- data/test/lib/troo/models/retrieval/member_test.rb +58 -0
- data/test/lib/troo/presentation/sentence_test.rb +57 -0
- data/test/lib/troo/presentation/template_test.rb +17 -16
- data/test/lib/troo/presenters/board_test.rb +79 -0
- data/test/lib/troo/presenters/card_test.rb +41 -0
- data/test/lib/troo/presenters/comment_test.rb +49 -0
- data/test/lib/troo/presenters/list_test.rb +50 -0
- data/test/lib/troo/presenters/member_test.rb +40 -0
- data/test/support/fabrication.rb +31 -32
- data/test/support/vcr_setup.rb +7 -9
- data/test/system_test.sh +55 -0
- data/test/test_helper.rb +10 -10
- data/troo.gemspec +1 -0
- metadata +232 -134
- data/features/add_board.feature +0 -1
- data/features/add_card.feature +0 -1
- data/features/add_comment.feature +0 -1
- data/features/add_list.feature +0 -1
- data/features/move_card_to_list.feature +0 -1
- data/features/refresh.feature +0 -1
- data/features/set_default.feature +0 -7
- data/features/show_board.feature +0 -1
- data/features/show_boards.feature +0 -1
- data/features/show_card.feature +0 -1
- data/features/show_comments.feature +0 -1
- data/features/show_list.feature +0 -1
- data/features/version.feature +0 -8
- data/lib/troo/actions/refresh_all.rb +0 -79
- data/lib/troo/actions/set_default.rb +0 -46
- data/lib/troo/cli/add_cli.rb +0 -83
- data/lib/troo/cli/cli_helpers.rb +0 -34
- data/lib/troo/cli/default_cli.rb +0 -32
- data/lib/troo/cli/main_cli.rb +0 -132
- data/lib/troo/cli/show_cli.rb +0 -64
- data/lib/troo/display/board_decorator.rb +0 -62
- data/lib/troo/display/board_presenter.rb +0 -71
- data/lib/troo/display/card_decorator.rb +0 -100
- data/lib/troo/display/card_presenter.rb +0 -27
- data/lib/troo/display/comment_decorator.rb +0 -33
- data/lib/troo/display/comment_presenter.rb +0 -31
- data/lib/troo/display/list_decorator.rb +0 -57
- data/lib/troo/display/list_presenter.rb +0 -41
- data/lib/troo/display/member_decorator.rb +0 -25
- data/lib/troo/display/member_presenter.rb +0 -59
- data/lib/troo/models/board_persistence.rb +0 -25
- data/lib/troo/models/board_retrieval.rb +0 -45
- data/lib/troo/models/card_persistence.rb +0 -25
- data/lib/troo/models/card_retrieval.rb +0 -49
- data/lib/troo/models/comment_persistence.rb +0 -25
- data/lib/troo/models/comment_retrieval.rb +0 -32
- data/lib/troo/models/list_persistence.rb +0 -25
- data/lib/troo/models/list_retrieval.rb +0 -45
- data/lib/troo/models/member_persistence.rb +0 -25
- data/lib/troo/models/member_retrieval.rb +0 -36
- data/lib/troo/models/persistence.rb +0 -39
- data/test/lib/troo/actions/refresh_all_test.rb +0 -68
- data/test/lib/troo/actions/set_default_test.rb +0 -44
- data/test/lib/troo/cli/add_cli_test.rb +0 -216
- data/test/lib/troo/cli/cli_helpers_test.rb +0 -24
- data/test/lib/troo/cli/default_cli_test.rb +0 -85
- data/test/lib/troo/cli/main_cli_test.rb +0 -234
- data/test/lib/troo/cli/show_cli_test.rb +0 -251
- data/test/lib/troo/display/board_decorator_test.rb +0 -126
- data/test/lib/troo/display/board_presenter_test.rb +0 -77
- data/test/lib/troo/display/card_decorator_test.rb +0 -213
- data/test/lib/troo/display/card_presenter_test.rb +0 -38
- data/test/lib/troo/display/comment_decorator_test.rb +0 -70
- data/test/lib/troo/display/comment_presenter_test.rb +0 -47
- data/test/lib/troo/display/list_decorator_test.rb +0 -98
- data/test/lib/troo/display/list_presenter_test.rb +0 -48
- data/test/lib/troo/display/member_decorator_test.rb +0 -47
- data/test/lib/troo/display/member_presenter_test.rb +0 -70
- data/test/lib/troo/external/board_adaptor_test.rb +0 -36
- data/test/lib/troo/external/card_adaptor_test.rb +0 -50
- data/test/lib/troo/external/comment_adaptor_test.rb +0 -41
- data/test/lib/troo/external/list_adaptor_test.rb +0 -38
- data/test/lib/troo/external/member_adaptor_test.rb +0 -44
- data/test/lib/troo/models/board_persistence_test.rb +0 -61
- data/test/lib/troo/models/board_retrieval_test.rb +0 -93
- data/test/lib/troo/models/card_persistence_test.rb +0 -60
- data/test/lib/troo/models/card_retrieval_test.rb +0 -101
- data/test/lib/troo/models/comment_persistence_test.rb +0 -65
- data/test/lib/troo/models/comment_retrieval_test.rb +0 -46
- data/test/lib/troo/models/list_persistence_test.rb +0 -60
- data/test/lib/troo/models/list_retrieval_test.rb +0 -93
- data/test/lib/troo/models/member_persistence_test.rb +0 -59
- data/test/lib/troo/models/member_retrieval_test.rb +0 -58
- data/test/lib/troo/models/model_helpers_test.rb +0 -103
- data/test/lib/troo/models/persistence_test.rb +0 -6
@@ -1,70 +0,0 @@
|
|
1
|
-
require_relative "../../../test_helper"
|
2
|
-
|
3
|
-
module Troo
|
4
|
-
describe CommentDecorator do
|
5
|
-
let(:described_class) { CommentDecorator }
|
6
|
-
let(:default) { true }
|
7
|
-
let(:options) { {} }
|
8
|
-
|
9
|
-
before do
|
10
|
-
@comment = Fabricate(:comment)
|
11
|
-
@member = Fabricate(:member)
|
12
|
-
end
|
13
|
-
|
14
|
-
after { database_cleanup }
|
15
|
-
|
16
|
-
describe "#initialize" do
|
17
|
-
subject { described_class.new(@comment, options) }
|
18
|
-
|
19
|
-
it "assigns the comment to an instance variable" do
|
20
|
-
subject.instance_variable_get("@comment").must_equal(@comment)
|
21
|
-
end
|
22
|
-
|
23
|
-
it "assigns the options to an instance variable" do
|
24
|
-
subject.instance_variable_get("@options").must_equal(options)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
describe "#as_view" do
|
29
|
-
subject { described_class.new(@comment).as_view }
|
30
|
-
|
31
|
-
it "returns the rendered comment" do
|
32
|
-
subject.must_match /gavinlaking1/
|
33
|
-
subject.must_match /My Test Comment/
|
34
|
-
subject.must_match /Tue, Dec 17 at 22:01/
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
describe "#member_username" do
|
39
|
-
subject { described_class.new(@comment).member_username }
|
40
|
-
|
41
|
-
it "returns the comment member username" do
|
42
|
-
subject.must_equal(@comment.member.username + ":")
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
describe "#text" do
|
47
|
-
subject { described_class.new(@comment).text }
|
48
|
-
|
49
|
-
it "returns the comment text" do
|
50
|
-
subject.must_equal(@comment.text)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
describe "#date" do
|
55
|
-
subject { described_class.new(@comment).date }
|
56
|
-
|
57
|
-
it "returns the comment date" do
|
58
|
-
subject.must_equal("Tue, Dec 17 at 22:01")
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
describe "#id" do
|
63
|
-
subject { described_class.new(@comment).id }
|
64
|
-
|
65
|
-
it "returns the comment id" do
|
66
|
-
subject.must_equal("(#{@comment.id})")
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
@@ -1,47 +0,0 @@
|
|
1
|
-
require_relative "../../../test_helper"
|
2
|
-
|
3
|
-
module Troo
|
4
|
-
describe CommentPresenter do
|
5
|
-
let(:described_class) { CommentPresenter }
|
6
|
-
let(:options) { { } }
|
7
|
-
|
8
|
-
before do
|
9
|
-
@card = Fabricate(:card)
|
10
|
-
@comment = Fabricate(:comment)
|
11
|
-
@member = Fabricate(:member)
|
12
|
-
end
|
13
|
-
|
14
|
-
after { database_cleanup }
|
15
|
-
|
16
|
-
describe "#initialize" do
|
17
|
-
subject { described_class.new(@card, options) }
|
18
|
-
|
19
|
-
it "assigns the card to an instance variable" do
|
20
|
-
subject.instance_variable_get("@card").must_equal(@card)
|
21
|
-
end
|
22
|
-
|
23
|
-
it "assigns the options to an instance variable" do
|
24
|
-
subject.instance_variable_get("@options").must_equal(options)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
describe "#show" do
|
29
|
-
subject { capture_io { described_class.show(@card, options) }.join }
|
30
|
-
|
31
|
-
context "when the card has comments" do
|
32
|
-
it "renders the view" do
|
33
|
-
subject.must_match /My Test Card/
|
34
|
-
subject.must_match /My Test Comment/
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
context "when the card has no comments" do
|
39
|
-
before { @comment.delete }
|
40
|
-
|
41
|
-
it "returns a polite message" do
|
42
|
-
subject.must_match /No comments were found/
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
@@ -1,98 +0,0 @@
|
|
1
|
-
require_relative "../../../test_helper"
|
2
|
-
|
3
|
-
module Troo
|
4
|
-
describe ListDecorator do
|
5
|
-
let(:described_class) { ListDecorator }
|
6
|
-
let(:default) { true }
|
7
|
-
let(:options) { {} }
|
8
|
-
|
9
|
-
before { @list = Fabricate(:list, default: default) }
|
10
|
-
after { database_cleanup }
|
11
|
-
|
12
|
-
describe "#initialize" do
|
13
|
-
subject { described_class.new(@list, options) }
|
14
|
-
|
15
|
-
it "assigns the list to an instance variable" do
|
16
|
-
subject.instance_variable_get("@list").must_equal(@list)
|
17
|
-
end
|
18
|
-
|
19
|
-
it "assigns the options to an instance variable" do
|
20
|
-
subject.instance_variable_get("@options").must_equal(options)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
describe "#short" do
|
25
|
-
subject { described_class.new(@list, options).short }
|
26
|
-
|
27
|
-
it "returns a one line overview of the list" do
|
28
|
-
subject.must_equal(" * \e[32m\e[4m(1) \e[0m\e[32m\e[4mMy Test List\e[0m\n")
|
29
|
-
end
|
30
|
-
|
31
|
-
context "when the ansicolor option is false" do
|
32
|
-
let(:options) { { ansicolor: false } }
|
33
|
-
|
34
|
-
it "returns a one line overview of the board" do
|
35
|
-
subject.must_equal(" * (1) My Test List\n")
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
describe "#name_str" do
|
41
|
-
subject { described_class.new(@list).name_str }
|
42
|
-
|
43
|
-
it "returns the formatted list name" do
|
44
|
-
subject.must_equal("\e[32m\e[4mMy Test List\e[0m")
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
describe "#default_str" do
|
49
|
-
subject { described_class.new(@list).default_str }
|
50
|
-
|
51
|
-
it "returns the formatted card default indicator" do
|
52
|
-
subject.must_equal(" * ")
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
describe "#id_str" do
|
57
|
-
subject { described_class.new(@list).id_str }
|
58
|
-
|
59
|
-
it "returns the formatted list id" do
|
60
|
-
subject.must_equal("\e[32m\e[4m(1) \e[0m")
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
describe "#name" do
|
65
|
-
subject { described_class.new(@list).name }
|
66
|
-
|
67
|
-
it "returns the list name" do
|
68
|
-
subject.must_equal(@list.name)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
describe "#default" do
|
73
|
-
subject { described_class.new(@list).default }
|
74
|
-
|
75
|
-
context "when default" do
|
76
|
-
it "return an indicator" do
|
77
|
-
subject.must_equal("*")
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
context "when not default" do
|
82
|
-
let(:default) { false }
|
83
|
-
|
84
|
-
it "returns nothing" do
|
85
|
-
subject.must_equal("")
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
describe "#id" do
|
91
|
-
subject { described_class.new(@list).id }
|
92
|
-
|
93
|
-
it "returns the list id" do
|
94
|
-
subject.must_equal(@list.id.to_s)
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
require_relative "../../../test_helper"
|
2
|
-
|
3
|
-
module Troo
|
4
|
-
describe ListPresenter do
|
5
|
-
let(:described_class) { ListPresenter }
|
6
|
-
let(:options) { { } }
|
7
|
-
|
8
|
-
before do
|
9
|
-
@list = Fabricate(:list)
|
10
|
-
@board = Fabricate(:board)
|
11
|
-
@card = Fabricate(:card)
|
12
|
-
end
|
13
|
-
|
14
|
-
after { database_cleanup }
|
15
|
-
|
16
|
-
describe "#initialize" do
|
17
|
-
subject { described_class.new(@list, options) }
|
18
|
-
|
19
|
-
it "assigns the list to an instance variable" do
|
20
|
-
subject.instance_variable_get("@list").must_equal(@list)
|
21
|
-
end
|
22
|
-
|
23
|
-
it "assigns the options to an instance variable" do
|
24
|
-
subject.instance_variable_get("@options").must_equal(options)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
describe "#show" do
|
29
|
-
subject { capture_io { described_class.show(@list, options) }.join }
|
30
|
-
|
31
|
-
context "when the list has cards" do
|
32
|
-
it "renders the view" do
|
33
|
-
subject.must_match /My Test Board/
|
34
|
-
subject.must_match /My Test List/
|
35
|
-
subject.must_match /My Test Card/
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
context "when the list has no cards" do
|
40
|
-
before { @card.delete }
|
41
|
-
|
42
|
-
it "returns a polite message" do
|
43
|
-
subject.must_match /No cards were found./
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,47 +0,0 @@
|
|
1
|
-
require_relative "../../../test_helper"
|
2
|
-
|
3
|
-
module Troo
|
4
|
-
describe MemberDecorator do
|
5
|
-
let(:described_class) { MemberDecorator }
|
6
|
-
let(:options) { {} }
|
7
|
-
|
8
|
-
before { @member = Fabricate(:member) }
|
9
|
-
after { database_cleanup }
|
10
|
-
|
11
|
-
describe "#initialize" do
|
12
|
-
subject { described_class.new(@member, options) }
|
13
|
-
|
14
|
-
it "assigns the member to an instance variable" do
|
15
|
-
subject.instance_variable_get("@member").must_equal(@member)
|
16
|
-
end
|
17
|
-
|
18
|
-
it "assigns the options to an instance variable" do
|
19
|
-
subject.instance_variable_get("@options").must_equal(options)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
describe "#username" do
|
24
|
-
subject { described_class.new(@member).username }
|
25
|
-
|
26
|
-
it "returns the member's username" do
|
27
|
-
subject.must_equal("@#{@member.username}")
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
describe "#name" do
|
32
|
-
subject { described_class.new(@member).name }
|
33
|
-
|
34
|
-
it "returns the member's full name" do
|
35
|
-
subject.must_equal(@member.full_name)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
describe "#initials" do
|
40
|
-
subject { described_class.new(@member).initials }
|
41
|
-
|
42
|
-
it "returns the member's initials" do
|
43
|
-
subject.must_equal(@member.initials)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
@@ -1,70 +0,0 @@
|
|
1
|
-
require_relative "../../../test_helper"
|
2
|
-
|
3
|
-
module Troo
|
4
|
-
describe MemberPresenter do
|
5
|
-
let(:described_class) { MemberPresenter }
|
6
|
-
let(:options) { { } }
|
7
|
-
let(:external_member_ids) { ["5195fdb5a8c01a2318004f5d"] }
|
8
|
-
|
9
|
-
before do
|
10
|
-
@card = Fabricate(:card, external_member_ids: external_member_ids)
|
11
|
-
@member = Fabricate(:member)
|
12
|
-
end
|
13
|
-
|
14
|
-
after { database_cleanup }
|
15
|
-
|
16
|
-
describe "#initialize" do
|
17
|
-
subject { described_class.new(@card, options) }
|
18
|
-
|
19
|
-
it "assigns the card to an instance variable" do
|
20
|
-
subject.instance_variable_get("@card").must_equal(@card)
|
21
|
-
end
|
22
|
-
|
23
|
-
it "assigns the options to an instance variable" do
|
24
|
-
subject.instance_variable_get("@options").must_equal(options)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
describe "#show" do
|
29
|
-
subject { described_class.show(@card, options) }
|
30
|
-
|
31
|
-
context "when there is one member" do
|
32
|
-
it "returns the member" do
|
33
|
-
subject.must_equal("@gavinlaking1")
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
context "when there are two members" do
|
38
|
-
let(:external_member_ids) { ["5195fdb5a8c01a2318004f5d", "helium"] }
|
39
|
-
|
40
|
-
before { @member_2 = Fabricate(:member, username: "helium", external_member_id: "helium") }
|
41
|
-
|
42
|
-
it "returns a formatted list of members" do
|
43
|
-
subject.must_equal("@gavinlaking1 and @helium")
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
context "when there are many members" do
|
48
|
-
let(:external_member_ids) { ["5195fdb5a8c01a2318004f5d", "helium", "lithium", "beryllium"] }
|
49
|
-
|
50
|
-
before do
|
51
|
-
@member_2 = Fabricate(:member, username: "helium", external_member_id: "helium")
|
52
|
-
@member_3 = Fabricate(:member, username: "lithium", external_member_id: "lithium")
|
53
|
-
@member_4 = Fabricate(:member, username: "beryllium", external_member_id: "beryllium")
|
54
|
-
end
|
55
|
-
|
56
|
-
it "returns a formatted list of members" do
|
57
|
-
subject.must_equal("@gavinlaking1, @helium, @lithium and @beryllium")
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
context "when there are no members" do
|
62
|
-
before { @member.delete }
|
63
|
-
|
64
|
-
it "returns a polite message" do
|
65
|
-
subject.must_match /No members have been assigned/
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
require_relative "../../../test_helper"
|
2
|
-
|
3
|
-
module Troo
|
4
|
-
module External
|
5
|
-
describe BoardAdaptor do
|
6
|
-
let(:described_class) { BoardAdaptor }
|
7
|
-
let(:resource) { OpenStruct.new({
|
8
|
-
id: "526d8e130a14a9d846001d96",
|
9
|
-
name: "My Test Board",
|
10
|
-
description: "A very brief description...",
|
11
|
-
closed: false,
|
12
|
-
}) }
|
13
|
-
|
14
|
-
describe "#initialize" do
|
15
|
-
subject { described_class.new(resource) }
|
16
|
-
|
17
|
-
it "assigns the resource to an instance variable" do
|
18
|
-
subject.instance_variable_get("@resource").must_equal(resource)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
describe "#adapted" do
|
23
|
-
subject { described_class.adapt(resource) }
|
24
|
-
|
25
|
-
it "returns an adapted resource suitable for local persistence" do
|
26
|
-
subject.must_equal({
|
27
|
-
external_board_id: "526d8e130a14a9d846001d96",
|
28
|
-
name: "My Test Board",
|
29
|
-
description: "A very brief description...",
|
30
|
-
closed: "false",
|
31
|
-
})
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
@@ -1,50 +0,0 @@
|
|
1
|
-
require_relative "../../../test_helper"
|
2
|
-
|
3
|
-
module Troo
|
4
|
-
module External
|
5
|
-
describe CardAdaptor do
|
6
|
-
let(:described_class) { CardAdaptor }
|
7
|
-
let(:resource) { OpenStruct.new({
|
8
|
-
board_id: "526d8e130a14a9d846001d96",
|
9
|
-
list_id: "526d8e130a14a9d846001d97",
|
10
|
-
id: "526d8f19ddb279532e005259",
|
11
|
-
member_ids: ["5195fdb5a8c01a2318004f5d"],
|
12
|
-
short_id: 67,
|
13
|
-
name: "My Test Card",
|
14
|
-
desc: "some description",
|
15
|
-
url: "some trello url",
|
16
|
-
pos: 16,
|
17
|
-
last_activity_date: "2013-12-17 21:48:09 UTC",
|
18
|
-
closed: false,
|
19
|
-
}) }
|
20
|
-
|
21
|
-
describe "#initialize" do
|
22
|
-
subject { described_class.new(resource) }
|
23
|
-
|
24
|
-
it "assigns the resource to an instance variable" do
|
25
|
-
subject.instance_variable_get("@resource").must_equal(resource)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
describe "#adapted" do
|
30
|
-
subject { described_class.adapt(resource) }
|
31
|
-
|
32
|
-
it "returns an adapted resource suitable for local persistence" do
|
33
|
-
subject.must_equal({
|
34
|
-
external_board_id: "526d8e130a14a9d846001d96",
|
35
|
-
external_list_id: "526d8e130a14a9d846001d97",
|
36
|
-
external_card_id: "526d8f19ddb279532e005259",
|
37
|
-
external_member_ids: "[\"5195fdb5a8c01a2318004f5d\"]",
|
38
|
-
short_id: "67",
|
39
|
-
name: "My Test Card",
|
40
|
-
desc: "some description",
|
41
|
-
url: "some trello url",
|
42
|
-
position: "16",
|
43
|
-
last_activity_date: "2013-12-17 21:48:09 UTC",
|
44
|
-
closed: "false",
|
45
|
-
})
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
require_relative "../../../test_helper"
|
2
|
-
|
3
|
-
module Troo
|
4
|
-
module External
|
5
|
-
describe CommentAdaptor do
|
6
|
-
let(:described_class) { CommentAdaptor }
|
7
|
-
let(:resource) { OpenStruct.new({
|
8
|
-
id: "51f9277b2822b8654f0023af",
|
9
|
-
member_creator_id: "5195fdb5a8c01a2318004f5d",
|
10
|
-
date: "2013-12-17 22:01:13 UTC",
|
11
|
-
data: {
|
12
|
-
"text" => "My Test Comment",
|
13
|
-
"board" => { "id" => "526d8e130a14a9d846001d96" },
|
14
|
-
"card" => { "id" => "526d8f19ddb279532e005259" } } })
|
15
|
-
}
|
16
|
-
|
17
|
-
describe "#initialize" do
|
18
|
-
subject { described_class.new(resource) }
|
19
|
-
|
20
|
-
it "assigns the resource to an instance variable" do
|
21
|
-
subject.instance_variable_get("@resource").must_equal(resource)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
describe "#adapted" do
|
26
|
-
subject { described_class.adapt(resource) }
|
27
|
-
|
28
|
-
it "returns an adapted resource suitable for local persistence" do
|
29
|
-
subject.must_equal({
|
30
|
-
external_comment_id: "51f9277b2822b8654f0023af",
|
31
|
-
external_board_id: "526d8e130a14a9d846001d96",
|
32
|
-
external_card_id: "526d8f19ddb279532e005259",
|
33
|
-
external_member_id: "5195fdb5a8c01a2318004f5d",
|
34
|
-
date: "2013-12-17 22:01:13 UTC",
|
35
|
-
text: "My Test Comment",
|
36
|
-
})
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
require_relative "../../../test_helper"
|
2
|
-
|
3
|
-
module Troo
|
4
|
-
module External
|
5
|
-
describe ListAdaptor do
|
6
|
-
let(:described_class) { ListAdaptor }
|
7
|
-
let(:resource) { OpenStruct.new({
|
8
|
-
board_id: "526d8e130a14a9d846001d96",
|
9
|
-
id: "526d8e130a14a9d846001d97",
|
10
|
-
name: "My Test List",
|
11
|
-
pos: 32768,
|
12
|
-
closed: false,
|
13
|
-
}) }
|
14
|
-
|
15
|
-
describe "#initialize" do
|
16
|
-
subject { described_class.new(resource) }
|
17
|
-
|
18
|
-
it "assigns the resource to an instance variable" do
|
19
|
-
subject.instance_variable_get("@resource").must_equal(resource)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
describe "#adapted" do
|
24
|
-
subject { described_class.adapt(resource) }
|
25
|
-
|
26
|
-
it "returns an adapted resource suitable for local persistence" do
|
27
|
-
subject.must_equal({
|
28
|
-
external_board_id: "526d8e130a14a9d846001d96",
|
29
|
-
external_list_id: "526d8e130a14a9d846001d97",
|
30
|
-
name: "My Test List",
|
31
|
-
position: "32768",
|
32
|
-
closed: "false",
|
33
|
-
})
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require_relative "../../../test_helper"
|
2
|
-
|
3
|
-
module Troo
|
4
|
-
module External
|
5
|
-
describe MemberAdaptor do
|
6
|
-
let(:described_class) { MemberAdaptor }
|
7
|
-
let(:resource) { OpenStruct.new({
|
8
|
-
id: "5195fdb5a8c01a2318004f5d",
|
9
|
-
username: "gavinlaking1",
|
10
|
-
email: "gavinlaking@gmail.com",
|
11
|
-
full_name: "Gavin Laking",
|
12
|
-
initials: "GL",
|
13
|
-
avatar_id: "some_avatar_id",
|
14
|
-
bio: "some bio",
|
15
|
-
url: "http://www.gavinlaking.name/"
|
16
|
-
}) }
|
17
|
-
|
18
|
-
describe "#initialize" do
|
19
|
-
subject { described_class.new(resource) }
|
20
|
-
|
21
|
-
it "assigns the resource to an instance variable" do
|
22
|
-
subject.instance_variable_get("@resource").must_equal(resource)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
describe "#adapted" do
|
27
|
-
subject { described_class.adapt(resource) }
|
28
|
-
|
29
|
-
it "returns an adapted resource suitable for local persistence" do
|
30
|
-
subject.must_equal({
|
31
|
-
external_member_id: "5195fdb5a8c01a2318004f5d",
|
32
|
-
username: "gavinlaking1",
|
33
|
-
email: "gavinlaking@gmail.com",
|
34
|
-
full_name: "Gavin Laking",
|
35
|
-
initials: "GL",
|
36
|
-
avatar_id: "some_avatar_id",
|
37
|
-
bio: "some bio",
|
38
|
-
url: "http://www.gavinlaking.name/",
|
39
|
-
})
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
@@ -1,61 +0,0 @@
|
|
1
|
-
require_relative "../../../test_helper"
|
2
|
-
|
3
|
-
module Troo
|
4
|
-
describe BoardPersistence do
|
5
|
-
let(:described_class) { BoardPersistence }
|
6
|
-
let(:resource) { OpenStruct.new({
|
7
|
-
id: "526d8e130a14a9d846001d96",
|
8
|
-
name: resource_name,
|
9
|
-
description: "A very brief description...",
|
10
|
-
closed: false
|
11
|
-
}) }
|
12
|
-
let(:resource_name) { "My Test Board" }
|
13
|
-
let(:options) { {} }
|
14
|
-
|
15
|
-
before { @board = Fabricate(:board) }
|
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").must_equal(resource)
|
23
|
-
end
|
24
|
-
|
25
|
-
it "assigns the options to an instance variable" do
|
26
|
-
subject.instance_variable_get("@options").must_equal(options)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
describe "#persist" do
|
31
|
-
subject { described_class.for(resource, options) }
|
32
|
-
|
33
|
-
context "when there is already a local copy" do
|
34
|
-
context "and the local copy is identical" do
|
35
|
-
it "returns the local copy" do
|
36
|
-
subject.must_equal(@board)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
context "and the local copy is out of date" do
|
41
|
-
let(:resource_name) { "My Renamed Board" }
|
42
|
-
|
43
|
-
it "updates and returns the new local copy" do
|
44
|
-
subject.name.must_equal(resource_name)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
context "when there is not already a local copy" do
|
50
|
-
let(:resource_name) { "My New Test Board" }
|
51
|
-
|
52
|
-
before { database_cleanup }
|
53
|
-
|
54
|
-
it "creates and returns the new local copy" do
|
55
|
-
subject.name.must_equal(resource_name)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|