ruby-trello 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -22,6 +22,10 @@ of refactoring and functionality to be deserving of a beer and this special than
22
22
 
23
23
  ## Contributing
24
24
 
25
+ Several ways you can contribute. Documentation, code, tests, feature requests, bug reports.
26
+
27
+ We develop ruby-trello using [Trello itself](https://trello.com/board/ruby-trello/4f092b2ee23cb6fe6d1aaabd).
28
+
25
29
  Pick up an editor, fix a test! (If you want to, of course.) Send a pull
26
30
  request, and I'll look at it. I only ask a few things:
27
31
 
data/lib/trello.rb CHANGED
@@ -40,25 +40,25 @@ module Trello
40
40
  autoload :Request, 'trello/net'
41
41
  autoload :TInternet, 'trello/net'
42
42
 
43
+ module Authorization
44
+ autoload :AuthPolicy, 'trello/authorization'
45
+ autoload :BasicAuthPolicy, 'trello/authorization'
46
+ autoload :OAuthPolicy, 'trello/authorization'
47
+ end
48
+
43
49
  # Version of the Trello API that we use by default.
44
50
  API_VERSION = 1
45
51
 
46
52
  # Raise this when we hit a Trello error.
47
53
  class Error < StandardError; end
54
+ # This specific error is thrown when your access token is invalid. You should get a new one.
55
+ class InvalidAccessToken < StandardError; end
48
56
 
49
57
  def self.logger
50
- @@logger || Logger.new(STDOUT)
58
+ @logger ||= Logger.new(STDOUT)
51
59
  end
52
60
 
53
61
  def self.logger=(logger)
54
- @@logger = logger
55
- end
56
- end
57
-
58
- module Trello
59
- module Authorization
60
- autoload :AuthPolicy, 'trello/authorization'
61
- autoload :BasicAuthPolicy, 'trello/authorization'
62
- autoload :OAuthPolicy, 'trello/authorization'
62
+ @logger = logger
63
63
  end
64
- end
64
+ end
@@ -37,7 +37,10 @@ module Trello
37
37
  attr_accessor :consumer_credential, :token
38
38
 
39
39
  def authorize(request)
40
- fail "The consumer_credential has not been supplied." unless consumer_credential
40
+ unless consumer_credential
41
+ Trello.logger.error "The consumer_credential has not been supplied."
42
+ fail "The consumer_credential has not been supplied."
43
+ end
41
44
 
42
45
  request.headers = {"Authorization" => get_auth_header(request.uri, :get)}
43
46
  request
@@ -48,7 +51,7 @@ module Trello
48
51
  def get_auth_header(url, verb)
49
52
  require "oauth"
50
53
 
51
- self.token ||= OAuthCredential.new
54
+ self.token ||= OAuthCredential.new
52
55
 
53
56
  consumer = OAuth::Consumer.new(
54
57
  consumer_credential.key,
data/lib/trello/board.rb CHANGED
@@ -10,19 +10,29 @@ module Trello
10
10
  end
11
11
 
12
12
  def create(attributes)
13
- Client.post("/boards/", attributes).json_into Board
13
+ new('name' => attributes[:name],
14
+ 'desc' => attributes[:description],
15
+ 'closed' => attributes[:closed] || false).save!
14
16
  end
15
17
  end
16
18
 
17
19
  def save!
20
+ return update! if id
21
+
22
+ attributes = { :name => name }
23
+ attributes.merge!(:desc => description) if description
24
+ attributes.merge!(:idOrganization => organization_id) if organization_id
25
+
26
+ Client.post("/boards", attributes).json_into(self)
27
+ end
28
+
29
+ def update!
18
30
  fail "Cannot save new instance." unless self.id
19
31
 
20
32
  Client.put("/boards/#{self.id}/", {
21
- :name => @name,
22
- :description => @description,
23
- :closed => @closed,
24
- :url => @url,
25
- :organisation_id => @organisation_id
33
+ :name => @name,
34
+ :description => @description,
35
+ :closed => @closed
26
36
  }).json_into(self)
27
37
  end
28
38
 
data/lib/trello/card.rb CHANGED
@@ -132,5 +132,17 @@ module Trello
132
132
  :value => checklist.id
133
133
  })
