trello-client 0.0.1 → 0.0.2

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 CHANGED
@@ -1,5 +1,9 @@
1
1
  = Trello::Client History
2
2
 
3
+ == 2012-03-29 v0.0.2
4
+
5
+ * Added Trello::Client::Board
6
+
3
7
  == 2012-03-28 v0.0.1
4
8
 
5
9
  * First public release.
data/README.rdoc CHANGED
@@ -22,12 +22,19 @@ Get user token:
22
22
  # Get member
23
23
  client.member('me') do |m|
24
24
  # Returns Trello::Client::Member object
25
- m['id'] # => member identity
25
+ m['id'] # => member identifier
26
26
  m['fullName'] # => member name
27
27
  m['userName'] # => member user
28
-
29
- m.boards.each do |board|
30
- # TODO Returns Board JSON
28
+ m['url'] # => member url
29
+ end
30
+
31
+ # Get member with boards
32
+ client.member( 'me', :boards => 'all' ) do |m|
33
+ m.boards.each do |b|
34
+ # Returns Trello::Client::Board objects
35
+ b['id'] # => board identifier
36
+ b['name'] # => board name
37
+ b['url'] # => board url
31
38
  end
32
39
  end
33
40
 
@@ -45,9 +52,11 @@ https://github.com/blairc/trello-client/
45
52
 
46
53
  == To Do
47
54
 
48
- * Get boards
49
55
  * Get lists
50
56
  * Get cards
51
57
  * Memoize API calls
52
58
  * Add script
59
+ * DRY +Board+ and +Member+
60
+ * +Board+ initialization should take JSON or +Hash+
61
+ * Member#boards() should fetch boards if not present?
53
62
 
data/lib/trello-client.rb CHANGED
@@ -4,6 +4,7 @@ require 'multi_json'
4
4
  require 'open-uri'
5
5
  require 'uri'
6
6
 
7
+ require 'trello-client/board'
7
8
  require 'trello-client/member'
8
9
  require 'trello-client/version'
9
10
 
@@ -32,12 +33,19 @@ require 'trello-client/version'
32
33
  # # Get member
33
34
  # client.member('me') do |m|
34
35
  # # Returns Trello::Client::Member object
35
- # m['id'] # => member identity
36
+ # m['id'] # => member identifier
36
37
  # m['fullName'] # => member name
37
38
  # m['userName'] # => member user
38
- #
39
- # m.boards.each do |board|
40
- # # TODO Returns Board JSON
39
+ # m['url'] # => member url
40
+ # end
41
+ #
42
+ # # Get member with boards
43
+ # client.member( 'me', :boards => 'all' ) do |m|
44
+ # m.boards.each do |b|
45
+ # # Returns Trello::Client::Board objects
46
+ # b['id'] # => board identifier
47
+ # b['name'] # => board name
48
+ # b['url'] # => board url
41
49
  # end
42
50
  # end
43
51
  #
@@ -55,11 +63,13 @@ require 'trello-client/version'
55
63
  #
56
64
  # == To Do
57
65
  #
58
- # * Get boards
59
66
  # * Get lists
60
67
  # * Get cards
61
68
  # * Memoize API calls
62
69
  # * Add script
70
+ # * DRY +Board+ and +Member+
71
+ # * +Board+ initialization should take JSON or +Hash+
72
+ # * Member#boards() should fetch boards if not present?
63
73
  #
64
74
  module Trello # :nodoc:
65
75
 
@@ -0,0 +1,36 @@
1
+ # encoding: utf-8
2
+
3
+ module Trello # :nodoc:
4
+ class Client # :nodoc:
5
+
6
+ #
7
+ # Trello::Client::Board object
8
+ #
9
+ # See https://trello.com/docs/api/board/index.html
10
+ #
11
+ class Board
12
+
13
+ #
14
+ # Initialize Trello::Client::Board
15
+ #
16
+ # Params:
17
+ # +board+:: Hash'ified JSON board
18
+ #
19
+ def initialize(board)
20
+ @board = board
21
+ yield self if block_given?
22
+ self
23
+ end
24
+
25
+ #
26
+ # Get Trello::Client::Board property
27
+ #
28
+ def[](key)
29
+ @board[key]
30
+ end
31
+
32
+ end # class Board
33
+
34
+ end # class Client
35
+ end # module Trello
36
+
@@ -1,34 +1,42 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Trello # :nodoc:
4
- class Client # :nodoc
4
+ class Client # :nodoc:
5
5
 
6
6
  #
7
7
  # Trello::Client::Member object
8
8
  #
9
+ # See https://trello.com/docs/api/member/index.html
10
+ #
9
11
  class Member
10
12
 
11
13
  #
12
- # Initialize Trello::Member
14
+ # Initialize Trello::Client::Member
15
+ #
16
+ # Params:
17
+ # +member+:: JSON member
13
18
  #
14
- def initialize(json)
15
- @json = MultiJson.decode(json)
19
+ def initialize(member)
20
+ @member = MultiJson.decode(member)
16
21
  yield self if block_given?
17
22
  self
18
23
  end
19
24
 
20
25
  #
21
- # Get Trello::Member property
26
+ # Get Trello::Client::Member property
22
27
  #
23
28
  def[](key)
24
- @json[key]
29
+ @member[key]
25
30
  end
26
31
 
27
32
  #
28
33
  # Get +Array+ of boards
29
34
  #
30
35
  def boards
