ruby-trello 1.1.3 → 1.2.0

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.
@@ -3,20 +3,20 @@ require 'spec_helper'
3
3
  module Trello
4
4
  describe Association do
5
5
  include Helpers
6
-
6
+
7
7
  let(:organization) { client.find(:organization, '4ee7e59ae582acdec8000291') }
8
- let(:client) { Client.new(:consumer_key => 'xxx') }
8
+ let(:client) { Client.new(consumer_key: 'xxx') }
9
9
 
10
10
  before(:each) do
11
11
  client.stub(:get).with('/organizations/4ee7e59ae582acdec8000291', {}).
12
12
  and_return organization_payload
13
13
  client.stub(:get).with('/organizations/4ee7e59ae582acdec8000291/boards/all').
14
- and_return boards_payload
14
+ and_return boards_payload
15
15
  end
16
-
16
+
17
17
  it 'should set the proper client for all associated boards of the organization' do
18
18
  organization.boards.first.client.consumer_key.should == 'xxx'
19
19
  end
20
-
20
+
21
21
  end
22
22
  end
@@ -28,7 +28,7 @@ describe BasicAuthPolicy do
28
28
  it 'preserves other query parameters' do
29
29
  uri = Addressable::URI.parse('https://xxx/?name=Phil')
30
30
 
31
- request = Request.new :get, uri, {:example_header => 'example_value'}
31
+ request = Request.new :get, uri, {example_header: 'example_value'}
32
32
 
33
33
  authorized_request = BasicAuthPolicy.authorize request
34
34
 
@@ -40,7 +40,7 @@ describe BasicAuthPolicy do
40
40
  it 'preserves headers' do
41
41
  uri = Addressable::URI.parse('https://xxx/')
42
42
 
43
- request = Request.new :get, uri, {:example_header => 'example_value'}
43
+ request = Request.new :get, uri, {example_header: 'example_value'}
44
44
 
45
45
  authorized_request = BasicAuthPolicy.authorize request
46
46
 
data/spec/board_spec.rb CHANGED
@@ -6,6 +6,7 @@ module Trello
6
6
 
7
7
  let(:board) { client.find(:board, 'abcdef123456789123456789') }
8
8
  let(:client) { Client.new }
9
+ let(:member) { Member.new(user_payload) }
9
10
 
10
11
  before(:each) do
11
12
  client.stub(:get).with("/boards/abcdef123456789123456789", {}).
@@ -53,6 +54,10 @@ module Trello
53
54
  it "knows if it is closed or open" do
54
55
  board.closed?.should_not be_nil
55
56
  end
57
+
58
+ it "knows if it is starred or not" do
59
+ board.starred?.should_not be_nil
60
+ end
56
61
 
57
62
  it "gets its url" do
58
63
  board.url.should_not be_nil
@@ -61,7 +66,7 @@ module Trello
61
66
 
62
67
  context "actions" do
63
68
  it "has a list of actions" do
64
- client.stub(:get).with("/boards/abcdef123456789123456789/actions", {:filter => :all}).
69
+ client.stub(:get).with("/boards/abcdef123456789123456789/actions", {filter: :all}).
65
70
  and_return actions_payload
66
71
 
67
72
  board.actions.count.should be > 0
@@ -70,7 +75,7 @@ module Trello
70
75
 
71
76
  context "cards" do
72
77
  it "gets its list of cards" do
73
- client.stub(:get).with("/boards/abcdef123456789123456789/cards", { :filter => :open }).
78
+ client.stub(:get).with("/boards/abcdef123456789123456789/cards", { filter: :open }).
74
79
  and_return cards_payload
75
80
 
76
81
  board.cards.count.should be > 0
@@ -82,7 +87,7 @@ module Trello
82
87
  client.stub(:get).with("/boards/abcdef123456789123456789/labelnames").
83
88
  and_return label_name_payload
84
89
 
85
- board.labels.count.should eq(6)
90
+ board.labels.count.should eq(10)
86
91
  end
87
92
  end
88
93
 
