troo 0.0.10 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/Gemfile.lock +7 -7
  4. data/README.md +39 -40
  5. data/Rakefile +17 -11
  6. data/features/step_definitions/troo_steps.rb +1 -1
  7. data/lib/troo.rb +24 -35
  8. data/lib/troo/api/client.rb +3 -0
  9. data/lib/troo/api/endpoints.rb +7 -1
  10. data/lib/troo/api/headers.rb +7 -0
  11. data/lib/troo/api/request.rb +9 -0
  12. data/lib/troo/api/response.rb +3 -0
  13. data/lib/troo/cli/add.rb +11 -0
  14. data/lib/troo/cli/commands/add.rb +9 -0
  15. data/lib/troo/cli/commands/default.rb +7 -0
  16. data/lib/troo/cli/commands/move/card.rb +9 -0
  17. data/lib/troo/cli/commands/refresh.rb +7 -0
  18. data/lib/troo/cli/commands/refresh/all.rb +2 -0
  19. data/lib/troo/cli/commands/show.rb +7 -0
  20. data/lib/troo/cli/commands/show/show_boards.rb +2 -0
  21. data/lib/troo/cli/commands/show/show_comments.rb +5 -0
  22. data/lib/troo/cli/commands/status.rb +5 -0
  23. data/lib/troo/cli/default.rb +6 -0
  24. data/lib/troo/cli/main.rb +8 -0
  25. data/lib/troo/cli/refresh.rb +7 -0
  26. data/lib/troo/cli/show.rb +9 -0
  27. data/lib/troo/cli/thor_fixes.rb +4 -0
  28. data/lib/troo/configuration.rb +5 -30
  29. data/lib/troo/database.rb +7 -0
  30. data/lib/troo/debug.rb +3 -0
  31. data/lib/troo/decorators/member.rb +1 -0
  32. data/lib/troo/decorators/resource.rb +19 -0
  33. data/lib/troo/helpers/model_helpers.rb +13 -0
  34. data/lib/troo/helpers/remote_model_helpers.rb +9 -0
  35. data/lib/troo/launcher.rb +44 -0
  36. data/lib/troo/models/behaviours/set_default.rb +6 -0
  37. data/lib/troo/models/board.rb +9 -0
  38. data/lib/troo/models/card.rb +15 -0
  39. data/lib/troo/models/comment.rb +9 -0
  40. data/lib/troo/models/list.rb +9 -0
  41. data/lib/troo/models/member.rb +8 -0
  42. data/lib/troo/models/refresh.rb +2 -0
  43. data/lib/troo/options.rb +9 -0
  44. data/lib/troo/persistence/local.rb +8 -0
  45. data/lib/troo/preference.rb +29 -0
  46. data/lib/troo/presentation/formatter.rb +12 -0
  47. data/lib/troo/presentation/sentence.rb +7 -0
  48. data/lib/troo/presentation/template.rb +7 -0
  49. data/lib/troo/presenters/board.rb +8 -0
  50. data/lib/troo/presenters/card.rb +4 -0
  51. data/lib/troo/presenters/comment.rb +4 -0
  52. data/lib/troo/presenters/list.rb +5 -0
  53. data/lib/troo/presenters/member.rb +4 -0
  54. data/lib/troo/presenters/resource.rb +7 -0
  55. data/lib/troo/remote/board.rb +6 -0
  56. data/lib/troo/remote/card.rb +7 -0
  57. data/lib/troo/remote/comment.rb +10 -0
  58. data/lib/troo/remote/list.rb +6 -0
  59. data/lib/troo/remote/member.rb +6 -0
  60. data/lib/troo/remote/persistence/board.rb +7 -0
  61. data/lib/troo/remote/persistence/card.rb +9 -0
  62. data/lib/troo/remote/persistence/comment.rb +7 -0
  63. data/lib/troo/remote/persistence/list.rb +7 -0
  64. data/lib/troo/remote/persistence/move_card.rb +9 -0
  65. data/lib/troo/retrieval/local.rb +16 -0
  66. data/lib/troo/retrieval/remote.rb +9 -0
  67. data/lib/troo/troo.rb +4 -0
  68. data/lib/troo/version.rb +1 -1
  69. data/test/lib/troo/api/client_test.rb +4 -4
  70. data/test/lib/troo/api/response_test.rb +27 -0
  71. data/test/lib/troo/cli/commands/refresh/all_test.rb +2 -2
  72. data/test/lib/troo/cli/commands/refresh_test.rb +2 -2
  73. data/test/lib/troo/configuration_test.rb +1 -1
  74. data/test/lib/troo/database_test.rb +7 -0
  75. data/test/lib/troo/decorators/resource_test.rb +5 -3
  76. data/test/lib/troo/launcher_test.rb +7 -0
  77. data/test/lib/troo/models/card_test.rb +5 -5
  78. data/test/lib/troo/options_test.rb +7 -0
  79. data/test/lib/troo/preference_test.rb +21 -0
  80. data/test/lib/troo/presentation/formatter_test.rb +8 -8
  81. data/test/lib/troo/presenters/member_test.rb +33 -3
  82. data/test/lib/troo/presenters/resource_test.rb +2 -2
  83. data/test/lib/troo/remote/board_test.rb +2 -2
  84. data/test/lib/troo/remote/card_test.rb +2 -2
  85. data/test/lib/troo/remote/comment_test.rb +2 -2
  86. data/test/lib/troo/remote/list_test.rb +2 -2
  87. data/test/lib/troo/remote/member_test.rb +2 -2
  88. data/test/lib/troo/remote/persistence/card_test.rb +2 -2
  89. data/test/lib/troo/remote/persistence/comment_test.rb +2 -2
  90. data/test/lib/troo/remote/persistence/list_test.rb +2 -2
  91. data/test/lib/troo_test.rb +5 -0
  92. data/test/support/remotes/board.json +140 -0
  93. data/test/test_helper.rb +1 -1
  94. data/troo.gemspec +2 -1
  95. metadata +34 -4