134
134
  end
135
+
136
+ # Add a label
137
+ def add_label(colour)
138
+ return logger.warn "The label colour '#{colour}' does not exist." unless %w{green yellow orange red purple blue}.include? colour
139
+ Client.post("/cards/#{id}/labels", { :value => colour })
140
+ end
141
+
142
+ # Remove a label
143
+ def remove_label(colour)
144
+ return logger.warn "The label colour '#{colour}' does not exist." unless %w{green yellow orange red purple blue}.include? colour
145
+ Client.delete("/cards/#{id}/labels/#{colour}")
146
+ end
135
147
  end
136
148
  end
@@ -1,5 +1,5 @@
1
1
  module Trello
2
- # A Checklist holds items which are like a "todo" list. Checklists are linked to a card.
2
+ # A Checklist holds items which are like a "task" list. Checklists are linked to a card.
3
3
  class Checklist < BasicData
4
4
  attr_reader :id, :name, :description, :closed, :url, :check_items, :board_id, :list_id, :member_ids
5
5
 
@@ -43,10 +43,11 @@ module Trello
43
43
  Client.post("/checklists", {
44
44
  :name => @name,
45
45
  :idBoard => @board_id
46
- })
46
+ }).json_into(self)
47
47
  end
48
48
 
49
49
  def update!
50
+ Client.put("/checklists", { :name => @name }).json_into(self)
50
51
  end
51
52
 
52
53
  # Return a list of items on the checklist.
data/lib/trello/client.rb CHANGED
@@ -6,44 +6,39 @@ module Trello
6
6
 
7
7
  class << self
8
8
  def get(path, params = {})
9
- api_version = 1
10
-
11
- uri = Addressable::URI.parse("https://api.trello.com/#{api_version}#{path}")
9
+ uri = Addressable::URI.parse("https://api.trello.com/#{API_VERSION}#{path}")
12
10
  uri.query_values = params unless params.empty?
13
-
14
- request = Request.new :get, uri, {}
15
-
16
- response = TInternet.execute AuthPolicy.authorize(request)
17
-
18
- raise Error, response.body unless response.code.to_i == 200
19
-
20
- response.body
11
+ invoke_verb(:get, uri)
21
12
  end
22
13
 
23
14
  def post(path, body = {})
24
- api_version = 1
25
-
26
- uri = Addressable::URI.parse("https://api.trello.com/#{api_version}#{path}")
27
-
28
- request = Request.new :post, uri, {}, body
29
-
30
- response = TInternet.execute AuthPolicy.authorize(request)
31
-
32
- raise Error, response.body unless response.code.to_i == 200
33
-
34
- response.body
15
+ uri = Addressable::URI.parse("https://api.trello.com/#{API_VERSION}#{path}")
16
+ invoke_verb(:post, uri, body)
35
17
  end
36
18
 
37
19
  def put(path, body = {})
38
- api_version = 1
39
-
40
- uri = Addressable::URI.parse("https://api.trello.com/#{api_version}#{path}")
20
+ uri = Addressable::URI.parse("https://api.trello.com/#{API_VERSION}#{path}")
21
+ invoke_verb(:put, uri, body)
22
+ end
41
23
 
42
- request = Request.new :put, uri, {}, body
24
+ def delete(path)
25
+ uri = Addressable::URI.parse("https://api.trello.com/#{API_VERSION}#{path}")
26
+ invoke_verb(:delete, uri)
27
+ end
43
28
 
29
+ def invoke_verb(name, uri, body = nil)
30
+ request = Request.new name, uri, {}, body
44
31
  response = TInternet.execute AuthPolicy.authorize(request)
45
32
 
46
- raise Error, response.body unless response.code.to_i == 200
33
+ if response.code.to_i == 401 && response.body =~ /expired token/
34
+ Trello.logger.error("[401 #{name.to_s.upcase} #{uri}]: Your access token has expired.")
35
+ raise InvalidAccessToken, response.body
36
+ end
37
+
38
+ unless response.code.to_i == 200
39
+ Trello.logger.error("[#{response.code.to_i} #{name.to_s.upcase} #{uri}]: #{response.body}")
40
+ raise Error, response.body
41
+ end
47
42
 