@@ -94,9 +99,28 @@ module Trello
94
99
  end
95
100
  end
96
101
 
102
+ context "add_member" do
103
+ it "adds a member to the board as a normal user (default)" do
104
+ client.stub(:put).with("/boards/abcdef123456789123456789/members/id", type: :normal)
105
+ board.add_member(member)
106
+ end
107
+
108
+ it "adds a member to the board as an admin" do
109
+ client.stub(:put).with("/boards/abcdef123456789123456789/members/id", type: :admin)
110
+ board.add_member(member, :admin)
111
+ end
112
+ end
113
+
114
+ context "remove_member" do
115
+ it "removes a member from the board" do
116
+ client.stub(:delete).with("/boards/abcdef123456789123456789/members/id")
117
+ board.remove_member(member)
118
+ end
119
+ end
120
+
97
121
  context "lists" do
98
122
  it "has a list of lists" do
99
- client.stub(:get).with("/boards/abcdef123456789123456789/lists", hash_including(:filter => :open)).
123
+ client.stub(:get).with("/boards/abcdef123456789123456789/lists", hash_including(filter: :open)).
100
124
  and_return lists_payload
101
125
 
102
126
  board.has_lists?.should be true
@@ -105,7 +129,7 @@ module Trello
105
129
 
106
130
  context "members" do
107
131
  it "has a list of members" do
108
- client.stub(:get).with("/boards/abcdef123456789123456789/members", hash_including(:filter => :all)).
132
+ client.stub(:get).with("/boards/abcdef123456789123456789/members", hash_including(filter: :all)).
109
133
  and_return JSON.generate([user_details])
110
134
 
111
135
  board.members.count.should be > 0
@@ -124,6 +148,10 @@ module Trello
124
148
  it "is not closed" do
125
149
  expect(board.closed?).not_to be(true)
126
150
  end
151
+
152
+ it "is not starred" do
153
+ expect(board.starred?).not_to be(true)
154
+ end
127
155
 
128
156
  describe "#update_fields" do
129
157
  it "does not set any fields when the fields argument is empty" do
@@ -132,6 +160,7 @@ module Trello
132
160
  'name' => "name",
133
161
  'desc' => "desc",
134
162
  'closed' => false,
163
+ 'starred' => false,
135
164
  'url' => "url",
136
165
  'idOrganization' => "org_id"
137
166
  }
@@ -169,7 +198,7 @@ module Trello
169
198
  end
170
199
 
171
200
  it "puts all fields except id" do
172
- expected_fields = %w{ name description closed idOrganization}.map { |s| s.to_sym }
201
+ expected_fields = %w{ name description closed starred idOrganization}.map { |s| s.to_sym }
173
202
 
174
203
  client.should_receive(:put) do |anything, body|
175
204
  body.keys.should =~ expected_fields
@@ -218,12 +247,14 @@ module Trello
218
247
  board.name = "new name"
219
248
  board.description = "new description"
220
249
  board.closed = true
250
+ board.starred = true
221
251
 
222
252
  client.should_receive(:put).with("/boards/#{board.id}/", {
223
- :name => "new name",
224
- :description => "new description",
225
- :closed => true,
226
- :idOrganization => nil
253
+ name: "new name",
254
+ description: "new description",
255
+ closed: true,
256
+ starred: true,
257
+ idOrganization: nil
227
258
  }).and_return any_board_json
228
259
  board.update!
229
260
  end
@@ -239,8 +270,8 @@ module Trello
239
270
  end
240
271
 
241
272
  it "creates a new board with whatever attributes are supplied " do
242
- expected_attributes = { :name => "Any new board name", :description => "Any new board desription" }
243
- sent_attributes = { :name => expected_attributes[:name], :desc => expected_attributes[:description] }
273
+ expected_attributes = { name: "Any new board name", description: "Any new board desription" }
274
+ sent_attributes = { name: expected_attributes[:name], desc: expected_attributes[:description] }
244
275
 
245
276
  client.should_receive(:post).with("/boards", sent_attributes).and_return any_board_json