@@ -0,0 +1,29 @@
1
+ module Troo
2
+ class Preference
3
+ include Virtus.value_object
4
+
5
+ values do
6
+ attribute :label, String
7
+ attribute :value, String
8
+ end
9
+
10
+ class << self
11
+ # @param [Hash]
12
+ # @return []
13
+ def view(parameters)
14
+ new(parameters).view
15
+ end
16
+ end
17
+
18
+ # @return [String]
19
+ def view
20
+ [formatted_label, value].join(' ')
21
+ end
22
+
23
+ private
24
+
25
+ def formatted_label
26
+ (label + ':').rjust(25, ' ')
27
+ end
28
+ end
29
+ end
@@ -26,6 +26,7 @@ module Troo
26
26
  attribute :align, Troo::Align, default: Troo::Align.new
27
27
  end
28
28
 
29
+ # @return [String]
29
30
  def underline
30
31
  @underline ? Esc.underline : nil
31
32
  end
@@ -38,21 +39,30 @@ module Troo
38
39
  attribute :options, Troo::Format
39
40
 
40
41
  class << self
42
+ # @param []
43
+ # @param [Hash]
44
+ # @return []
41
45
  def highlight(value, options = {})
42
46
  new(value: value, options: options).highlight
43
47
  end
44
48
 
49
+ # @param []
50
+ # @return []
45
51
  def error(value)
46
52
  new(value: value,
47
53
  options: { colour: Esc.red }).error
48
54
  end
49
55
 
56
+ # @param []
57
+ # @param [Integer]
58
+ # @return []
50
59
  def wordwrap(value, width = 70)
51
60
  new(value: value,
52
61
  options: { align: { width: width } }).wordwrap
53
62
  end
54
63
  end
55
64
 
