ruby-trello 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/lib/trello.rb CHANGED
@@ -6,9 +6,11 @@ require 'oauth'
6
6
  require 'yajl'
7
7
 
8
8
  module Trello
9
+ autoload :BasicData, 'trello/basic_data'
9
10
  autoload :Board, 'trello/board'
10
11
  autoload :Card, 'trello/card'
11
12
  autoload :Client, 'trello/client'
13
+ autoload :List, 'trello/list'
12
14
  autoload :Member, 'trello/member'
13
15
  autoload :Organization, 'trello/organization'
14
16
  end
@@ -0,0 +1,25 @@
1
+ # Ruby wrapper around the Trello API
2
+ # Copyright (c) 2012, Jeremy Tregunna
3
+ # Use and distribution terms may be found in the file LICENSE included in this distribution.
4
+
5
+ module Trello
6
+ class BasicData
7
+ attr_reader :fields
8
+
9
+ class << self
10
+ def find(path, id)
11
+ response = Client.query("/1/#{path}/#{id}")
12
+ new(Yajl::Parser.parse(response.read_body))
13
+ end
14
+ end
15
+
16
+ # Fields
17
+ def initialize(fields = {})
18
+ @fields = fields
19
+ end
20
+
21
+ def ==(other)
22
+ @fields == other.fields
23
+ end
24
+ end
25
+ end
data/lib/trello/board.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  # Use and distribution terms may be found in the file LICENSE included in this distribution.
4
4
 
5
5
  module Trello
6
- class Board
6
+ class Board < BasicData
7
7
  class << self
8
8
  def find(id)
9
9
  response = Client.query("/1/boards/#{id}")
@@ -11,30 +11,26 @@ module Trello
11
11
  end
12
12
  end
13
13
 
14
- def initialize(fields = {})
15
- @fields = fields
16
- end
17
-
18
14
  # Fields
19
15
 
20
16
  def id
21
- @fields['id']
17
+ fields['id']
22
18
  end
23
19
 
24
20
  def name
25
- @fields['name']
21
+ fields['name']
26
22
  end
27
23
 
28
24
  def description
29
- @fields['desc']
25
+ fields['desc']
30
26
  end
31
27
 
32
28
  def closed
33
- @fields['closed']
29
+ fields['closed']
34
30
  end
35
31
 
36
32
  def url
37
- @fields['url']
33
+ fields['url']
38
34
  end
39
35
 
40
36
  # Links to other data structures
@@ -48,7 +44,7 @@ module Trello
48
44
  end
49
45
 
50
46
  def organization
51
- Organization.find(@fields['idOrganization'])
47
+ Organization.find(fields['idOrganization'])
52
48
  end
53
49
  end
54
50
  end
data/lib/trello/card.rb CHANGED
@@ -3,48 +3,43 @@
3
3
  # Use and distribution terms may be found in the file LICENSE included in this distribution.
4
4
 
5
5
  module Trello
6
- class Card
6
+ class Card < BasicData
7
7
  class << self
8
8
  def find(id)
9
- response = Client.query("/1/cards/#{id}")
10
- new(Yajl::Parser.parse(response.read_body))
9
+ super(:cards, id)
11
10
  end
12
11
  end
13
12
 
14
- def initialize(fields = {})
15
- @fields = fields
16
- end
17
-
18
13
  # Fields
19
14
 
20
15
  def id
21
- @fields['id']
16
+ fields['id']
22
17
  end
23
18
 
24
19
  def name
25
- @fields['name']
20
+ fields['name']
26
21
  end
27
22
 
28
23
  def description
29
- @fields['desc']
24
+ fields['desc']
30
25
  end
31
26
 
32
27
  def closed
33
- @fields['closed']
28
+ fields['closed']
34
29
  end
35
30
 
36
31
  def url
37
- @fields['url']
32
+ fields['url']
38
33
  end
39
34
 
40
35
  # Links to other data structures
41
36
 
42
37
  def board
43
- Board.find(@fields['idBoard'])
38
+ Board.find(fields['idBoard'])
44
39
  end
45
40
 
46
41
  def members
47
- @fields['idMembers'].map do |member_id|
42
+ fields['idMembers'].map do |member_id|
48
43
  response = Client.query("/1/members/#{member_id}")
49
44
  Member.new(Yajl::Parser.parse(response.read_body))