246
277
 
@@ -250,13 +281,13 @@ module Trello
250
281
  it "posts to the boards collection" do
251
282
  client.should_receive(:post).with("/boards", anything).and_return any_board_json
252
283
 
253
- Board.create :xxx => ""
284
+ Board.create xxx: ""
254
285
  end
255
286
 
256
287
  it "returns a board" do
257
288
  client.stub(:post).with("/boards", anything).and_return any_board_json
258
289
 
259
- the_new_board = Board.create :xxx => ""
290
+ the_new_board = Board.create xxx: ""
260
291
  the_new_board.should be_a Board
261
292
  end
262
293
 
data/spec/card_spec.rb CHANGED
@@ -43,20 +43,20 @@ module Trello
43
43
  card.should_not be_valid
44
44
  end
45
45
 
46
- it 'creates a new record and saves it on Trello', :refactor => true do
46
+ it 'creates a new record and saves it on Trello', refactor: true do
47
47
  payload = {
48
- :name => 'Test Card',
49
- :desc => nil,
48
+ name: 'Test Card',
49
+ desc: nil,
50
50
  }
51
51
 
52
- result = JSON.generate(cards_details.first.merge(payload.merge(:idList => lists_details.first['id'])))
52
+ result = JSON.generate(cards_details.first.merge(payload.merge(idList: lists_details.first['id'])))
53
53
 
54
54
  expected_payload = {name: "Test Card", desc: nil, idList: "abcdef123456789123456789",
55
55
  idMembers: nil, labels: nil, pos: nil }
56
56
 
57
57
  client.should_receive(:post).with("/cards", expected_payload).and_return result
58
58
 
59
- card = Card.create(cards_details.first.merge(payload.merge(:list_id => lists_details.first['id'])))
59
+ card = Card.create(cards_details.first.merge(payload.merge(list_id: lists_details.first['id'])))
60
60
 
61
61
  card.class.should be Card
62
62
  end
@@ -67,7 +67,7 @@ module Trello
67
67
  expected_new_name = "xxx"
68
68
 
69
69
  payload = {
70
- :name => expected_new_name,
70
+ name: expected_new_name,
71
71
  }
72
72
 
73
73
  client.should_receive(:put).once.with("/cards/abcdef123456789123456789", payload)
@@ -128,13 +128,13 @@ module Trello
128
128
 
129
129
  context "actions" do
130
130
  it "asks for all actions by default" do
131
- client.stub(:get).with("/cards/abcdef123456789123456789/actions", { :filter => :all }).and_return actions_payload
131
+ client.stub(:get).with("/cards/abcdef123456789123456789/actions", { filter: :all }).and_return actions_payload
132
132
  card.actions.count.should be > 0
133
133
  end
134
134
 
135
135
  it "allows overriding the filter" do
136
- client.stub(:get).with("/cards/abcdef123456789123456789/actions", { :filter => :updateCard }).and_return actions_payload
137
- card.actions(:filter => :updateCard).count.should be > 0
136
+ client.stub(:get).with("/cards/abcdef123456789123456789/actions", { filter: :updateCard }).and_return actions_payload
137
+ card.actions(filter: :updateCard).count.should be > 0
138
138
  end
139
139
  end
140
140
 
@@ -154,7 +154,7 @@ module Trello
154
154
 
155
155
  context "checklists" do
156
156
  before(:each) do
157
- client.stub(:get).with("/cards/abcdef123456789123456789/checklists", { :filter => :all }).and_return checklists_payload
157
+ client.stub(:get).with("/cards/abcdef123456789123456789/checklists", { filter: :all }).and_return checklists_payload
158
158
  end
159
159
 
160
160
  it "has a list of checklists" do
@@ -174,15 +174,15 @@ module Trello
174
174
  end
175
175
 
176
176
  it 'can be moved to another list' do
177
- other_list = double(:id => '987654321987654321fedcba')
178
- payload = {:value => other_list.id}
177
+ other_list = double(id: '987654321987654321fedcba')
178
+ payload = {value: other_list.id}
179
179
  client.should_receive(:put).with("/cards/abcdef123456789123456789/idList", payload)