48
43
  response.body
49
44
  end
data/lib/trello/list.rb CHANGED
@@ -38,6 +38,10 @@ module Trello
38
38
  end
39
39
 
40
40
  def update!
41
+ Client.put("/lists", {
42
+ :name => @name,
43
+ :closed => @closed
44
+ }).json_into(self)
41
45
  end
42
46
 
43
47
  # Check if the list is not active anymore.
@@ -1,11 +1,48 @@
1
1
  module Trello
2
- # Notifications for members
3
- #
4
- # This class is not yet implemented as the feature set is not known yet.
5
2
  class Notification < BasicData
3
+ attr_reader :id, :unread, :type, :date, :data, :member_creator_id
4
+
5
+ class << self
6
+ # Locate a notification by its id
7
+ def find(id)
8
+ super(:notifications, id)
9
+ end
10
+ end
11
+
6
12
  def update_fields(fields)
7
- @id = fields['id']
13
+ @id = fields['id']
14
+ @unread = fields['unread']
15
+ @type = fields['type']
16
+ @date = fields['date']
17
+ @data = fields['data']
18
+ @member_creator_id = fields['idMemberCreator']
8
19
  self
9
20
  end
21
+
22
+ alias :unread? :unread
23
+
24
+ def member_creator
25
+ Member.find(member_creator_id)
26
+ end
27
+
28
+ def board
29
+ Client.get("/notifications/#{id}/board").json_into(Board)
30
+ end
31
+
32
+ def list
33
+ Client.get("/notifications/#{id}/list").json_into(List)
34
+ end
35
+
36
+ def card
37
+ Client.get("/notifications/#{id}/card").json_into(Card)
38
+ end
39
+
40
+ def member
41
+ Client.get("/notifications/#{id}/member").json_into(Member)
42
+ end
43
+
44
+ def organization
45
+ Client.get("/notifications/#{id}/organization").json_into(Organization)
46
+ end
10
47
  end
11
48
  end
data/lib/trello/string.rb CHANGED
@@ -25,8 +25,10 @@ class String
25
25
  end
26
26
  rescue JSON::ParserError => json_error
27
27
  if json_error.message =~ /model not found/
28
+ logger.error "Could not find that record."
28
29
  raise Trello::Error, "Request could not be found."
29
30
  else
31
+ logger.error "Unknown error."
30
32
  raise
31
33
  end
32
34
  end
data/spec/board_spec.rb CHANGED
@@ -122,11 +122,11 @@ module Trello
122
122
  Client.should_not_receive :put
123
123
 
124
124
  the_new_board = Board.new
125
- lambda{the_new_board.save!}.should raise_error "Cannot save new instance."
125
+ lambda{the_new_board.save!}.should raise_error
126
126
  end
127
127
 
128
128
  it "puts all fields except id" do
129
- expected_fields = %w{name description closed url organisation_id}.map{|s| s.to_sym}
129
+ expected_fields = %w{name description closed}.map{|s| s.to_sym}
130
130
 
131
131
  Client.should_receive(:put) do |anything, body|
132
132
  body.keys.should =~ expected_fields
@@ -171,20 +171,21 @@ module Trello
171
171
 
172
172
  it "creates a new board with whatever attributes are supplied " do
173
173
  expected_attributes = { :name => "Any new board name", :description => "Any new board desription" }
174
-
175
- Client.should_receive(:post).with(anything, expected_attributes).and_return any_board_json
174
+ sent_attributes = { :name => expected_attributes[:name], :desc => expected_attributes[:description] }
175
+
176
+ Client.should_receive(:post).with("/boards", sent_attributes).and_return any_board_json
176
177
 
177
178
  Board.create expected_attributes
178
179
  end
179
180
 
180
181
  it "posts to the boards collection" do