50
45
  end
@@ -0,0 +1,39 @@
1
+ # Ruby wrapper around the Trello API
2
+ # Copyright (c) 2012, Jeremy Tregunna
3
+ # Use and distribution terms may be found in the file LICENSE included in this distribution.
4
+
5
+ module Trello
6
+ class List < BasicData
7
+ class << self
8
+ def find(id)
9
+ super(:lists, id)
10
+ end
11
+ end
12
+
13
+ # Fields
14
+
15
+ def id
16
+ fields['id']
17
+ end
18
+
19
+ def name
20
+ fields['name']
21
+ end
22
+
23
+ def closed
24
+ fields['closed']
25
+ end
26
+
27
+ # Links to other data structures
28
+
29
+ def board
30
+ Board.find(fields['idBoard'])
31
+ end
32
+
33
+ def cards
34
+ fields['cards'].map do |c|
35
+ Card.new(c)
36
+ end
37
+ end
38
+ end
39
+ end
data/lib/trello/member.rb CHANGED
@@ -3,11 +3,10 @@
3
3
  # Use and distribution terms may be found in the file LICENSE included in this distribution.
4
4
 
5
5
  module Trello
6
- class Member
6
+ class Member < BasicData
7
7
  class << self
8
8
  def find(id_or_username)
9
- response = Client.query("/1/members/#{id_or_username}")
10
- new(Yajl::Parser.parse(response.read_body))
9
+ super(:members, id_or_username)
11
10
  end
12
11
  end
13
12
 
@@ -3,11 +3,10 @@
3
3
  # Use and distribution terms may be found in the file LICENSE included in this distribution.
4
4
 
5
5
  module Trello
6
- class Organization
6
+ class Organization < BasicData
7
7
  class << self
8
8
  def find(id)
9
- response = Client.query("/1/organizations/#{id}")
10
- new(Yajl::Parser.parse(response.read_body))
9
+ super(:organizations, id)
11
10
  end
12
11
  end
13
12
 
data/spec/list_spec.rb ADDED
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ module Trello
4
+ describe List do
5
+ include Helpers
6
+
7
+ before(:all) do
8
+ Client.public_key = 'dummy'
9
+ Client.secret = 'dummy'
10
+ end
11
+
12
+ before(:each) do
13
+ stub_request(:get, "https://api.trello.com/1/lists/abcdef123456789123456789?").
14
+ with(:headers => {'Accept'=>'*/*', 'Authorization'=>/.*/, 'User-Agent' => /.*/}).
15
+ to_return(:status => 200, :headers => {}, :body => Yajl::Encoder.encode(lists_details.first))
16
+ stub_request(:get, "https://api.trello.com/1/boards/abcdef123456789123456789?").
17
+ with(:headers => {'Accept'=>'*/*', 'Authorization'=>/.*/, 'User-Agent' => /.*/}).
18
+ to_return(:status => 200, :headers => {}, :body => Yajl::Encoder.encode(boards_details.first))
19
+
20
+ @list = List.find("abcdef123456789123456789")
21
+ end
22
+
23
+ context "fields" do
24
+ it "gets its id" do
25
+ @list.id.should == lists_details.first['id']
26
+ end
27
+
28
+ it "gets its name" do
29
+ @list.name.should == lists_details.first['name']
30
+ end
31
+
32
+ it "knows if it is open or closed" do
33
+ @list.closed.should == lists_details.first['closed']
34
+ end
35
+
36
+ it "has a board" do
37
+ @list.board.should == Board.new(boards_details.first)
38
+ end
39
+ end
40
+
41
+ context "cards" do
42
+ it "has a list of cards" do
43
+ @list.cards.count.should be > 0
44
+ end
45
+ end
46
+ end
47
+ end
data/spec/member_spec.rb CHANGED
@@ -12,7 +12,10 @@ module Trello
12
12
  end
13
13
 
14
14
  before(:each) do
15
- stub_oauth!
15
+ stub_request(:get, "https://api.trello.com/1/members/me?").
16
+ with(:headers => {'Accept'=>'*/*', 'Authorization'=>/.*/, 'User-Agent' => /.*/}).
17
+ to_return(:status => 200, :headers => {}, :body => user_payload)
18
+
16
19
  @member = Member.find('me')
17
20
  end
18
21
 