180
180
  card.move_to_list(other_list)
181
181
  end
182
182
 
183
183
  it 'should not be moved if new list is identical to old list' do
184
- other_list = double(:id => 'abcdef123456789123456789')
185
- payload = { :value => other_list.id }
184
+ other_list = double(id: 'abcdef123456789123456789')
185
+ payload = { value: other_list.id }
186
186
  client.should_not_receive(:put)
187
187
  card.move_to_list(other_list)
188
188
  end
@@ -194,22 +194,22 @@ module Trello
194
194
  end
195
195
 
196
196
  it 'can be moved to another board' do
197
- other_board = double(:id => '987654321987654321fedcba')
198
- payload = {:value => other_board.id}
197
+ other_board = double(id: '987654321987654321fedcba')
198
+ payload = {value: other_board.id}
199
199
  client.should_receive(:put).with("/cards/abcdef123456789123456789/idBoard", payload)
200
200
  card.move_to_board(other_board)
201
201
  end
202
202
 
203
203
  it 'can be moved to a list on another board' do
204
- other_board = double(:id => '987654321987654321fedcba')
205
- other_list = double(:id => '987654321987654321aalist')
206
- payload = {:value => other_board.id, :idList => other_list.id}
204
+ other_board = double(id: '987654321987654321fedcba')
205
+ other_list = double(id: '987654321987654321aalist')
206
+ payload = {value: other_board.id, idList: other_list.id}
207
207
  client.should_receive(:put).with("/cards/abcdef123456789123456789/idBoard", payload)
208
208
  card.move_to_board(other_board, other_list)
209
209
  end
210
210
 
211
- it 'should not be moved if new board is identical with old board', :focus => true do
212
- other_board = double(:id => 'abcdef123456789123456789')
211
+ it 'should not be moved if new board is identical with old board', focus: true do
212
+ other_board = double(id: 'abcdef123456789123456789')
213
213
  client.should_not_receive(:put)
214
214
  card.move_to_board(other_board)
215
215
  end
@@ -225,16 +225,16 @@ module Trello
225
225
  end
226
226
 
227
227
  it "allows a member to be added to a card" do
228
- new_member = double(:id => '4ee7df3ce582acdec80000b2')
228
+ new_member = double(id: '4ee7df3ce582acdec80000b2')
229
229
  payload = {
230
- :value => new_member.id
230
+ value: new_member.id
231
231
  }
232
232
  client.should_receive(:post).with("/cards/abcdef123456789123456789/members", payload)
233
233
  card.add_member(new_member)
234
234
  end
235
235
 
236
236
  it "allows a member to be removed from a card" do
237
- existing_member = double(:id => '4ee7df3ce582acdec80000b2')
237
+ existing_member = double(id: '4ee7df3ce582acdec80000b2')
238
238
  client.should_receive(:delete).with("/cards/abcdef123456789123456789/members/#{existing_member.id}")
239
239
  card.remove_member(existing_member)
240
240
  end
@@ -243,7 +243,7 @@ module Trello
243
243
  context "comments" do
244
244
  it "posts a comment" do
245
245
  client.should_receive(:post).
246
- with("/cards/abcdef123456789123456789/actions/comments", { :text => 'testing' }).
246
+ with("/cards/abcdef123456789123456789/actions/comments", { text: 'testing' }).
247
247
  and_return JSON.generate(boards_details.first)
248
248
 
249
249
  card.add_comment "testing"
@@ -265,7 +265,7 @@ module Trello
265
265
  end
266
266
 
267
267
  it "can add a label" do
268
- client.stub(:post).with("/cards/abcdef123456789123456789/labels", { :value => 'green' }).
268
+ client.stub(:post).with("/cards/abcdef123456789123456789/labels", { value: 'green' }).
269
269
  and_return "not important"
270
270
  card.add_label('green')
271
271
  expect(card.errors).to be_empty