181
- Client.should_receive(:post).with("/boards/", anything).and_return any_board_json
182
+ Client.should_receive(:post).with("/boards", anything).and_return any_board_json
182
183
 
183
184
  Board.create :xxx => ""
184
185
  end
185
186
 
186
187
  it "returns a board" do
187
- Client.stub(:post).with("/boards/", anything).and_return any_board_json
188
+ Client.stub(:post).with("/boards", anything).and_return any_board_json
188
189
 
189
190
  the_new_board = Board.create :xxx => ""
190
191
  the_new_board.should be_a Board
@@ -0,0 +1,82 @@
1
+ require 'spec_helper'
2
+
3
+ module Trello
4
+ describe Notification do
5
+ include Helpers
6
+
7
+ before(:each) do
8
+ Client.stub(:get).with("/members/me").and_return user_payload
9
+ Client.stub(:get).with("/members/me/notifications").and_return "[" << notification_payload << "]"
10
+ @notification = Member.find("me").notifications.first
11
+ end
12
+
13
+ context "finding" do
14
+ it "can find a specific notification" do
15
+ Client.stub(:get).with("/notifications/#{notification_details['id']}").and_return notification_payload
16
+ Notification.find(notification_details['id']).should == @notification
17
+ end
18
+ end
19
+
20
+ context "boards" do
21
+ it "can retrieve the board" do
22
+ Client.stub(:get).with("/notifications/#{notification_details['id']}/board").and_return JSON.generate(boards_details.first)
23
+ @notification.board.id.should == boards_details.first['id']
24
+ end
25
+ end
26
+
27
+ context "lists" do
28
+ it "can retrieve the list" do
29
+ Client.stub(:get).with("/notifications/#{notification_details['id']}/list").and_return JSON.generate(lists_details.first)
30
+ @notification.list.id.should == lists_details.first['id']
31
+ end
32
+ end
33
+
34
+ context "cards" do
35
+ it "can retrieve the card" do
36
+ Client.stub(:get).with("/notifications/#{notification_details['id']}/card").and_return JSON.generate(cards_details.first)
37
+ @notification.card.id.should == cards_details.first['id']
38
+ end
39
+ end
40
+
41
+ context "members" do
42
+ it "can retrieve the member" do
43
+ Client.stub(:get).with("/notifications/#{notification_details['id']}/member").and_return user_payload
44
+ @notification.member.id.should == user_details['id']
45
+ end
46
+
47
+ it "can retrieve the member creator" do
48
+ Client.stub(:get).with("/members/#{user_details['id']}").and_return user_payload
49
+ @notification.member_creator.id.should == user_details['id']
50
+ end
51
+ end
52
+
53
+ context "organization" do
54
+ it "can retrieve the organization" do
55
+ Client.stub(:get).with("/notifications/#{notification_details['id']}/organization").and_return JSON.generate(orgs_details.first)
56
+ @notification.organization.id.should == orgs_details.first['id']
57
+ end
58
+ end
59
+
60
+ context "local" do
61
+ it "gets the read status" do
62
+ @notification.unread?.should == notification_details['unread']
63
+ end
64
+
65
+ it "gets the type" do
66
+ @notification.type.should == notification_details['type']
67
+ end
68
+
69
+ it "gets the date" do
70
+ @notification.date.should == notification_details['date']
71
+ end
72
+
73
+ it "gets the data" do
74
+ @notification.data.should == notification_details['data']
75
+ end
76
+
77
+ it "gets the member creator id" do
78
+ @notification.member_creator_id.should == notification_details['idMemberCreator']
79
+ end
80
+ end
81
+ end
82
+ end
@@ -79,5 +79,4 @@ describe OAuthPolicy do
79
79
 
80
80
  it "adds correct signature for https uri"
81
81
  it "adds correct signature for verbs other than get"
82
- it "can sign with access token too"
83
82
  end
data/spec/spec_helper.rb CHANGED
@@ -142,4 +142,29 @@ module Helpers
142
142
  def actions_payload
143
143
  JSON.generate(actions_details)
144
144
  end
