trello-client 0.0.3 → 0.0.4

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.
@@ -1,5 +1,10 @@
1
1
  = Trello::Client History
2
2
 
3
+ == 2012-04-02 v0.0.4
4
+
5
+ * Added Trello::Client#list()
6
+ * Added Trello::Client::Card
7
+
3
8
  == 2012-03-30 v0.0.3
4
9
 
5
10
  * Added Trello::Client#board()
@@ -46,7 +46,6 @@ Get user token:
46
46
 
47
47
  # Get board with lists
48
48
  client.board( '<identifier>', :lists => 'all' ) do |b|
49
- # Returns Trello::Client::Board object
50
49
  b.lists.each do |l|
51
50
  # Returns Trello::Client::List object
52
51
  l['id'] # => list identifier
@@ -54,6 +53,26 @@ Get user token:
54
53
  l['name'] # => list name
55
54
  end
56
55
  end
56
+
57
+ # Get list
58
+ client.list( '<identifier>' ) do |l|
59
+ # Returns Trello::Client::List object
60
+ l['id'] # => list identifier
61
+ l['idBoard'] # => list board identifier
62
+ l['name'] # => list name
63
+ end
64
+
65
+ # Get list with cards
66
+ client.list( '<identifier>' ) do |l|
67
+ l.cards.each do |c|
68
+ # Returns Trello::Client::Card object
69
+ c['id'] # => card identifier
70
+ c['idBoard'] # => card board identifier
71
+ c['idList'] # => card list identifier
72
+ c['name'] # => card name
73
+ end
74
+ end
75
+
57
76
  end
58
77
 
59
78
  == Author
@@ -70,10 +89,8 @@ https://github.com/blairc/trello-client/
70
89
 
71
90
  == To Do
72
91
 
73
- * Trello::Client#list()
74
- * Get cards
75
92
  * Memoize API calls
76
93
  * Add script
77
- * DRY +Board+, +List+ and +Member+
94
+ * DRY +Card+, +Board+, +List+ and +Member+
78
95
  * Lazy fetching of data that wasn't requested?
79
96
 
data/Rakefile CHANGED
@@ -34,8 +34,10 @@ task :update_test_data do
34
34
  client.api_token = ENV['TRELLO_API_TOKEN']
35
35
 
36
36
  {
37
- 'board' => [ :board, '4f4f9d55cf2e679318098c5b' ],
38
- 'board_with_lists' => [ :board, '4f4f9d55cf2e679318098c5b', :lists => 'all' ],
37
+ 'board' => [ :board, '4f4f9d55cf2e679318098c5b' ],
38
+ 'board_with_lists' => [ :board, '4f4f9d55cf2e679318098c5b', :lists => 'all' ],
39
+ 'list' => [ :list, '4f4f9d55cf2e679318098c53' ],
40
+ 'list_with_cards' => [ :list, '4f4f9d55cf2e679318098c53', :cards => 'all' ],
39
41
  'member' => [ :member, 'me' ],
40
42
  'member_with_boards' => [ :member, 'me', :boards => 'all' ]
41
43
  }.each_pair do |file, request|
@@ -5,6 +5,7 @@ require 'open-uri'
5
5
  require 'uri'
6
6
 
7
7
  require 'trello-client/board'
8
+ require 'trello-client/card'
8
9
  require 'trello-client/list'
9
10
  require 'trello-client/member'
10
11
  require 'trello-client/version'
@@ -58,7 +59,6 @@ require 'trello-client/version'
58
59
  #
59
60
  # # Get board with lists
60
61
  # client.board( '<identifier>', :lists => 'all' ) do |b|
61
- # # Returns Trello::Client::Board object
62
62
  # b.lists.each do |l|
63
63
  # # Returns Trello::Client::List object
64
64
  # l['id'] # => list identifier
@@ -66,6 +66,26 @@ require 'trello-client/version'
66
66
  # l['name'] # => list name
67
67
  # end
68
68
  # end
69
+ #
70
+ # # Get list
71
+ # client.list( '<identifier>' ) do |l|
72
+ # # Returns Trello::Client::List object
73
+ # l['id'] # => list identifier
74
+ # l['idBoard'] # => list board identifier
75
+ # l['name'] # => list name
76
+ # end
77
+ #
78
+ # # Get list with cards
79
+ # client.list( '<identifier>' ) do |l|
80
+ # l.cards.each do |c|
81
+ # # Returns Trello::Client::Card object
82
+ # c['id'] # => card identifier
83
+ # c['idBoard'] # => card board identifier
84
+ # c['idList'] # => card list identifier
85
+ # c['name'] # => card name
86
+ # end
87
+ # end
88
+ #
69
89
  # end