@@ -288,7 +288,7 @@ module Trello
288
288
  end
289
289
 
290
290
  it "throws an error when trying to add a label with an unknown colour" do
291
- client.stub(:post).with("/cards/abcdef123456789123456789/labels", { :value => 'green' }).
291
+ client.stub(:post).with("/cards/abcdef123456789123456789/labels", { value: 'green' }).
292
292
  and_return "not important"
293
293
  card.add_label('mauve')
294
294
  expect(card.errors.full_messages.to_sentence).to eq("Label colour 'mauve' does not exist")
@@ -307,7 +307,7 @@ module Trello
307
307
  f = File.new('spec/list_spec.rb', 'r')
308
308
  client.stub(:get).with("/cards/abcdef123456789123456789/attachments").and_return attachments_payload
309
309
  client.stub(:post).with("/cards/abcdef123456789123456789/attachments",
310
- { :file => f, :name => '' }).
310
+ { file: f, name: '' }).
311
311
  and_return "not important"
312
312
 
313
313
  card.add_attachment(f)
@@ -358,7 +358,7 @@ module Trello
358
358
  describe "#close!" do
359
359
  it "updates the close attribute to true and saves the list" do
360
360
  payload = {
361
- :closed => true,
361
+ closed: true,
362
362
  }
363
363
 
364
364
  client.should_receive(:put).once.with("/cards/abcdef123456789123456789", payload)
@@ -28,19 +28,19 @@ module Trello
28
28
  context "creating" do
29
29
  let(:client) { Trello.client }
30
30
 
31
- it 'creates a new record and saves it on Trello', :refactor => true do
31
+ it 'creates a new record and saves it on Trello', refactor: true do
32
32
  payload = {
33
- :name => 'Test Checklist',
34
- :desc => '',
33
+ name: 'Test Checklist',
34
+ desc: '',
35
35
  }
36
36
 
37
- result = JSON.generate(checklists_details.first.merge(payload.merge(:idBoard => boards_details.first['id'])))
37
+ result = JSON.generate(checklists_details.first.merge(payload.merge(idBoard: boards_details.first['id'])))
38
38
 
39
- expected_payload = {:name => "Test Checklist", :idBoard => "abcdef123456789123456789"}
39
+ expected_payload = {name: "Test Checklist", idBoard: "abcdef123456789123456789"}
40
40
 
41
41
  client.should_receive(:post).with("/checklists", expected_payload).and_return result
42
42
 
43
- checklist = Checklist.create(checklists_details.first.merge(payload.merge(:board_id => boards_details.first['id'])))
43
+ checklist = Checklist.create(checklists_details.first.merge(payload.merge(board_id: boards_details.first['id'])))
44
44
 
45
45
  checklist.class.should be Checklist
46
46
  end
@@ -66,8 +66,8 @@ module Trello
66
66
  expected_new_name = "xxx"
67
67
  expected_resource = "/checklists/abcdef123456789123456789"
68
68
  payload = {
69
- :name => expected_new_name,
70
- :pos => checklist.position
69
+ name: expected_new_name,
70
+ pos: checklist.position
71
71
  }
72
72
 
73
73
  result = JSON.generate(checklists_details.first)
@@ -81,8 +81,8 @@ module Trello
81
81
  expected_new_position = 33
82
82
  expected_resource = "/checklists/abcdef123456789123456789"
83
83
  payload = {
84
- :name => checklist.name,
85
- :pos => expected_new_position
84
+ name: checklist.name,
85
+ pos: expected_new_position
86
86
  }
87
87
 
88
88
  result = JSON.generate(checklists_details.first)
@@ -97,14 +97,14 @@ module Trello
97
97
  expected_checked = true
98
98
  expected_pos = 9999
99
99
  payload = {
100
- :name => expected_item_name,
101
- :checked => expected_checked,
102
- :pos => expected_pos
100
+ name: expected_item_name,
101
+ checked: expected_checked,
102
+ pos: expected_pos
103
103
  }