65
+ # @return [String]
56
66
  def highlight
57
67
  [
58
68
  options.colour,
@@ -62,6 +72,7 @@ module Troo
62
72
  ].join
63
73
  end
64
74
 
75
+ # @return [String]
65
76
  def error
66
77
  [
67
78
  options.colour,
@@ -70,6 +81,7 @@ module Troo
70
81
  ].join
71
82
  end
72
83
 
84
+ # @return []
73
85
  def wordwrap
74
86
  Wordwrap.this(formatted_value, width: width)
75
87
  end
@@ -1,15 +1,22 @@
1
1
  module Troo
2
2
  class Sentence
3
3
  class << self
4
+ # @param [Array]
5
+ # @param [String]
6
+ # @return [String]
4
7
  def construct(elements, label = 'elements')
5
8
  new(elements, label).construct
6
9
  end
7
10
  end
8
11
 
12
+ # @param [Array]
13
+ # @param [String]
14
+ # @return [Troo::Sentence]
9
15
  def initialize(elements, label)
10
16
  @elements, @label = elements, label
11
17
  end
12
18
 
19
+ # @return [String]
13
20
  def construct
14
21
  if one?
15
22
  first
@@ -3,15 +3,22 @@ module Troo
3
3
  include DecoratorHelpers
4
4
 
5
5
  class << self
6
+ # @param []
7
+ # @param []
8
+ # @return []
6
9
  def parse(object, path)
7
10
  new(object, path).parse
8
11
  end
9
12
  end
10
13
 
14
+ # @param []
15
+ # @param []
16
+ # @return []
11
17
  def initialize(object, path)
12
18
  @object, @path = object, path
13
19
  end
14
20
 
21
+ # @return []
15
22
  def parse
16
23
  ERB.new(load, nil, '-').result(binding)
17
24
  end
@@ -4,16 +4,23 @@ module Troo
4
4
  include DecoratorHelpers
5
5
 
6
6
  class << self
7
+ # @param [Array]
8
+ # @param [Hash]
9
+ # @return [NilClass]
7
10
  def all(boards, options = {})
8
11
  boards.map { |board| new(board, options).show }
9
12
  nil
10
13
  end
11
14
  end
12
15
 
16
+ # @param [Troo::Board]
17
+ # @param [Hash]
18
+ # @return [Troo::Presenters::Board]
13
19
  def initialize(board, options = {})
14
20
  @board, @options = board, options
15
21
  end
16
22
 
23
+ # @return []
17
24
  def show
18
25
  output.render Presenters::Resource.list_view(board)
19
26
 
@@ -28,6 +35,7 @@ module Troo
28
35
  end
29
36
  end
30
37
 
38
+ # @return []
31
39
  def render_lists
32
40
  output.spacer
33
41
 
@@ -3,10 +3,14 @@ module Troo
3
3
  class Card
4
4
  include DecoratorHelpers
5
5
 
6
+ # @param [Troo::Card]
7
+ # @param [Hash]
8
+ # @return [Troo::Presenter::Card]
6
9
  def initialize(card, options = {})
7
10
  @card, @options = card, options
8
11
  end
9
12
 
13
+ # @return []
10
14
  def show
11
15
  output.render Template.parse(card, '/../views/card.erb')
12
16
  end
@@ -3,10 +3,14 @@ module Troo
3
3
  class Comment
4
4
  include DecoratorHelpers
5
5
 
6
+ # @param [Troo::Card]
7
+ # @param [Hash]
8
+ # @return [Troo::Presenters::Comment]
6
9
  def initialize(card, options = {})
7
10
  @card, @options = card, options
8
11
  end
9
12
 
13
+ # @return []
10
14
  def show
11
15
  title
12
16
 
@@ -3,10 +3,13 @@ module Troo
3
3
  class List
4
4
  include DecoratorHelpers
5
5
 
