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,57 +0,0 @@
|
|
1
|
-
module Troo
|
2
|
-
class ListDecorator
|
3
|
-
include DecoratorHelpers
|
4
|
-
|
5
|
-
def initialize(list, options = {})
|
6
|
-
@list = list
|
7
|
-
@options = options
|
8
|
-
end
|
9
|
-
|
10
|
-
def short
|
11
|
-
[default_str, id_str, name_str].join + "\n"
|
12
|
-
end
|
13
|
-
|
14
|
-
def name_str
|
15
|
-
highlight(name, options)
|
16
|
-
end
|
17
|
-
|
18
|
-
def default_str
|
19
|
-
default.center(3)
|
20
|
-
end
|
21
|
-
|
22
|
-
def id_str
|
23
|
-
highlight(brackets(id) + " ", options).rjust(6)
|
24
|
-
end
|
25
|
-
|
26
|
-
def name
|
27
|
-
(list.name && list.name.chomp) || "N/A"
|
28
|
-
end
|
29
|
-
|
30
|
-
def default
|
31
|
-
list.default? ? "*" : ""
|
32
|
-
end
|
33
|
-
|
34
|
-
def id
|
35
|
-
list.id.to_s
|
36
|
-
end
|
37
|
-
|
38
|
-
def cards(alt_options = {})
|
39
|
-
list.cards.map { |card| card.decorator(alt_options) }
|
40
|
-
end
|
41
|
-
|
42
|
-
private
|
43
|
-
attr_reader :list
|
44
|
-
|
45
|
-
def options
|
46
|
-
defaults.merge!(@options)
|
47
|
-
end
|
48
|
-
|
49
|
-
def defaults
|
50
|
-
{
|
51
|
-
ansicolor: true,
|
52
|
-
colour: Esc.green,
|
53
|
-
underline: Esc.underline
|
54
|
-
}
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
module Troo
|
2
|
-
class ListPresenter
|
3
|
-
class << self
|
4
|
-
def show(list, options = {})
|
5
|
-
new(list, options).show
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
include DecoratorHelpers
|
10
|
-
|
11
|
-
def initialize(list, options = {})
|
12
|
-
@list = list
|
13
|
-
@options = options
|
14
|
-
end
|
15
|
-
|
16
|
-
def show
|
17
|
-
puts board.decorator.title
|
18
|
-
|
19
|
-
title_for(list.decorator)
|
20
|
-
|
21
|
-
print_error "No cards were found." if cards.empty?
|
22
|
-
|
23
|
-
cards.each do |card|
|
24
|
-
title_for(card)
|
25
|
-
end
|
26
|
-
|
27
|
-
puts
|
28
|
-
end
|
29
|
-
|
30
|
-
private
|
31
|
-
attr_reader :list
|
32
|
-
|
33
|
-
def board
|
34
|
-
list.board
|
35
|
-
end
|
36
|
-
|
37
|
-
def cards
|
38
|
-
list.decorator.cards
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module Troo
|
2
|
-
class MemberDecorator
|
3
|
-
include DecoratorHelpers
|
4
|
-
|
5
|
-
def initialize(member, options = {})
|
6
|
-
@member = member
|
7
|
-
@options = options
|
8
|
-
end
|
9
|
-
|
10
|
-
def username
|
11
|
-
["@", member.username].join
|
12
|
-
end
|
13
|
-
|
14
|
-
def name
|
15
|
-
member.full_name
|
16
|
-
end
|
17
|
-
|
18
|
-
def initials
|
19
|
-
member.initials
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
|
-
attr_reader :member
|
24
|
-
end
|
25
|
-
end
|
@@ -1,59 +0,0 @@
|
|
1
|
-
module Troo
|
2
|
-
class MemberPresenter
|
3
|
-
class << self
|
4
|
-
def show(card, options = {})
|
5
|
-
new(card, options).show
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
include DecoratorHelpers
|
10
|
-
|
11
|
-
def initialize(card, options = {})
|
12
|
-
@card = card
|
13
|
-
@options = options
|
14
|
-
end
|
15
|
-
|
16
|
-
def show
|
17
|
-
decorated_members
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
attr_reader :card
|
22
|
-
|
23
|
-
def decorated_members
|
24
|
-
if one_member?
|
25
|
-
members.first
|
26
|
-
elsif two_members?
|
27
|
-
members.join(" and ")
|
28
|
-
elsif many_members?
|
29
|
-
word_wrap([all_but_last_member, last_member].join(" and "))
|
30
|
-
else
|
31
|
-
"No members have been assigned."
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def members
|
36
|
-
@members ||= card.members.map { |member| member.decorator.username }
|
37
|
-
end
|
38
|
-
|
39
|
-
def one_member?
|
40
|
-
members.size == 1
|
41
|
-
end
|
42
|
-
|
43
|
-
def two_members?
|
44
|
-
members.size == 2
|
45
|
-
end
|
46
|
-
|
47
|
-
def many_members?
|
48
|
-
members.size > 2
|
49
|
-
end
|
50
|
-
|
51
|
-
def all_but_last_member
|
52
|
-
members[0...-1].join(", ")
|
53
|
-
end
|
54
|
-
|
55
|
-
def last_member
|
56
|
-
members[-1]
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module Troo
|
2
|
-
class BoardPersistence
|
3
|
-
include Persistence
|
4
|
-
|
5
|
-
def initialize(resource, options = {})
|
6
|
-
@resource = resource
|
7
|
-
@options = options
|
8
|
-
end
|
9
|
-
|
10
|
-
private
|
11
|
-
attr_reader :resource, :options
|
12
|
-
|
13
|
-
def created
|
14
|
-
Troo::Board.create(remote)
|
15
|
-
end
|
16
|
-
|
17
|
-
def local
|
18
|
-
@local ||= Troo::Board.first(external_board_id: resource.id)
|
19
|
-
end
|
20
|
-
|
21
|
-
def remote
|
22
|
-
@remote ||= Troo::External::BoardAdaptor.adapt(resource)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
module Troo
|
2
|
-
class BoardRetrieval
|
3
|
-
class << self
|
4
|
-
def all
|
5
|
-
Troo::Board.all
|
6
|
-
end
|
7
|
-
|
8
|
-
def default
|
9
|
-
new.retrieve
|
10
|
-
end
|
11
|
-
|
12
|
-
def retrieve(id = nil)
|
13
|
-
new(id).retrieve
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def initialize(id = nil)
|
18
|
-
@id = id
|
19
|
-
end
|
20
|
-
|
21
|
-
def retrieve
|
22
|
-
return default unless id
|
23
|
-
by_id || by_external_id || remote
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
attr_reader :id
|
28
|
-
|
29
|
-
def default
|
30
|
-
Troo::Board.default
|
31
|
-
end
|
32
|
-
|
33
|
-
def by_id
|
34
|
-
Troo::Board[id]
|
35
|
-
end
|
36
|
-
|
37
|
-
def by_external_id
|
38
|
-
Troo::Board.first(external_board_id: id)
|
39
|
-
end
|
40
|
-
|
41
|
-
def remote
|
42
|
-
External::Board.fetch(id).first
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module Troo
|
2
|
-
class CardPersistence
|
3
|
-
include Persistence
|
4
|
-
|
5
|
-
def initialize(resource, options = {})
|
6
|
-
@resource = resource
|
7
|
-
@options = options
|
8
|
-
end
|
9
|
-
|
10
|
-
private
|
11
|
-
attr_reader :resource, :options
|
12
|
-
|
13
|
-
def created
|
14
|
-
Troo::Card.create(remote)
|
15
|
-
end
|
16
|
-
|
17
|
-
def local
|
18
|
-
@local ||= Troo::Card.first(external_card_id: resource.id)
|
19
|
-
end
|
20
|
-
|
21
|
-
def remote
|
22
|
-
@remote ||= Troo::External::CardAdaptor.adapt(resource)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,49 +0,0 @@
|
|
1
|
-
module Troo
|
2
|
-
class CardRetrieval
|
3
|
-
class << self
|
4
|
-
def all
|
5
|
-
Troo::Card.all
|
6
|
-
end
|
7
|
-
|
8
|
-
def default
|
9
|
-
new.retrieve
|
10
|
-
end
|
11
|
-
|
12
|
-
def retrieve(id = nil)
|
13
|
-
new(id).retrieve
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def initialize(id = nil)
|
18
|
-
@id = id
|
19
|
-
end
|
20
|
-
|
21
|
-
def retrieve
|
22
|
-
return default unless id
|
23
|
-
by_short_id || by_id || by_external_id || remote
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
attr_reader :id
|
28
|
-
|
29
|
-
def default
|
30
|
-
Troo::Card.default
|
31
|
-
end
|
32
|
-
|
33
|
-
def by_id
|
34
|
-
Troo::Card[id]
|
35
|
-
end
|
36
|
-
|
37
|
-
def by_short_id
|
38
|
-
Troo::Card.first(short_id: id)
|
39
|
-
end
|
40
|
-
|
41
|
-
def by_external_id
|
42
|
-
Troo::Card.first(external_card_id: id)
|
43
|
-
end
|
44
|
-
|
45
|
-
def remote
|
46
|
-
External::Card.fetch(id, { mode: :card }).first
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module Troo
|
2
|
-
class CommentPersistence
|
3
|
-
include Persistence
|
4
|
-
|
5
|
-
def initialize(resource, options = {})
|
6
|
-
@resource = resource
|
7
|
-
@options = options
|
8
|
-
end
|
9
|
-
|
10
|
-
private
|
11
|
-
attr_reader :resource, :options
|
12
|
-
|
13
|
-
def created
|
14
|
-
Troo::Comment.create(remote)
|
15
|
-
end
|
16
|
-
|
17
|
-
def local
|
18
|
-
@local ||= Troo::Comment.first(external_comment_id: resource.id)
|
19
|
-
end
|
20
|
-
|
21
|
-
def remote
|
22
|
-
@remote ||= Troo::External::CommentAdaptor.adapt(resource)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
module Troo
|
2
|
-
class CommentRetrieval
|
3
|
-
class << self
|
4
|
-
def all
|
5
|
-
Troo::Comment.all
|
6
|
-
end
|
7
|
-
|
8
|
-
def retrieve(id)
|
9
|
-
new(id).retrieve
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def initialize(id)
|
14
|
-
@id = id
|
15
|
-
end
|
16
|
-
|
17
|
-
def retrieve
|
18
|
-
by_id || by_external_id
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
attr_reader :id
|
23
|
-
|
24
|
-
def by_id
|
25
|
-
Troo::Comment[id]
|
26
|
-
end
|
27
|
-
|
28
|
-
def by_external_id
|
29
|
-
Troo::Comment.first(external_comment_id: id)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module Troo
|
2
|
-
class ListPersistence
|
3
|
-
include Persistence
|
4
|
-
|
5
|
-
def initialize(resource, options = {})
|
6
|
-
@resource = resource
|
7
|
-
@options = options
|
8
|
-
end
|
9
|
-
|
10
|
-
private
|
11
|
-
attr_reader :resource, :options
|
12
|
-
|
13
|
-
def created
|
14
|
-
Troo::List.create(remote)
|
15
|
-
end
|
16
|
-
|
17
|
-
def local
|
18
|
-
@local ||= Troo::List.first(external_list_id: resource.id)
|
19
|
-
end
|
20
|
-
|
21
|
-
def remote
|
22
|
-
@remote ||= Troo::External::ListAdaptor.adapt(resource)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
module Troo
|
2
|
-
class ListRetrieval
|
3
|
-
class << self
|
4
|
-
def all
|
5
|
-
Troo::List.all
|
6
|
-
end
|
7
|
-
|
8
|
-
def default
|
9
|
-
new.retrieve
|
10
|
-
end
|
11
|
-
|
12
|
-
def retrieve(id = nil)
|
13
|
-
new(id).retrieve
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def initialize(id = nil)
|
18
|
-
@id = id
|
19
|
-
end
|
20
|
-
|
21
|
-
def retrieve
|
22
|
-
return default unless id
|
23
|
-
by_id || by_external_id || remote
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
attr_reader :id
|
28
|
-
|
29
|
-
def default
|
30
|
-
Troo::List.default
|
31
|
-
end
|
32
|
-
|
33
|
-
def by_id
|
34
|
-
Troo::List[id]
|
35
|
-
end
|
36
|
-
|
37
|
-
def by_external_id
|
38
|
-
Troo::List.first(external_list_id: id)
|
39
|
-
end
|
40
|
-
|
41
|
-
def remote
|
42
|
-
External::List.fetch(id, { mode: :list }).first
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module Troo
|
2
|
-
class MemberPersistence
|
3
|
-
include Persistence
|
4
|
-
|
5
|
-
def initialize(resource, options = {})
|
6
|
-
@resource = resource
|
7
|
-
@options = options
|
8
|
-
end
|
9
|
-
|
10
|
-
private
|
11
|
-
attr_reader :resource, :options
|
12
|
-
|
13
|
-
def created
|
14
|
-
Troo::Member.create(remote)
|
15
|
-
end
|
16
|
-
|
17
|
-
def local
|
18
|
-
@local ||= Troo::Member.first(external_member_id: resource.id)
|
19
|
-
end
|
20
|
-
|
21
|
-
def remote
|
22
|
-
@remote ||= Troo::External::MemberAdaptor.adapt(resource)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
module Troo
|
2
|
-
class MemberRetrieval
|
3
|
-
class << self
|
4
|
-
def all
|
5
|
-
Troo::Member.all
|
6
|
-
end
|
7
|
-
|
8
|
-
def retrieve(id)
|
9
|
-
new(id).retrieve
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def initialize(id)
|
14
|
-
@id = id
|
15
|
-
end
|
16
|
-
|
17
|
-
def retrieve
|
18
|
-
by_id || by_external_id || remote
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
attr_reader :id
|
23
|
-
|
24
|
-
def by_id
|
25
|
-
Troo::Member[id]
|
26
|
-
end
|
27
|
-
|
28
|
-
def by_external_id
|
29
|
-
Troo::Member.first(external_member_id: id)
|
30
|
-
end
|
31
|
-
|
32
|
-
def remote
|
33
|
-
External::Member.fetch(id, { mode: :member }).first
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
module Troo
|
2
|
-
module Persistence
|
3
|
-
module ClassMethods
|
4
|
-
def for(resource, options = {})
|
5
|
-
new(resource, options).persist
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
def self.included(base)
|
10
|
-
base.extend(ClassMethods)
|
11
|
-
end
|
12
|
-
|
13
|
-
def persist
|
14
|
-
return local if local_identical?
|
15
|
-
return updated if local_exists?
|
16
|
-
return created
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
def updated
|
22
|
-
local.update(remote) && local
|
23
|
-
end
|
24
|
-
|
25
|
-
def local_identical?
|
26
|
-
return false unless local_exists?
|
27
|
-
return false if local_data != remote
|
28
|
-
true
|
29
|
-
end
|
30
|
-
|
31
|
-
def local_data
|
32
|
-
local.external_attributes
|
33
|
-
end
|
34
|
-
|
35
|
-
def local_exists?
|
36
|
-
!!local
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
@@ -1,68 +0,0 @@
|
|
1
|
-
require_relative "../../../test_helper"
|
2
|
-
|
3
|
-
module Troo
|
4
|
-
describe RefreshAll do
|
5
|
-
let(:described_class) { RefreshAll }
|
6
|
-
let(:options) { { } }
|
7
|
-
|
8
|
-
before do
|
9
|
-
@board = Fabricate(:board)
|
10
|
-
@list = Fabricate(:list)
|
11
|
-
@card = Fabricate(:card)
|
12
|
-
|
13
|
-
External::Board.stubs(:fetch_all).returns([@board])
|
14
|
-
External::List.stubs(:fetch).returns([@list])
|
15
|
-
External::Card.stubs(:fetch).returns([@card])
|
16
|
-
External::Comment.stubs(:fetch).returns([])
|
17
|
-
External::Member.stubs(:fetch).returns([])
|
18
|
-
end
|
19
|
-
|
20
|
-
after { database_cleanup }
|
21
|
-
|
22
|
-
describe ".initialize" do
|
23
|
-
subject { described_class.new(@board, options) }
|
24
|
-
|
25
|
-
it "assigns the board to an instance variable" do
|
26
|
-
subject.instance_variable_get("@board").must_equal(@board)
|
27
|
-
end
|
28
|
-
|
29
|
-
it "assigns the options to an instance variable" do
|
30
|
-
subject.instance_variable_get("@options").must_equal(options)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
describe ".all" do
|
35
|
-
let(:board) { nil }
|
36
|
-
|
37
|
-
subject { described_class.all(board, options) }
|
38
|
-
|
39
|
-
it "returns true when successful" do
|
40
|
-
subject.must_equal(true)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
describe ".default" do
|
45
|
-
subject { described_class.default(@board, options) }
|
46
|
-
|
47
|
-
it "returns true when successful" do
|
48
|
-
subject.must_equal(true)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
describe ".lists" do
|
53
|
-
subject { described_class.lists(@board, options) }
|
54
|
-
|
55
|
-
it "refreshes the lists for the board specified" do
|
56
|
-
subject.size.must_equal(1)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
describe ".cards" do
|
61
|
-
subject { described_class.cards(@board, options) }
|
62
|
-
|
63
|
-
it "refreshes the cards for the board specified" do
|
64
|
-
subject.size.must_equal(1)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require_relative "../../../test_helper"
|
2
|
-
|
3
|
-
module Troo
|
4
|
-
describe SetDefault do
|
5
|
-
let(:described_class) { SetDefault }
|
6
|
-
|
7
|
-
describe ".initialize" do
|
8
|
-
let(:entity) { :some_model }
|
9
|
-
|
10
|
-
subject { described_class.new(entity) }
|
11
|
-
|
12
|
-
it "assigns the entity to an instance variable" do
|
13
|
-
subject.instance_variable_get("@entity").must_equal(entity)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
describe "#set_default!" do
|
18
|
-
before do
|
19
|
-
@board_1 = Fabricate(:board, default: true)
|
20
|
-
@board_2 = Fabricate(:board, default: false)
|
21
|
-
end
|
22
|
-
|
23
|
-
after { database_cleanup }
|
24
|
-
|
25
|
-
subject { described_class.for(entity) }
|
26
|
-
|
27
|
-
context "when the entity is already the default" do
|
28
|
-
let(:entity) { @board_1 }
|
29
|
-
|
30
|
-
it { subject.must_equal false }
|
31
|
-
end
|
32
|
-
|
33
|
-
context "when the entity is not already the default" do
|
34
|
-
let(:entity) { @board_2 }
|
35
|
-
|
36
|
-
it "sets the specified entity to be the default" do
|
37
|
-
subject.default.must_equal(true)
|
38
|
-
|
39
|
-
subject.must_equal(@board_2)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|