145
+
146
+ def notification_details
147
+ {
148
+ "id" => "4f30d084d5b0f7ab453bee51",
149
+ "unread" => false,
150
+ "type" => "commentCard",
151
+ "date" => "2012-02-07T07:19:32.393Z",
152
+ "data" => {
153
+ "board" => {
154
+ "id" => "abcdef123456789123456789",
155
+ "name" => "Test"
156
+ },
157
+ "card"=>{
158
+ "id" => "abcdef123456789123456789",
159
+ "name" => "Do something awesome"
160
+ },
161
+ "text" => "test"
162
+ },
163
+ "idMemberCreator" => "abcdef123456789012345678"
164
+ }
165
+ end
166
+
167
+ def notification_payload
168
+ JSON.generate(notification_details)
169
+ end
145
170
  end
metadata CHANGED
@@ -1,112 +1,78 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ruby-trello
3
- version: !ruby/object:Gem::Version
4
- hash: 4135067353417607739
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.2
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 3
9
- - 1
10
- version: 0.3.1
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Jeremy Tregunna
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-01-07 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-01-07 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: yajl-ruby
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70172866550100 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3461773182973075480
29
- segments:
30
- - 1
31
- - 1
32
- - 0
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
33
21
  version: 1.1.0
34
22
  type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: oauth
38
23
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70172866550100
25
+ - !ruby/object:Gem::Dependency
26
+ name: oauth
27
+ requirement: &70172866549140 !ruby/object:Gem::Requirement
40
28
  none: false
41
- requirements:
29
+ requirements:
42
30
  - - ~>
43
- - !ruby/object:Gem::Version
44
- hash: 3072838298281563226
45
- segments:
46
- - 0
47
- - 4
48
- - 5
31
+ - !ruby/object:Gem::Version
49
32
  version: 0.4.5
50
33
  type: :runtime
51
- version_requirements: *id002
52
- - !ruby/object:Gem::Dependency
53
- name: addressable
54
34
  prerelease: false
55
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *70172866549140
36
+ - !ruby/object:Gem::Dependency
37
+ name: addressable
38
+ requirement: &70172866548200 !ruby/object:Gem::Requirement
56
39
  none: false
57
- requirements:
40
+ requirements:
58
41
  - - ~>
59
- - !ruby/object:Gem::Version
60
- hash: 1690824680571537449
61
- segments:
62
- - 2
63
- - 2
64
- - 6
42
+ - !ruby/object:Gem::Version
65
43
  version: 2.2.6
66
44
  type: :runtime
67
- version_requirements: *id003
68
- - !ruby/object:Gem::Dependency
69
- name: rest-client
70
45
  prerelease: false
71
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *70172866548200
47
+ - !ruby/object:Gem::Dependency
48
+ name: rest-client
49
+ requirement: &70172866546920 !ruby/object:Gem::Requirement
72
50
  none: false
73
- requirements:
51
+ requirements:
74
52
  - - ~>
75
- - !ruby/object:Gem::Version
76
- hash: 4554157976602492668
77
- segments:
78
- - 1
79
- - 6
80
- - 7
53
+ - !ruby/object:Gem::Version
81
54
  version: 1.6.7
82
55
  type: :runtime
83
- version_requirements: *id004
84
- - !ruby/object:Gem::Dependency
85
- name: bundler
86
56
  prerelease: false
87
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ version_requirements: *70172866546920
58
+ - !ruby/object:Gem::Dependency
59
+ name: bundler
60
+ requirement: &70172866545720 !ruby/object:Gem::Requirement
88
61
  none: false
89
- requirements:
62
+ requirements:
90
63
  - - ~>
91
- - !ruby/object:Gem::Version
92
- hash: 2387456872237229630
93
- segments:
94
- - 1
95
- - 0
96
- - 0
64
+ - !ruby/object:Gem::Version
97
65
  version: 1.0.0
98
66
  type: :development
99
- version_requirements: *id005
67
+ prerelease: false
68
+ version_requirements: *70172866545720
100
69
  description: A wrapper around the trello.com API.
101
70
  email: jeremy@tregunna.ca
102
71
  executables: []
103
-
104
72
  extensions: []