6
+ # @param [Troo::List]
7
+ # @return [Troo::Presenters::List]
6
8
  def initialize(list, options = {})
7
9
  @list, @options = list, options
8
10
  end
9
11
 
12
+ # @return [String]
10
13
  def show
11
14
  output.render Presenters::Resource.list_view(list.board)
12
15
 
@@ -17,6 +20,7 @@ module Troo
17
20
  end
18
21
  end
19
22
 
23
+ # @return [String]
20
24
  def render_list
21
25
  output.render Presenters::Resource.list_view(list)
22
26
 
@@ -31,6 +35,7 @@ module Troo
31
35
  end
32
36
  end
33
37
 
38
+ # @return [String]
34
39
  def render_cards
35
40
  output.spacer do
36
41
  list.cards.map do |card|
@@ -3,10 +3,14 @@ module Troo
3
3
  class Member
4
4
  include DecoratorHelpers
5
5
 
6
+ # @param [Troo::Card]
7
+ # @param [Hash]
8
+ # @return [Troo::Presenters::Member]
6
9
  def initialize(card, options = {})
7
10
  @card, @options = card, options
8
11
  end
9
12
 
13
+ # @return [String]
10
14
  def show
11
15
  Sentence.construct(members, 'members')
12
16
  end
@@ -4,15 +4,22 @@ module Troo
4
4
  include DecoratorHelpers
5
5
 
6
6
  class << self
7
+ # @param []
8
+ # @param [Hash]
9
+ # @return []
7
10
  def list_view(klass, options = {})
8
11
  new(klass, options).list_view
9
12
  end
10
13
  end
11
14
 
15
+ # @param []
16
+ # @param [Hash]
17
+ # @return []
12
18
  def initialize(klass, options = {})
13
19
  @klass, @options = klass, options
14
20
  end
15
21
 
22
+ # @return []
16
23
  def list_view
17
24
  [id, name, default].compact.join(' ') + "\n"
18
25
  end
@@ -20,10 +20,12 @@ module Troo
20
20
  attribute :members, Array[Troo::Remote::Member]
21
21
 
22
22
  class << self
23
+ # @return [Hash]
23
24
  def remote_options
24
25
  { mode: :board }
25
26
  end
26
27
 
28
+ # @return [Hash]
27
29
  def all
28
30
  {
29
31
  endpoint: :boards_all,
@@ -31,6 +33,7 @@ module Troo
31
33
  }
32
34
  end
33
35
 
36
+ # @return [Hash]
34
37
  def by_board_id
