trello-client 0.0.2 → 0.0.3
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.
- data/History.rdoc +5 -0
- data/README.rdoc +22 -5
- data/Rakefile +5 -5
- data/lib/trello-client.rb +38 -6
- data/lib/trello-client/board.rb +12 -2
- data/lib/trello-client/list.rb +47 -0
- data/lib/trello-client/member.rb +1 -1
- data/lib/trello-client/version.rb +1 -1
- data/test/data/board.json +1 -0
- data/test/data/board_with_lists.json +1 -0
- data/test/data/member.json +1 -1
- data/test/data/member_with_boards.json +1 -1
- data/test/test_board.rb +59 -0
- data/test/test_client.rb +73 -2
- data/test/test_member.rb +7 -11
- metadata +25 -18
data/History.rdoc
CHANGED
data/README.rdoc
CHANGED
@@ -34,8 +34,26 @@ Get user token:
|
|
34
34
|
# Returns Trello::Client::Board objects
|
35
35
|
b['id'] # => board identifier
|
36
36
|
b['name'] # => board name
|
37
|
-
b['url'] # => board url
|
38
37
|
end
|
38
|
+
|
39
|
+
# Get board
|
40
|
+
client.board( '<identifier>' ) do |b|
|
41
|
+
# Returns Trello::Client::Board object
|
42
|
+
b['id'] # => board identifier
|
43
|
+
b['name'] # => board name
|
44
|
+
b['url'] # => board url
|
45
|
+
end
|
46
|
+
|
47
|
+
# Get board with lists
|
48
|
+
client.board( '<identifier>', :lists => 'all' ) do |b|
|
49
|
+
# Returns Trello::Client::Board object
|
50
|
+
b.lists.each do |l|
|
51
|
+
# Returns Trello::Client::List object
|
52
|
+
l['id'] # => list identifier
|
53
|
+
l['idBoard'] # => list board identifier
|
54
|
+
l['name'] # => list name
|
55
|
+
end
|
56
|
+
end
|
39
57
|
end
|
40
58
|
|
41
59
|
== Author
|
@@ -52,11 +70,10 @@ https://github.com/blairc/trello-client/
|
|
52
70
|
|
53
71
|
== To Do
|
54
72
|
|
55
|
-
*
|
73
|
+
* Trello::Client#list()
|
56
74
|
* Get cards
|
57
75
|
* Memoize API calls
|
58
76
|
* Add script
|
59
|
-
* DRY +Board+ and +Member+
|
60
|
-
*
|
61
|
-
* Member#boards() should fetch boards if not present?
|
77
|
+
* DRY +Board+, +List+ and +Member+
|
78
|
+
* Lazy fetching of data that wasn't requested?
|
62
79
|
|
data/Rakefile
CHANGED
@@ -27,21 +27,21 @@ end
|
|
27
27
|
desc 'Update test data files'
|
28
28
|
task :update_test_data do
|
29
29
|
$LOAD_PATH << 'lib'
|
30
|
-
require 'open-uri'
|
31
30
|
require 'trello-client'
|
32
31
|
|
33
32
|
Trello::Client.new do |client|
|
34
33
|
client.api_key = ENV['TRELLO_API_KEY']
|
35
34
|
client.api_token = ENV['TRELLO_API_TOKEN']
|
36
|
-
|
35
|
+
|
37
36
|
{
|
37
|
+
'board' => [ :board, '4f4f9d55cf2e679318098c5b' ],
|
38
|
+
'board_with_lists' => [ :board, '4f4f9d55cf2e679318098c5b', :lists => 'all' ],
|
38
39
|
'member' => [ :member, 'me' ],
|
39
40
|
'member_with_boards' => [ :member, 'me', :boards => 'all' ]
|
40
41
|
}.each_pair do |file, request|
|
41
42
|
fn = File.join( File.dirname(__FILE__), 'test', 'data', "#{file}.json" )
|
42
|
-
|
43
|
-
|
44
|
-
File.open(fn, 'w') { |fh| fh.puts( client.send meth, *args ) }
|
43
|
+
uri = "#{ client.api }/#{ request.shift }/#{ request.shift }"
|
44
|
+
File.open(fn, 'w') { |fh| fh.puts client.send( :_get, uri, *request ) }
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
data/lib/trello-client.rb
CHANGED
@@ -5,6 +5,7 @@ require 'open-uri'
|
|
5
5
|
require 'uri'
|
6
6
|
|
7
7
|
require 'trello-client/board'
|
8
|
+
require 'trello-client/list'
|
8
9
|
require 'trello-client/member'
|
9
10
|
require 'trello-client/version'
|
10
11
|
|
@@ -45,8 +46,26 @@ require 'trello-client/version'
|
|
45
46
|
# # Returns Trello::Client::Board objects
|
46
47
|
# b['id'] # => board identifier
|
47
48
|
# b['name'] # => board name
|
48
|
-
# b['url'] # => board url
|
49
49
|
# end
|
50
|
+
#
|
51
|
+
# # Get board
|
52
|
+
# client.board( '<identifier>' ) do |b|
|
53
|
+
# # Returns Trello::Client::Board object
|
54
|
+
# b['id'] # => board identifier
|
55
|
+
# b['name'] # => board name
|
56
|
+
# b['url'] # => board url
|
57
|
+
# end
|
58
|
+
#
|
59
|
+
# # Get board with lists
|
60
|
+
# client.board( '<identifier>', :lists => 'all' ) do |b|
|
61
|
+
# # Returns Trello::Client::Board object
|
62
|
+
# b.lists.each do |l|
|
63
|
+
# # Returns Trello::Client::List object
|
64
|
+
# l['id'] # => list identifier
|
65
|
+
# l['idBoard'] # => list board identifier
|
66
|
+
# l['name'] # => list name
|
67
|
+
# end
|
68
|
+
# end
|
50
69
|
# end
|
51
70
|
#
|
52
71
|
# == Author
|
@@ -63,13 +82,12 @@ require 'trello-client/version'
|
|
63
82
|
#
|
64
83
|
# == To Do
|
65
84
|
#
|
66
|
-
# *
|
85
|
+
# * Trello::Client#list()
|
67
86
|
# * Get cards
|
68
87
|
# * Memoize API calls
|
69
88
|
# * Add script
|
70
|
-
# * DRY +Board+ and +Member+
|
71
|
-
# *
|
72
|
-
# * Member#boards() should fetch boards if not present?
|
89
|
+
# * DRY +Board+, +List+ and +Member+
|
90
|
+
# * Lazy fetching of data that wasn't requested?
|
73
91
|
#
|
74
92
|
module Trello # :nodoc:
|
75
93
|
|
@@ -104,6 +122,20 @@ module Trello # :nodoc:
|
|
104
122
|
self
|
105
123
|
end
|
106
124
|
|
125
|
+
#
|
126
|
+
# Get Trello::Client::Board object
|
127
|
+
#
|
128
|
+
# See https://trello.com/docs/api/board/index.html
|
129
|
+
#
|
130
|
+
# Params:
|
131
|
+
# +id+:: Board identifier
|
132
|
+
# +options+:: (optional) Additional API parameters
|
133
|
+
#
|
134
|
+
def board(id, options = {} )
|
135
|
+
raise('invalid id') if id.nil? || id.empty?
|
136
|
+
Trello::Client::Board.new( _get( "#{api}/board/#{id}", options ) )
|
137
|
+
end
|
138
|
+
|
107
139
|
#
|
108
140
|
# Get Trello::Client::Member object
|
109
141
|
#
|
@@ -115,7 +147,7 @@ module Trello # :nodoc:
|
|
115
147
|
#
|
116
148
|
def member(id, options = {} )
|
117
149
|
raise('invalid id') if id.nil? || id.empty?
|
118
|
-
_get "#{api}/members/#{id}", options
|
150
|
+
Trello::Client::Member.new( _get( "#{api}/members/#{id}", options ) )
|
119
151
|
end
|
120
152
|
|
121
153
|
|
data/lib/trello-client/board.rb
CHANGED
@@ -14,10 +14,10 @@ module Trello # :nodoc:
|
|
14
14
|
# Initialize Trello::Client::Board
|
15
15
|
#
|
16
16
|
# Params:
|
17
|
-
# +board+:: Hash'ified JSON board
|
17
|
+
# +board+:: Hash'ified JSON board or JSON string
|
18
18
|
#
|
19
19
|
def initialize(board)
|
20
|
-
@board = board
|
20
|
+
@board = board.kind_of?(Hash) ? board : MultiJson.decode(board)
|
21
21
|
yield self if block_given?
|
22
22
|
self
|
23
23
|
end
|
@@ -29,6 +29,16 @@ module Trello # :nodoc:
|
|
29
29
|
@board[key]
|
30
30
|
end
|
31
31
|
|
32
|
+
#
|
33
|
+
# Get +Array+ of Trello::Client::List objects
|
34
|
+
#
|
35
|
+
def lists
|
36
|
+
unless @lists
|
37
|
+
@lists = ( @board['lists'] || [] ).collect { |l| Trello::Client::List.new(l) }
|
38
|
+
end
|
39
|
+
@lists
|
40
|
+
end
|
41
|
+
|
32
42
|
end # class Board
|
33
43
|
|
34
44
|
end # class Client
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Trello # :nodoc:
|
4
|
+
class Client # :nodoc:
|
5
|
+
|
6
|
+
#
|
7
|
+
# Trello::Client::List object
|
8
|
+
#
|
9
|
+
# See https://trello.com/docs/api/list/index.html
|
10
|
+
#
|
11
|
+
class List
|
12
|
+
|
13
|
+
#
|
14
|
+
# Initialize Trello::Client::List
|
15
|
+
#
|
16
|
+
# Params:
|
17
|
+
# +list+:: Hash'ified JSON list or JSON string
|
18
|
+
#
|
19
|
+
def initialize(list)
|
20
|
+
@list = list.kind_of?(Hash) ? list : MultiJson.decode(list)
|
21
|
+
yield self if block_given?
|
22
|
+
self
|
23
|
+
end
|
24
|
+
|
25
|
+
#
|
26
|
+
# Get Trello::Client::List property
|
27
|
+
#
|
28
|
+
def[](key)
|
29
|
+
@list[key]
|
30
|
+
end
|
31
|
+
|
32
|
+
#
|
33
|
+
# TODO Get +Array+ of cards
|
34
|
+
#
|
35
|
+
def cards
|
36
|
+
#unless @lists
|
37
|
+
# @lists = ( @list['lists'] || [] ).collect { |l| Trello::Client::List.new(l) }
|
38
|
+
#end
|
39
|
+
#@lists
|
40
|
+
@list['cards'] || []
|
41
|
+
end
|
42
|
+
|
43
|
+
end # class List
|
44
|
+
|
45
|
+
end # class Client
|
46
|
+
end # module Trello
|
47
|
+
|
data/lib/trello-client/member.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
{"id":"4f4f9d55cf2e679318098c5b","name":"Welcome Board","desc":"","closed":false,"pinned":true,"url":"https://trello.com/board/welcome-board/4f4f9d55cf2e679318098c5b","prefs":{"selfJoin":false,"invitations":"members","comments":"members","voting":"members","permissionLevel":"private"}}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"id":"4f4f9d55cf2e679318098c5b","name":"Welcome Board","desc":"","closed":false,"pinned":true,"url":"https://trello.com/board/welcome-board/4f4f9d55cf2e679318098c5b","prefs":{"selfJoin":false,"invitations":"members","comments":"members","voting":"members","permissionLevel":"private"},"lists":[{"id":"4f4f9d55cf2e679318098c53","name":"Basics","closed":false,"idBoard":"4f4f9d55cf2e679318098c5b","pos":16384},{"id":"4f4f9d55cf2e679318098c54","name":"Intermediate","closed":false,"idBoard":"4f4f9d55cf2e679318098c5b","pos":32768},{"id":"4f4f9d55cf2e679318098c55","name":"Advanced","closed":false,"idBoard":"4f4f9d55cf2e679318098c5b","pos":49152}]}
|
data/test/data/member.json
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"id":"4f4f9d55cf2e679318098c45","fullName":"blair christensen","
|
1
|
+
{"id":"4f4f9d55cf2e679318098c45","avatarHash":"65fcb89a59ff96b68b11332686c8f4f9","avatarSource":"gravatar","bio":"","fullName":"blair christensen","gravatarHash":"8a591569129ed7bdea3890d118b808c7","idBoards":["4f4f9d55cf2e679318098c5b","4f4d0477e4ba0e4f09af1c6c","4f6c9a79c3974b4d730a5533"],"idBoardsInvited":[],"idBoardsPinned":["4f4f9d55cf2e679318098c5b","4f4d0477e4ba0e4f09af1c6c","4f6c9a79c3974b4d730a5533","4d5ea62fd76aa1136000000c"],"idOrganizations":[],"idOrganizationsInvited":[],"initials":"BC","prefs":{"minutesBetweenSummaries":60,"sendSummaries":true},"status":"idle","url":"https://trello.com/blairchristensen","username":"blairchristensen"}
|
@@ -1 +1 @@
|
|
1
|
-
{"id":"4f4f9d55cf2e679318098c45","
|
1
|
+
{"id":"4f4f9d55cf2e679318098c45","avatarHash":"65fcb89a59ff96b68b11332686c8f4f9","avatarSource":"gravatar","bio":"","fullName":"blair christensen","gravatarHash":"8a591569129ed7bdea3890d118b808c7","idBoards":["4f4f9d55cf2e679318098c5b","4f4d0477e4ba0e4f09af1c6c","4f6c9a79c3974b4d730a5533"],"idBoardsInvited":[],"idBoardsPinned":["4f4f9d55cf2e679318098c5b","4f4d0477e4ba0e4f09af1c6c","4f6c9a79c3974b4d730a5533","4d5ea62fd76aa1136000000c"],"idOrganizations":[],"idOrganizationsInvited":[],"initials":"BC","prefs":{"minutesBetweenSummaries":60,"sendSummaries":true},"status":"idle","url":"https://trello.com/blairchristensen","username":"blairchristensen","boards":[{"id":"4f4d0477e4ba0e4f09af1c6c","name":"5E - Survey Database Site Features","closed":false,"idOrganization":"","pinned":true},{"id":"4f4f9d55cf2e679318098c5b","name":"Welcome Board","closed":false,"pinned":true},{"id":"4f6c9a79c3974b4d730a5533","name":"uchicago","closed":false,"idOrganization":"","pinned":true}]}
|
data/test/test_board.rb
ADDED
@@ -0,0 +1,59 @@
|
|
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 TestBoard < 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_lists
|
19
|
+
Trello::Client.new do |client|
|
20
|
+
json = open( File.join( @test_data, 'board_with_lists.json' ) ).read
|
21
|
+
b = Trello::Client::Board.new(json)
|
22
|
+
|
23
|
+
assert_not_nil b
|
24
|
+
assert_kind_of Trello::Client::Board, b
|
25
|
+
|
26
|
+
assert_not_nil b.lists
|
27
|
+
assert_kind_of Array, b.lists
|
28
|
+
assert_equal 3, b.lists.size
|
29
|
+
|
30
|
+
first = b.lists.first
|
31
|
+
assert_not_nil first
|
32
|
+
assert_kind_of Trello::Client::List, first
|
33
|
+
assert_equal false, first['closed']
|
34
|
+
assert_equal '4f4f9d55cf2e679318098c53', first['id']
|
35
|
+
assert_equal '4f4f9d55cf2e679318098c5b', first['idBoard']
|
36
|
+
assert_equal 16384, first['pos']
|
37
|
+
assert_equal 'Basics', first['name']
|
38
|
+
|
39
|
+
assert_not_nil first.cards
|
40
|
+
assert_kind_of Array, first.cards
|
41
|
+
assert_equal 0, first.cards.size
|
42
|
+
|
43
|
+
last = b.lists.last
|
44
|
+
assert_not_nil last
|
45
|
+
assert_kind_of Trello::Client::List, last
|
46
|
+
assert_equal false, last['closed']
|
47
|
+
assert_equal '4f4f9d55cf2e679318098c55', last['id']
|
48
|
+
assert_equal '4f4f9d55cf2e679318098c5b', last['idBoard']
|
49
|
+
assert_equal 49152, last['pos']
|
50
|
+
assert_equal 'Advanced', last['name']
|
51
|
+
|
52
|
+
assert_not_nil last.cards
|
53
|
+
assert_kind_of Array, last.cards
|
54
|
+
assert_equal 0, last.cards.size
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
data/test/test_client.rb
CHANGED
@@ -39,6 +39,77 @@ class TestClient < Test::Unit::TestCase
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
+
def test_board_parameter_validation
|
43
|
+
Trello::Client.new do |client|
|
44
|
+
assert_raise(RuntimeError, 'invalid id') { client.board(nil) }
|
45
|
+
assert_raise(RuntimeError, 'invalid id') { client.board('') }
|
46
|
+
|
47
|
+
assert_nil client.api_key
|
48
|
+
assert_raise(RuntimeError, 'invalid API key') { client.board('id') }
|
49
|
+
client.api_key = ''
|
50
|
+
assert_equal '', client.api_key
|
51
|
+
assert_raise(RuntimeError, 'invalid API key') { client.board('id') }
|
52
|
+
client.api_key = @api_key
|
53
|
+
assert_equal @api_key, client.api_key
|
54
|
+
|
55
|
+
assert_nil client.api_token
|
56
|
+
assert_raise(RuntimeError, 'invalid API token') { client.board('id') }
|
57
|
+
client.api_token = ''
|
58
|
+
assert_equal '', client.api_token
|
59
|
+
assert_raise(RuntimeError, 'invalid API token') { client.board('id') }
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_board
|
64
|
+
Trello::Client.new do |client|
|
65
|
+
json = open( File.join( @test_data, 'board.json' ) ).read
|
66
|
+
b = Trello::Client::Board.new(json)
|
67
|
+
client.stubs(:board).with('id').returns(b)
|
68
|
+
|
69
|
+
assert_not_nil b
|
70
|
+
assert_kind_of Trello::Client::Board, b
|
71
|
+
|
72
|
+
assert_equal '4f4f9d55cf2e679318098c5b', b['id']
|
73
|
+
assert_equal 'Welcome Board', b['name']
|
74
|
+
assert_equal '', b['desc']
|
75
|
+
assert_equal false, b['closed']
|
76
|
+
assert_equal true, b['pinned']
|
77
|
+
assert_equal 'https://trello.com/board/welcome-board/4f4f9d55cf2e679318098c5b', b['url']
|
78
|
+
assert_not_nil b['prefs']
|
79
|
+
assert_kind_of Hash, b['prefs']
|
80
|
+
assert_equal 5, b['prefs'].size
|
81
|
+
|
82
|
+
assert_not_nil b.lists
|
83
|
+
assert_kind_of Array, b.lists
|
84
|
+
assert_equal 0, b.lists.size
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_board_with_lists
|
89
|
+
Trello::Client.new do |client|
|
90
|
+
json = open( File.join( @test_data, 'board_with_lists.json' ) ).read
|
91
|
+
b = Trello::Client::Board.new(json)
|
92
|
+
client.stubs(:board).with('id').returns(b)
|
93
|
+
|
94
|
+
assert_not_nil b
|
95
|
+
assert_kind_of Trello::Client::Board, b
|
96
|
+
|
97
|
+
assert_equal '4f4f9d55cf2e679318098c5b', b['id']
|
98
|
+
assert_equal 'Welcome Board', b['name']
|
99
|
+
assert_equal '', b['desc']
|
100
|
+
assert_equal false, b['closed']
|
101
|
+
assert_equal true, b['pinned']
|
102
|
+
assert_equal 'https://trello.com/board/welcome-board/4f4f9d55cf2e679318098c5b', b['url']
|
103
|
+
assert_not_nil b['prefs']
|
104
|
+
assert_kind_of Hash, b['prefs']
|
105
|
+
assert_equal 5, b['prefs'].size
|
106
|
+
|
107
|
+
assert_not_nil b.lists
|
108
|
+
assert_kind_of Array, b.lists
|
109
|
+
assert_equal 3, b.lists.size
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
42
113
|
def test_member_parameter_validation
|
43
114
|
Trello::Client.new do |client|
|
44
115
|
assert_raise(RuntimeError, 'invalid id') { client.member(nil) }
|
@@ -62,7 +133,7 @@ class TestClient < Test::Unit::TestCase
|
|
62
133
|
|
63
134
|
def test_member
|
64
135
|
Trello::Client.new do |client|
|
65
|
-
json = open( File.join( @test_data, 'member.json' ) )
|
136
|
+
json = open( File.join( @test_data, 'member.json' ) ).read
|
66
137
|
m = Trello::Client::Member.new(json)
|
67
138
|
client.stubs(:member).with('me').returns(m)
|
68
139
|
|
@@ -86,7 +157,7 @@ class TestClient < Test::Unit::TestCase
|
|
86
157
|
|
87
158
|
def test_member_with_boards
|
88
159
|
Trello::Client.new do |client|
|
89
|
-
json = open( File.join( @test_data, 'member_with_boards.json' ) )
|
160
|
+
json = open( File.join( @test_data, 'member_with_boards.json' ) ).read
|
90
161
|
m = Trello::Client::Member.new(json)
|
91
162
|
client.stubs(:member).with('me').returns(m)
|
92
163
|
|
data/test/test_member.rb
CHANGED
@@ -4,7 +4,6 @@ require 'simplecov'
|
|
4
4
|
SimpleCov.start
|
5
5
|
|
6
6
|
require 'fakeweb'
|
7
|
-
require 'mocha'
|
8
7
|
require 'trello-client'
|
9
8
|
require 'test/unit'
|
10
9
|
|
@@ -18,9 +17,8 @@ class TestMember < Test::Unit::TestCase
|
|
18
17
|
|
19
18
|
def test_boards
|
20
19
|
Trello::Client.new do |client|
|
21
|
-
json = open( File.join( @test_data, 'member_with_boards.json' ) )
|
20
|
+
json = open( File.join( @test_data, 'member_with_boards.json' ) ).read
|
22
21
|
m = Trello::Client::Member.new(json)
|
23
|
-
client.stubs(:member).with('me').returns(m)
|
24
22
|
|
25
23
|
assert_not_nil m
|
26
24
|
assert_kind_of Trello::Client::Member, m
|
@@ -34,26 +32,24 @@ class TestMember < Test::Unit::TestCase
|
|
34
32
|
assert_kind_of Trello::Client::Board, first
|
35
33
|
assert_equal '4f4d0477e4ba0e4f09af1c6c', first['id']
|
36
34
|
assert_equal '5E - Survey Database Site Features', first['name']
|
37
|
-
assert_equal '', first['desc']
|
38
35
|
assert_equal false, first['closed']
|
36
|
+
assert_nil first['desc']
|
39
37
|
assert_equal '', first['idOrganization']
|
40
38
|
assert_equal true, first['pinned']
|
41
|
-
|
42
|
-
|
43
|
-
assert_kind_of Hash, first['prefs']
|
39
|
+
assert_nil first['url']
|
40
|
+
assert_nil first['prefs']
|
44
41
|
|
45
42
|
last = m.boards.last
|
46
43
|
assert_not_nil last
|
47
44
|
assert_kind_of Trello::Client::Board, last
|
48
45
|
assert_equal '4f6c9a79c3974b4d730a5533', last['id']
|
49
46
|
assert_equal 'uchicago', last['name']
|
50
|
-
|
47
|
+
assert_nil last['desc']
|
51
48
|
assert_equal false, last['closed']
|
52
49
|
assert_equal '', last['idOrganization']
|
53
50
|
assert_equal true, last['pinned']
|
54
|
-
|
55
|
-
|
56
|
-
assert_kind_of Hash, last['prefs']
|
51
|
+
assert_nil last['url']
|
52
|
+
assert_nil last['prefs']
|
57
53
|
end
|
58
54
|
end
|
59
55
|
|
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.
|
4
|
+
version: 0.0.3
|
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-
|
12
|
+
date: 2012-03-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: multi_json
|
16
|
-
requirement: &
|
16
|
+
requirement: &70229863256380 !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: *
|
24
|
+
version_requirements: *70229863256380
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: fakeweb
|
27
|
-
requirement: &
|
27
|
+
requirement: &70229863255500 !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: *
|
35
|
+
version_requirements: *70229863255500
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: mocha
|
38
|
-
requirement: &
|
38
|
+
requirement: &70229863254720 !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: *
|
46
|
+
version_requirements: *70229863254720
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rake
|
49
|
-
requirement: &
|
49
|
+
requirement: &70229863254000 !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: *
|
57
|
+
version_requirements: *70229863254000
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rdoc
|
60
|
-
requirement: &
|
60
|
+
requirement: &70229863274220 !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: *
|
68
|
+
version_requirements: *70229863274220
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rdoc-readme
|
71
|
-
requirement: &
|
71
|
+
requirement: &70229863273480 !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: *
|
79
|
+
version_requirements: *70229863273480
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: simplecov
|
82
|
-
requirement: &
|
82
|
+
requirement: &70229863272780 !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: *
|
90
|
+
version_requirements: *70229863272780
|
91
91
|
description: Trello API client
|
92
92
|
email:
|
93
93
|
- blair.christensen@gmail.com
|
@@ -103,10 +103,14 @@ files:
|
|
103
103
|
- Rakefile
|
104
104
|
- lib/trello-client.rb
|
105
105
|
- lib/trello-client/board.rb
|
106
|
+
- lib/trello-client/list.rb
|
106
107
|
- lib/trello-client/member.rb
|
107
108
|
- lib/trello-client/version.rb
|
109
|
+
- test/data/board.json
|
110
|
+
- test/data/board_with_lists.json
|
108
111
|
- test/data/member.json
|
109
112
|
- test/data/member_with_boards.json
|
113
|
+
- test/test_board.rb
|
110
114
|
- test/test_client.rb
|
111
115
|
- test/test_member.rb
|
112
116
|
- trello-client.gemspec
|
@@ -124,7 +128,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
124
128
|
version: '0'
|
125
129
|
segments:
|
126
130
|
- 0
|
127
|
-
hash:
|
131
|
+
hash: -1725830249849533101
|
128
132
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
133
|
none: false
|
130
134
|
requirements:
|
@@ -133,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
137
|
version: '0'
|
134
138
|
segments:
|
135
139
|
- 0
|
136
|
-
hash:
|
140
|
+
hash: -1725830249849533101
|
137
141
|
requirements: []
|
138
142
|
rubyforge_project:
|
139
143
|
rubygems_version: 1.8.11
|
@@ -141,7 +145,10 @@ signing_key:
|
|
141
145
|
specification_version: 3
|
142
146
|
summary: Trello API client
|
143
147
|
test_files:
|
148
|
+
- test/data/board.json
|
149
|
+
- test/data/board_with_lists.json
|
144
150
|
- test/data/member.json
|
145
151
|
- test/data/member_with_boards.json
|
152
|
+
- test/test_board.rb
|
146
153
|
- test/test_client.rb
|
147
154
|
- test/test_member.rb
|