105
-
106
- extra_rdoc_files:
73
+ extra_rdoc_files:
107
74
  - README.md
108
- files:
109
- - lib/trello.rb
75
+ files:
110
76
  - lib/trello/action.rb
111
77
  - lib/trello/authorization.rb
112
78
  - lib/trello/basic_data.rb
@@ -122,6 +88,7 @@ files:
122
88
  - lib/trello/notification.rb
123
89
  - lib/trello/organization.rb
124
90
  - lib/trello/string.rb
91
+ - lib/trello.rb
125
92
  - README.md
126
93
  - spec/action_spec.rb
127
94
  - spec/basic_auth_policy_spec.rb
@@ -129,67 +96,59 @@ files:
129
96
  - spec/card_spec.rb
130
97
  - spec/checklist_spec.rb
131
98
  - spec/client_spec.rb
99
+ - spec/integration/how_to_authorize_spec.rb
100
+ - spec/integration/how_to_use_boards_spec.rb
101
+ - spec/integration/integration_test.rb
132
102
  - spec/item_spec.rb
133
103
  - spec/item_state_spec.rb
134
104
  - spec/list_spec.rb
135
105
  - spec/member_spec.rb
106
+ - spec/notification_spec.rb
136
107
  - spec/oauth_policy_spec.rb
137
108
  - spec/organization_spec.rb
138
109
  - spec/spec_helper.rb
139
110
  - spec/string_spec.rb
140
- - spec/integration/how_to_authorize_spec.rb
141
- - spec/integration/how_to_use_boards_spec.rb
142
- - spec/integration/integration_test.rb
143
111
  homepage: https://github.com/jeremytregunna/ruby-trello
144
112
  licenses: []
145
-
146
113
  post_install_message:
147
- rdoc_options:
114
+ rdoc_options:
148
115
  - --charset=UTF-8
149
- require_paths:
116
+ require_paths:
150
117
  - lib
151
- required_ruby_version: !ruby/object:Gem::Requirement
118
+ required_ruby_version: !ruby/object:Gem::Requirement
152
119
  none: false
153
- requirements:
154
- - - ">="
155
- - !ruby/object:Gem::Version
156
- hash: 2002549777813010636
157
- segments:
158
- - 0
159
- version: "0"
160
- required_rubygems_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ! '>='
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ required_rubygems_version: !ruby/object:Gem::Requirement
161
125
  none: false
162
- requirements:
163
- - - ">="
164
- - !ruby/object:Gem::Version
165
- hash: 2387630629434237851
166
- segments:
167
- - 1
168
- - 3
169
- - 6
126
+ requirements:
127
+ - - ! '>='
128
+ - !ruby/object:Gem::Version
170
129
  version: 1.3.6
171
130
  requirements: []
172
-
173
131
  rubyforge_project: ruby-trello
174
- rubygems_version: 1.8.12
132
+ rubygems_version: 1.8.10
175
133
  signing_key:
176
134
  specification_version: 3
177
135
  summary: A wrapper around the trello.com API.
178
- test_files:
136
+ test_files:
179
137
  - spec/action_spec.rb
180
138
  - spec/basic_auth_policy_spec.rb
181
139
  - spec/board_spec.rb
182
140
  - spec/card_spec.rb
183
141
  - spec/checklist_spec.rb
184
142
  - spec/client_spec.rb
143
+ - spec/integration/how_to_authorize_spec.rb
144
+ - spec/integration/how_to_use_boards_spec.rb
145
+ - spec/integration/integration_test.rb
185
146
  - spec/item_spec.rb
186
147
  - spec/item_state_spec.rb
187
148
  - spec/list_spec.rb
188
149
  - spec/member_spec.rb
150
+ - spec/notification_spec.rb
189
151
  - spec/oauth_policy_spec.rb
190
152
  - spec/organization_spec.rb
191
153
  - spec/spec_helper.rb
192
154
  - spec/string_spec.rb
193
- - spec/integration/how_to_authorize_spec.rb
194
- - spec/integration/how_to_use_boards_spec.rb
195
- - spec/integration/integration_test.rb