@@ -45,23 +48,23 @@ module Trello
45
48
 
46
49
  context "personal" do
47
50
  it "gets the members bio" do
48
- @member.bio.should_not be_nil
51
+ @member.bio.should == user_details['bio']
49
52
  end
50
53
 
51
54
  it "gets the full name" do
52
- @member.full_name.should_not be_nil
55
+ @member.full_name.should == user_details['fullName']
53
56
  end
54
57
 
55
58
  it "gets the gravatar id" do
56
- @member.gravatar_id.should_not be_nil
59
+ @member.gravatar_id.should == user_details['gravatar']
57
60
  end
58
61
 
59
62
  it "gets the url" do
60
- @member.url.should_not be_nil
63
+ @member.url.should == user_details['url']
61
64
  end
62
65
 
63
66
  it "gets the username" do
64
- @member.username.should_not be_nil
67
+ @member.username.should == user_details['username']
65
68
  end
66
69
  end
67
70
  end
data/spec/spec_helper.rb CHANGED
@@ -47,6 +47,20 @@ module Helpers
47
47
  Yajl::Encoder.encode(boards_details)
48
48
  end
49
49
 
50
+ def lists_details
51
+ [{
52
+ "id" => "abcdef123456789123456789",
53
+ "name" => "To Do",
54
+ "closed" => false,
55
+ "idBoard" => "abcdef123456789123456789",
56
+ "cards" => cards_details
57
+ }]
58
+ end
59
+
60
+ def lists_payload
61
+ Yajl::Encoder.encode(lists_details)
62
+ end
63
+
50
64
  def cards_details
51
65
  [{
52
66
  "id" => "abcdef123456789123456789",
@@ -77,10 +91,4 @@ module Helpers
77
91
  def orgs_payload
78
92
  Yajl::Encoder.encode(orgs_details)
79
93
  end
80
-
81
- def stub_oauth!
82
- stub_request(:get, "https://api.trello.com/1/members/me?").
83
- with(:headers => {'Accept'=>'*/*', 'Authorization'=>/.*/, 'User-Agent' => /.*/}).
84
- to_return(:status => 200, :headers => {}, :body => user_payload)
85
- end
86
94
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-trello
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-01-07 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: yajl-ruby
16
- requirement: &70132949849940 !ruby/object:Gem::Requirement
16
+ requirement: &70325350827020 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 1.1.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70132949849940
24
+ version_requirements: *70325350827020
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: oauth
27
- requirement: &70132949849480 !ruby/object:Gem::Requirement
27
+ requirement: &70325350826560 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.4.5
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70132949849480
35
+ version_requirements: *70325350826560
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: addressable
38
- requirement: &70132949849020 !ruby/object:Gem::Requirement
38
+ requirement: &70325350826100 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 2.2.6
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70132949849020
46
+ version_requirements: *70325350826100
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
- requirement: &70132949874400 !ruby/object:Gem::Requirement
49
+ requirement: &70325350825640 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: 1.0.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70132949874400
57
+ version_requirements: *70325350825640
58
58
  description: A wrapper around the trello.com API.
59
59
  email: jeremy@tregunna.ca
60
60
  executables: []
@@ -62,9 +62,11 @@ extensions: []
62
62
  extra_rdoc_files:
63
63
  - README.md
64
64
  files:
65
+ - lib/trello/basic_data.rb
65
66
  - lib/trello/board.rb
66
67
  - lib/trello/card.rb
67
68
  - lib/trello/client.rb
69
+ - lib/trello/list.rb
68
70
  - lib/trello/member.rb
69
71
  - lib/trello/organization.rb
70
72
  - lib/trello.rb
@@ -72,6 +74,7 @@ files:
72
74
  - spec/board_spec.rb
73
75
  - spec/card_spec.rb
74
76
  - spec/client_spec.rb
77
+ - spec/list_spec.rb
75
78
  - spec/member_spec.rb
76
79
  - spec/organization_spec.rb
77
80
  - spec/spec_helper.rb
@@ -104,6 +107,7 @@ test_files:
104
107
  - spec/board_spec.rb
105
108
  - spec/card_spec.rb
106
109
  - spec/client_spec.rb
110
+ - spec/list_spec.rb
107
111
  - spec/member_spec.rb
108
112
  - spec/organization_spec.rb
109
113
  - spec/spec_helper.rb