trello-client 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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