31
- @json['boards'] || []
36
+ unless @boards
37
+ @boards = ( @member['boards'] || [] ).collect { |b| Trello::Client::Board.new(b) }
38
+ end
39
+ @boards
32
40
  end
33
41
 
34
42
  end # class Member
@@ -5,6 +5,6 @@ module Trello
5
5
  #
6
6
  # Trello::Client version
7
7
  #
8
- VERSION = '0.0.1'
8
+ VERSION = '0.0.2'
9
9
  end
10
10
  end
data/test/test_member.rb CHANGED
@@ -11,8 +11,50 @@ require 'test/unit'
11
11
 
12
12
  class TestMember < Test::Unit::TestCase
13
13
 
14
- def test
15
- skip 'TODO - Add explicit Test::Client::Member tests'
14
+ def setup
15
+ @test_dir = File.dirname(__FILE__)
16
+ @test_data = File.join( @test_dir, 'data' )
17
+ end
18
+
19
+ def test_boards
20
+ Trello::Client.new do |client|
21
+ json = open( File.join( @test_data, 'member_with_boards.json' ) )
22
+ m = Trello::Client::Member.new(json)
23
+ client.stubs(:member).with('me').returns(m)
24
+
25
+ assert_not_nil m
26
+ assert_kind_of Trello::Client::Member, m
27
+
28
+ assert_not_nil m.boards
29
+ assert_kind_of Array, m.boards
30
+ assert_equal 3, m.boards.size
31
+
32
+ first = m.boards.first
33
+ assert_not_nil first
34
+ assert_kind_of Trello::Client::Board, first
35
+ assert_equal '4f4d0477e4ba0e4f09af1c6c', first['id']
36
+ assert_equal '5E - Survey Database Site Features', first['name']
37
+ assert_equal '', first['desc']
38
+ assert_equal false, first['closed']
39
+ assert_equal '', first['idOrganization']
40
+ assert_equal true, first['pinned']
41
+ assert_equal 'https://trello.com/board/5e-survey-database-site-features/4f4d0477e4ba0e4f09af1c6c', first['url']
42
+ assert_not_nil first['prefs']
43
+ assert_kind_of Hash, first['prefs']
44
+
45
+ last = m.boards.last
46
+ assert_not_nil last
47
+ assert_kind_of Trello::Client::Board, last
48
+ assert_equal '4f6c9a79c3974b4d730a5533', last['id']
49
+ assert_equal 'uchicago', last['name']
50
+ assert_equal '', last['desc']
51
+ assert_equal false, last['closed']
52
+ assert_equal '', last['idOrganization']
53
+ assert_equal true, last['pinned']
54
+ assert_equal 'https://trello.com/board/uchicago/4f6c9a79c3974b4d730a5533', last['url']
55
+ assert_not_nil last['prefs']
56
+ assert_kind_of Hash, last['prefs']
57
+ end
16
58
  end
17
59
 
18
60
  end
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.1
4
+ version: 0.0.2
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-28 00:00:00.000000000 Z
12
+ date: 2012-03-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_json
16
- requirement: &70273668948620 !ruby/object:Gem::Requirement
16
+ requirement: &70241066627280 !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: *70273668948620
24
+ version_requirements: *70241066627280
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: fakeweb
27
- requirement: &70273668947980 !ruby/object:Gem::Requirement
27
+ requirement: &70241066626700 !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: *70273668947980
35
+ version_requirements: *70241066626700
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: mocha
38
- requirement: &70273668947200 !ruby/object:Gem::Requirement
38
+ requirement: &70241066626160 !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: *70273668947200
46
+ version_requirements: *70241066626160
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake
49
- requirement: &70273668946460 !ruby/object:Gem::Requirement
49
+ requirement: &70241066625160 !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: *70273668946460
57
+ version_requirements: *70241066625160
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rdoc
60
- requirement: &70273668945700 !ruby/object:Gem::Requirement
60
+ requirement: &70241066624560 !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: *70273668945700
68
+ version_requirements: *70241066624560
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rdoc-readme
71
- requirement: &70273668944700 !ruby/object:Gem::Requirement
71
+ requirement: &70241066623460 !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: *70273668944700
79
+ version_requirements: *70241066623460
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: simplecov
82
- requirement: &70273668965120 !ruby/object:Gem::Requirement
82
+ requirement: &70241066643560 !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: *70273668965120
90
+ version_requirements: *70241066643560
91
91
  description: Trello API client
92
92
  email:
93
93
  - blair.christensen@gmail.com
@@ -102,6 +102,7 @@ files:
102
102
  - README.rdoc
103
103
  - Rakefile
104
104
  - lib/trello-client.rb
105
+ - lib/trello-client/board.rb
105
106
  - lib/trello-client/member.rb
106
107
  - lib/trello-client/version.rb
107
108
  - test/data/member.json
@@ -123,7 +124,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
123
124
  version: '0'
124
125
  segments:
125
126
  - 0
126
- hash: -3090611917339135223
127
+ hash: 2861758946972274756
127
128
  required_rubygems_version: !ruby/object:Gem::Requirement
128
129
  none: false
129
130
  requirements:
@@ -132,7 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
133
  version: '0'
133
134
  segments:
134
135
  - 0
135
- hash: -3090611917339135223
136
+ hash: 2861758946972274756
136
137
  requirements: []
137
138
  rubyforge_project:
138
139
  rubygems_version: 1.8.11