35
38
  {
36
39
  endpoint: :board_by_id,
@@ -43,14 +46,17 @@ module Troo
43
46
  end
44
47
  end
45
48
 
49
+ # @return [Hash]
46
50
  def associations
47
51
  [:lists, :cards, :members]
48
52
  end
49
53
 
54
+ # @return []
50
55
  def local_model
51
56
  Troo::Board
52
57
  end
53
58
 
59
+ # @return [Hash]
54
60
  def adapted
55
61
  {
56
62
  external_id: id,
@@ -27,10 +27,12 @@ module Troo
27
27
  attribute :actions, Array[Troo::Remote::Comment]
28
28
 
29
29
  class << self
30
+ # @return [Hash]
30
31
  def remote_options
31
32
  { mode: :card }
32
33
  end
33
34
 
35
+ # @return [Hash]
34
36
  def by_board_id
35
37
  {
36
38
  endpoint: :cards_by_board_id,
@@ -38,6 +40,7 @@ module Troo
38
40
  }
39
41
  end
40
42
 
43
+ # @return [Hash]
41
44
  def by_list_id
42
45
  {
43
46
  endpoint: :cards_by_list_id,
@@ -45,6 +48,7 @@ module Troo
45
48
  }
46
49
  end
47
50
 
51
+ # @return [Hash]
48
52
  def by_card_id
49
53
  {
50
54
  endpoint: :card_by_id,
@@ -53,14 +57,17 @@ module Troo
53
57
  end
54
58
  end
55
59
 
60
+ # @return [Array]
56
61
  def associations
57
62
  [:actions]
58
63
  end
59
64
 
65
+ # @return []
60
66
  def local_model
61
67
  Troo::Card
62
68
  end
63
69
 
70
+ # @return [Hash]
64
71
  def adapted
65
72
  {
66
73
  short_id: idShort,
@@ -12,10 +12,12 @@ module Troo
12
12
  attribute :memberCreator, Troo::Remote::Member
13
13
 
14
14
  class << self
15
+ # @return [Hash]
15
16
  def remote_options
16
17
  { mode: :card }
17
18
  end
18
19
 
20
+ # @return [Hash]
19
21
  def by_board_id
20
22
  {
21
23
  endpoint: :comments_by_board_id,
@@ -23,6 +25,7 @@ module Troo
23
25
  }
24
26
  end
25
27
 
28
+ # @return [Hash]
26
29
  def by_card_id
27
30
  {
28
31
  endpoint: :comments_by_card_id,
@@ -31,30 +34,37 @@ module Troo
31
34
  end
32
35
  end
33
36
 
37
+ # @return []
34
38
  def external_board_id
35
39
  data.board.id
36
40
  end
37
41
 
42
+ # @return []
38
43
  def external_card_id
39
44
  data.card.id
40
45
  end
41
46
 
47
+ # @return []
42
48
  def external_comment_id
43
49
  id
44
50
  end
45
51
 
52
+ # @return []
46
53
  def text
47
54
  data.text
48
55
  end
49
56
 
57
+ # @return [Array]
50
58
  def associations
51
59
  [:memberCreator]
52
60
  end
53
61
 
62
+ # @return []
54
63
  def local_model
55
64
  Troo::Comment
56
65
  end
57
66
 
67
+ # @return [Hash]
58
68
  def adapted
59
69
  {
60
70
  external_id: id,
@@ -11,10 +11,12 @@ module Troo
11
11
  attribute :pos, Integer
12
12
 
13
13
  class << self
14
+ # @return [Hash]
14
15
  def remote_options
15
16
  { mode: :list }
16
17
  end
17
18
 
19
+ # @return [Hash]
18
20
  def by_board_id
19
21
  {
20
22
  endpoint: :lists_by_board_id,
@@ -22,19 +24,23 @@ module Troo
22
24
  }
23
25
  end
24
26
 
27
+ # @return [Hash]
25
28
  def by_list_id
26
29
  { endpoint: :list_by_id }
27
30
  end
28
31
  end
29
32
 
33
+ # @return [Array]
30
34
  def associations
31
35
  []
32
36
  end
33
37
 
38
+ # @return []
34
39
  def local_model
35
40
  Troo::List
36
41
  end
37
42
 
43
+ # @return [Hash]
38
44
  def adapted
39
45
  {
40
46
  external_board_id: idBoard,
@@ -34,10 +34,12 @@ module Troo
34
34
  attribute :premiumFeatures
35
35
 
36
36
  class << self
37
+ # @return [Hash]
37
38
  def remote_options
38
39
  { mode: :member }
39
40
  end
40
41
 
42
+ # @return [Hash]
41
43
  def by_board_id
42
44
  {
43
45
  endpoint: :members_by_board_id,
@@ -45,19 +47,23 @@ module Troo
45
47
  }
46
48
  end
47
49
 
50
+ # @return [Hash]
48
51
  def by_member_id
49
52
  { endpoint: :member_by_id }
50
53
  end
51
54
  end
52
55
 
56
+ # @return [Array]
53
57
  def associations
54
58
  []
55
59
  end
56
60
 
61
+ # @return []
57
62
  def local_model
58
63
  Troo::Member
59
64
  end
60
65
 
66
+ # @return [Hash]
61
67
  def adapted
62
68
  {
63
69
  external_id: id,