70
90
  #
71
91
  # == Author
@@ -82,11 +102,9 @@ require 'trello-client/version'
82
102
  #
83
103
  # == To Do
84
104
  #
85
- # * Trello::Client#list()
86
- # * Get cards
87
105
  # * Memoize API calls
88
106
  # * Add script
89
- # * DRY +Board+, +List+ and +Member+
107
+ # * DRY +Card+, +Board+, +List+ and +Member+
90
108
  # * Lazy fetching of data that wasn't requested?
91
109
  #
92
110
  module Trello # :nodoc:
@@ -136,6 +154,21 @@ module Trello # :nodoc:
136
154
  Trello::Client::Board.new( _get( "#{api}/board/#{id}", options ) )
137
155
  end
138
156
 
157
+ #
158
+ # Get Trello::Client::List object
159
+ #
160
+ # See https://trello.com/docs/api/list/index.html
161
+ #
162
+ # Params:
163
+ # +id+:: List identifier
164
+ # +options+:: (optional) Additional API parameters
165
+ #
166
+ def list(id, options = {} )
167
+ raise('invalid id') if id.nil? || id.empty?
168
+ Trello::Client::Member.new( _get( "#{api}/list/#{id}", options ) )
169
+ end
170
+
171
+
139
172
  #
140
173
  # Get Trello::Client::Member object
141
174
  #
@@ -0,0 +1,36 @@
1
+ # encoding: utf-8
2
+
3
+ module Trello # :nodoc:
4
+ class Client # :nodoc:
5
+
6
+ #
7
+ # Trello::Client::Card object
8
+ #
9
+ # See https://trello.com/docs/api/card/index.html
10
+ #
11
+ class Card
12
+
13
+ #
14
+ # Initialize Trello::Client::Card
15
+ #
16
+ # Params:
17
+ # +card+:: Hash'ified JSON card or JSON string
18
+ #
19
+ def initialize(card)
20
+ @card = card.kind_of?(Hash) ? card : MultiJson.decode(card)
21
+ yield self if block_given?
22
+ self
23
+ end
24
+
25
+ #
26
+ # Get Trello::Client::Card property
27
+ #
28
+ def[](key)
29
+ @card[key]
30
+ end
31
+
32
+ end # class Card
33
+
34
+ end # class Client
35
+ end # module Trello
36
+
@@ -30,14 +30,13 @@ module Trello # :nodoc:
30
30
  end
31
31
 
32
32
  #
33
- # TODO Get +Array+ of cards
33
+ # Get +Array+ of Trello::Client::Card objects
34
34
  #
35
35
  def cards
36
- #unless @lists
37
- # @lists = ( @list['lists'] || [] ).collect { |l| Trello::Client::List.new(l) }
38
- #end
39
- #@lists
40
- @list['cards'] || []
36
+ unless @lists
37
+ @cards = ( @list['cards'] || [] ).collect { |c| Trello::Client::Card.new(c) }
38
+ end
39
+ @cards
41
40
  end
42
41
 
43
42
  end # class List
@@ -5,6 +5,6 @@ module Trello
5
5
  #
6
6
  # Trello::Client version
7
7
  #
8
- VERSION = '0.0.3'
8
+ VERSION = '0.0.4'
9
9
  end
10
10
  end