104
104
  result_hash = {
105
- :name => expected_item_name,
106
- :state => expected_checked ? 'complete' : 'incomplete',
107
- :pos => expected_pos
105
+ name: expected_item_name,
106
+ state: expected_checked ? 'complete' : 'incomplete',
107
+ pos: expected_pos
108
108
  }
109
109
  result = JSON.generate(result_hash)
110
110
  client.should_receive(:post).once.with("/checklists/abcdef123456789123456789/checkItems", payload).and_return result
data/spec/client_spec.rb CHANGED
@@ -6,8 +6,8 @@ include Trello::Authorization
6
6
  describe Client, "and how it handles authorization" do
7
7
  let (:fake_ok_response) do
8
8
  double "A fake OK response",
9
- :code => 200,
10
- :body => "A fake response body"
9
+ code: 200,
10
+ body: "A fake response body"
11
11
  end
12
12
  let(:client) { Client.new }
13
13
  let(:auth_policy) { double }
@@ -33,7 +33,7 @@ describe Client, "and how it handles authorization" do
33
33
 
34
34
  TInternet.should_receive(:execute).once.with expected_request
35
35
 
36
- client.get "/xxx", :a => "1", :b => "2"
36
+ client.get "/xxx", a: "1", b: "2"
37
37
  end
38
38
 
39
39
  it "encodes parameters" do
@@ -42,14 +42,14 @@ describe Client, "and how it handles authorization" do
42
42
 
43
43
  TInternet.should_receive(:execute).once.with expected_request
44
44
 
45
- client.get "/xxx", :name => "Jazz Kang"
45
+ client.get "/xxx", name: "Jazz Kang"
46
46
  end
47
47
 
48
48
  it "raises an error when response has non-200 status" do
49
49
  expected_error_message = "An error response"
50
50
  response_with_non_200_status = double "A fake OK response",
51
- :code => 404,
52
- :body => expected_error_message
51
+ code: 404,
52
+ body: expected_error_message
53
53
 
54
54
  TInternet.stub(:execute).and_return response_with_non_200_status
55
55
 
@@ -77,11 +77,11 @@ describe Client, "and how it handles authorization" do
77
77
  it "supports post" do
78
78
  TInternet.should_receive(:execute).once.and_return fake_ok_response
79
79
 
80
- client.post "/xxx", { :phil => "T' north" }
80
+ client.post "/xxx", { phil: "T' north" }
81
81
  end
82
82
 
83
83
  it "supplies the body for a post" do
84
- expected_body = { :name => "Phil", :nickname => "The Crack Fox" }
84
+ expected_body = { name: "Phil", nickname: "The Crack Fox" }
85
85
 
86
86
  TInternet.should_receive(:execute).once do |request|
87
87
  request.body.should == expected_body
@@ -105,11 +105,11 @@ describe Client, "and how it handles authorization" do
105
105
  it "supports put" do
106
106
  TInternet.should_receive(:execute).once.and_return fake_ok_response
107
107
 
108
- client.put "/xxx", { :phil => "T' north" }
108
+ client.put "/xxx", { phil: "T' north" }
109
109
  end
110
110
 
111
111
  it "supplies the body for a put" do
112
- expected_body = { :name => "Phil", :nickname => "The Crack Fox" }
112
+ expected_body = { name: "Phil", nickname: "The Crack Fox" }
113
113
 
114
114
  TInternet.should_receive(:execute).once do |request|
115
115
  request.body.should == expected_body
@@ -133,10 +133,10 @@ describe Client, "and how it handles authorization" do
133
133
  context "initialize" do
134
134
  let(:client) do
135
135
  Client.new(
136
- :consumer_key => 'consumer_key',
137
- :consumer_secret => 'consumer_secret',
138
- :oauth_token => 'oauth_token',
139
- :oauth_token_secret => 'oauth_token_secret'
136
+ consumer_key: 'consumer_key',
137
+ consumer_secret: 'consumer_secret',
138
+ oauth_token: 'oauth_token',
139
+ oauth_token_secret: 'oauth_token_secret'
140
140
  )
141
141
  end
142
142