@@ -0,0 +1 @@
1
+ {"id":"4f4f9d55cf2e679318098c53","name":"Basics","closed":false,"idBoard":"4f4f9d55cf2e679318098c5b","pos":16384}
@@ -0,0 +1 @@
1
+ {"id":"4f4f9d55cf2e679318098c53","name":"Basics","closed":false,"idBoard":"4f4f9d55cf2e679318098c5b","pos":16384,"cards":[{"id":"4f4f9d56cf2e679318098ca3","name":"Welcome to Trello!","desc":"","closed":false,"idShort":1,"idList":"4f4f9d55cf2e679318098c53","idBoard":"4f4f9d55cf2e679318098c5b","idMembers":[],"url":"https://trello.com/card/welcome-to-trello/4f4f9d55cf2e679318098c5b/1","attachments":[],"labels":[],"badges":{"votes":0,"viewingMemberVoted":false,"due":null,"description":false,"attachments":0,"comments":0,"checkItemsChecked":0,"checkItems":0,"fogbugz":""},"pos":65536,"idChecklists":[],"checkItemStates":[]},{"id":"4f4f9d55cf2e679318098c7f","name":"This is a card.","desc":"People can vote on cards.","closed":false,"idShort":2,"idList":"4f4f9d55cf2e679318098c53","idBoard":"4f4f9d55cf2e679318098c5b","idMembers":[],"url":"https://trello.com/card/this-is-a-card/4f4f9d55cf2e679318098c5b/2","attachments":[],"labels":[],"badges":{"votes":1,"viewingMemberVoted":false,"due":null,"description":true,"attachments":0,"comments":0,"checkItemsChecked":0,"checkItems":0,"fogbugz":""},"pos":131072,"idChecklists":[],"checkItemStates":[]},{"id":"4f4f9d56cf2e679318098ca6","name":"Click on a card to see what's behind it.","desc":"You can put a detailed description here...","closed":false,"idShort":3,"idList":"4f4f9d55cf2e679318098c53","idBoard":"4f4f9d55cf2e679318098c5b","idMembers":[],"url":"https://trello.com/card/click-on-a-card-to-see-what-s-behind-it/4f4f9d55cf2e679318098c5b/3","attachments":[],"labels":[],"badges":{"votes":0,"viewingMemberVoted":false,"due":null,"description":true,"attachments":0,"comments":1,"checkItemsChecked":0,"checkItems":0,"fogbugz":""},"pos":196608,"idChecklists":[],"checkItemStates":[]},{"id":"4f4f9d56cf2e679318098cab","name":"You can attach pictures and files...","desc":"This is Taco, the most famous Siberian Husky in New York City.","closed":false,"idShort":4,"idList":"4f4f9d55cf2e679318098c53","idBoard":"4f4f9d55cf2e679318098c5b","idMembers":[],"url":"https://trello.com/card/you-can-attach-pictures-and-files/4f4f9d55cf2e679318098c5b/4","attachments":[{"_id":"4f4f9d56cf2e679318098caa","bytes":52566,"date":"2011-09-09T21:11:21.104Z","url":"https://trello-attachments.s3.amazonaws.com/4e6a8095efa69909ba007382/4e6a80e8efa69909ba007596/stnx5HjpZNWPO3ex/6-9-2010_10-33-30_AM.png","name":"6-9-2010_10-33-30_AM.png","idMember":"4e6a7fad05d98b02ba00845c"}],"labels":[],"badges":{"votes":0,"viewingMemberVoted":false,"due":null,"description":true,"attachments":1,"comments":0,"checkItemsChecked":0,"checkItems":0,"fogbugz":""},"pos":262144,"idChecklists":[],"checkItemStates":[]},{"id":"4f4f9d56cf2e679318098c9d","name":"... any kind of hyperlink ...","desc":"","closed":false,"idShort":5,"idList":"4f4f9d55cf2e679318098c53","idBoard":"4f4f9d55cf2e679318098c5b","idMembers":[],"url":"https://trello.com/card/any-kind-of-hyperlink/4f4f9d55cf2e679318098c5b/5","attachments":[],"labels":[],"badges":{"votes":0,"viewingMemberVoted":false,"due":null,"description":false,"attachments":0,"comments":1,"checkItemsChecked":0,"checkItems":0,"fogbugz":""},"pos":327680,"idChecklists":[],"checkItemStates":[]},{"id":"4f4f9d56cf2e679318098cb1","name":"... or checklists.","desc":"","closed":false,"idShort":6,"idList":"4f4f9d55cf2e679318098c53","idBoard":"4f4f9d55cf2e679318098c5b","idMembers":[],"url":"https://trello.com/card/or-checklists/4f4f9d55cf2e679318098c5b/6","attachments":[],"labels":[],"badges":{"votes":0,"viewingMemberVoted":false,"due":null,"description":false,"attachments":0,"comments":0,"checkItemsChecked":1,"checkItems":3,"fogbugz":""},"pos":393216,"idChecklists":["4f4f9d55cf2e679318098c59"],"checkItemStates":[{"_id":"4f4f9d56cf2e679318098cb0","idCheckItem":"4f4f9d55cf2e679318098c56","state":"complete"}]}]}
@@ -110,6 +110,69 @@ class TestClient < Test::Unit::TestCase
110
110
  end
111
111
  end
112
112
 
113
+ def test_list_parameter_validation
114
+ Trello::Client.new do |client|
115
+ assert_raise(RuntimeError, 'invalid id') { client.list(nil) }
116
+ assert_raise(RuntimeError, 'invalid id') { client.list('') }
117
+
118
+ assert_nil client.api_key
119
+ assert_raise(RuntimeError, 'invalid API key') { client.list('me') }
120
+ client.api_key = ''
121
+ assert_equal '', client.api_key
122
+ assert_raise(RuntimeError, 'invalid API key') { client.list('me') }
123
+ client.api_key = @api_key
124
+ assert_equal @api_key, client.api_key
125
+
126
+ assert_nil client.api_token
127
+ assert_raise(RuntimeError, 'invalid API token') { client.list('me') }
128
+ client.api_token = ''
129
+ assert_equal '', client.api_token
130
+ assert_raise(RuntimeError, 'invalid API token') { client.list('me') }
131
+ end
132
+ end
133
+
134
+ def test_list
135
+ Trello::Client.new do |client|
136
+ json = open( File.join( @test_data, 'list.json' ) ).read
137
+ l = Trello::Client::List.new(json)
138
+ client.stubs(:list).with('id').returns(l)
139
+
140
+ assert_not_nil l
141
+ assert_kind_of Trello::Client::List, l
142
+
143
+ assert_equal '4f4f9d55cf2e679318098c53', l['id']
144
+ assert_equal 'Basics', l['name']
145
+ assert_equal false, l['closed']
146
+ assert_equal '4f4f9d55cf2e679318098c5b', l['idBoard']
147
+ assert_equal 16384, l['pos']
148
+
149
+ assert_not_nil l.cards
150
+ assert_kind_of Array, l.cards
151
+ assert_equal 0, l.cards.size
152
+ end
153
+ end
154
+
155
+ def test_list_with_boards
156
+ Trello::Client.new do |client|
157
+ json = open( File.join( @test_data, 'list_with_cards.json' ) ).read
158
+ l = Trello::Client::List.new(json)
159
+ client.stubs(:list).with('id').returns(l)
160
+
161
+ assert_not_nil l
162
+ assert_kind_of Trello::Client::List, l
163
+
164
+ assert_equal '4f4f9d55cf2e679318098c53', l['id']
165
+ assert_equal 'Basics', l['name']
166
+ assert_equal false, l['closed']
167
+ assert_equal '4f4f9d55cf2e679318098c5b', l['idBoard']
168
+ assert_equal 16384, l['pos']
169
+
170
+ assert_not_nil l.cards
171
+ assert_kind_of Array, l.cards
172
+ assert_equal 6, l.cards.size
173
+ end
174
+ end
175
+
113
176
  def test_member_parameter_validation
114
177
  Trello::Client.new do |client|
115
178
  assert_raise(RuntimeError, 'invalid id') { client.member(nil) }
@@ -0,0 +1,71 @@
1
+ # encoding: utf-8
2
+
3
+ require 'simplecov'
4
+ SimpleCov.start
5
+
6
+ require 'fakeweb'
7
+ require 'trello-client'
8
+ require 'test/unit'
9
+
10
+
11
+ class TestList < Test::Unit::TestCase
12
+
13
+ def setup
14
+ @test_dir = File.dirname(__FILE__)
15
+ @test_data = File.join( @test_dir, 'data' )
16
+ end
17
+
18
+ def test_cards
19
+ Trello::Client.new do |client|
20
+ json = open( File.join( @test_data, 'list_with_cards.json' ) ).read
21
+ l = Trello::Client::List.new(json)
22
+
23
+ assert_not_nil l
24
+ assert_kind_of Trello::Client::List, l
25
+
26
+ assert_not_nil l.cards
27
+ assert_kind_of Array, l.cards
28
+ assert_equal 6, l.cards.size
29
+
30
+ first = l.cards.first
31
+ assert_not_nil first
32
+ assert_kind_of Trello::Client::Card, first
33
+ assert_equal [], first['attachments']
34
+ assert_kind_of Hash, first['badges']
35
+ assert_equal [], first['checkItemStates']
36
+ assert_equal false, first['closed']
37
+ assert_equal '', first['desc']
38
+ assert_equal '4f4f9d56cf2e679318098ca3', first['id']
39
+ assert_equal '4f4f9d55cf2e679318098c5b', first['idBoard']
40
+ assert_equal [], first['idChecklists']
41
+ assert_equal '4f4f9d55cf2e679318098c53', first['idList']
42
+ assert_equal [], first['idMembers']
43
+ assert_equal 1, first['idShort']
44
+ assert_equal [], first['labels']
45
+ assert_equal 'Welcome to Trello!', first['name']
46
+ assert_equal 65536, first['pos']
47
+ assert_equal 'https://trello.com/card/welcome-to-trello/4f4f9d55cf2e679318098c5b/1', first['url']
48
+
49
+ last = l.cards.last
50
+ assert_not_nil last
51
+ assert_kind_of Trello::Client::Card, last
52
+ assert_equal [], last['attachments']
53
+ assert_kind_of Hash, last['badges']
54
+ assert_kind_of Array, last['checkItemStates']
55
+ assert_equal false, last['closed']
56
+ assert_equal '', last['desc']
57
+ assert_equal '4f4f9d56cf2e679318098cb1', last['id']
58
+ assert_equal '4f4f9d55cf2e679318098c5b', last['idBoard']
59
+ assert_equal [ '4f4f9d55cf2e679318098c59' ], last['idChecklists']
60
+ assert_equal '4f4f9d55cf2e679318098c53', last['idList']
61
+ assert_equal [], last['idMembers']
62
+ assert_equal 6, last['idShort']
63
+ assert_equal [], last['labels']
64
+ assert_equal '... or checklists.', last['name']
65
+ assert_equal 393216, last['pos']
66
+ assert_equal 'https://trello.com/card/or-checklists/4f4f9d55cf2e679318098c5b/6', last['url']
67
+ end
68
+ end
69
+
70
+ end
71
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trello-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-30 00:00:00.000000000 Z
12
+ date: 2012-04-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_json
16
- requirement: &70229863256380 !ruby/object:Gem::Requirement
16
+ requirement: &70339636455920 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70229863256380
24
+ version_requirements: *70339636455920
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: fakeweb
27
- requirement: &70229863255500 !ruby/object:Gem::Requirement
27
+ requirement: &70339636455100 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70229863255500
35
+ version_requirements: *70339636455100
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: mocha
38
- requirement: &70229863254720 !ruby/object:Gem::Requirement
38
+ requirement: &70339636474840 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70229863254720
46
+ version_requirements: *70339636474840
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake
49
- requirement: &70229863254000 !ruby/object:Gem::Requirement
49
+ requirement: &70339636473960 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70229863254000
57
+ version_requirements: *70339636473960
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rdoc
60
- requirement: &70229863274220 !ruby/object:Gem::Requirement
60
+ requirement: &70339636473020 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70229863274220
68
+ version_requirements: *70339636473020
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rdoc-readme
71
- requirement: &70229863273480 !ruby/object:Gem::Requirement
71
+ requirement: &70339636472320 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 0.1.2
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70229863273480
79
+ version_requirements: *70339636472320
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: simplecov
82
- requirement: &70229863272780 !ruby/object:Gem::Requirement
82
+ requirement: &70339636471580 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70229863272780
90
+ version_requirements: *70339636471580
91
91
  description: Trello API client
92
92
  email:
93
93
  - blair.christensen@gmail.com
@@ -103,15 +103,19 @@ files:
103
103
  - Rakefile
104
104
  - lib/trello-client.rb
105
105
  - lib/trello-client/board.rb
106
+ - lib/trello-client/card.rb
106
107
  - lib/trello-client/list.rb
107
108
  - lib/trello-client/member.rb
108
109
  - lib/trello-client/version.rb
109
110
  - test/data/board.json
110
111
  - test/data/board_with_lists.json
112
+ - test/data/list.json
113
+ - test/data/list_with_cards.json
111
114
  - test/data/member.json
112
115
  - test/data/member_with_boards.json
113
116
  - test/test_board.rb
114
117
  - test/test_client.rb
118
+ - test/test_list.rb
115
119
  - test/test_member.rb
116
120
  - trello-client.gemspec
117
121
  homepage: https://github.com/blairc/trello-client/
@@ -128,7 +132,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
128
132
  version: '0'
129
133
  segments:
130
134
  - 0
131
- hash: -1725830249849533101
135
+ hash: -2574410681571816951
132
136
  required_rubygems_version: !ruby/object:Gem::Requirement
133
137
  none: false
134
138
  requirements:
@@ -137,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
137
141
  version: '0'
138
142
  segments:
139
143
  - 0
140
- hash: -1725830249849533101
144
+ hash: -2574410681571816951
141
145
  requirements: []
142
146
  rubyforge_project:
143
147
  rubygems_version: 1.8.11
@@ -147,8 +151,11 @@ summary: Trello API client
147
151
  test_files:
148
152
  - test/data/board.json
149
153
  - test/data/board_with_lists.json
154
+ - test/data/list.json
155
+ - test/data/list_with_cards.json
150
156
  - test/data/member.json
151
157
  - test/data/member_with_boards.json
152
158
  - test/test_board.rb
153
159
  - test/test_client.rb
160
+ - test/test_list.rb
154
161
  - test/test_member.rb