tracco 0.0.11 → 0.0.12
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +4 -0
- data/Gemfile.lock +4 -1
- data/lib/tracco/tracked_card.rb +11 -6
- data/lib/tracco/version.rb +1 -1
- data/spec/factories/tracked_card_factory.rb +13 -0
- data/spec/spec_helper.rb +4 -0
- data/spec/tracked_card_spec.rb +31 -21
- data/tracco.gemspec +1 -0
- metadata +20 -3
data/CHANGELOG
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
0.0.12
|
2
|
+
- Adding a TrackedCard#trello_notifications to fetch all the notifications belonging to the card
|
3
|
+
- Introducing FactoryGirl as a factory gem to simplify specs
|
4
|
+
|
1
5
|
0.0.11
|
2
6
|
- Adding a TrackedCard.all_tracked_cards method to fetch all cards with a valid tracking. Moreover, sorting_options can be passed to sort using a method e.g. TrackedCard.all_tracked_cards(:method => :name, :order => :desc)
|
3
7
|
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
tracco (0.0.
|
4
|
+
tracco (0.0.12)
|
5
5
|
bson_ext
|
6
6
|
chronic
|
7
7
|
google_drive
|
@@ -35,6 +35,8 @@ GEM
|
|
35
35
|
debugger-ruby_core_source (>= 1.1.1)
|
36
36
|
debugger-ruby_core_source (1.1.8)
|
37
37
|
diff-lcs (1.1.3)
|
38
|
+
factory_girl (4.2.0)
|
39
|
+
activesupport (>= 3.0.0)
|
38
40
|
faraday (0.8.5)
|
39
41
|
multipart-post (~> 1.1)
|
40
42
|
google_drive (0.3.3)
|
@@ -102,6 +104,7 @@ PLATFORMS
|
|
102
104
|
DEPENDENCIES
|
103
105
|
database_cleaner
|
104
106
|
debugger
|
107
|
+
factory_girl
|
105
108
|
mongoid-rspec
|
106
109
|
rake
|
107
110
|
rspec
|
data/lib/tracco/tracked_card.rb
CHANGED
@@ -41,6 +41,12 @@ class TrackedCard
|
|
41
41
|
sorting_options[:order] == :desc ? cards.reverse : cards
|
42
42
|
end
|
43
43
|
|
44
|
+
def self.build_from(trello_card)
|
45
|
+
trello_card_id = trello_card.id
|
46
|
+
trello_card.attributes.delete(:id)
|
47
|
+
new(trello_card.attributes.merge(trello_id: trello_card_id))
|
48
|
+
end
|
49
|
+
|
44
50
|
def status
|
45
51
|
if done?
|
46
52
|
:done
|
@@ -51,12 +57,6 @@ class TrackedCard
|
|
51
57
|
end
|
52
58
|
end
|
53
59
|
|
54
|
-
def self.build_from(trello_card)
|
55
|
-
trello_card_id = trello_card.id
|
56
|
-
trello_card.attributes.delete(:id)
|
57
|
-
new(trello_card.attributes.merge(trello_id: trello_card_id))
|
58
|
-
end
|
59
|
-
|
60
60
|
def add(tracking)
|
61
61
|
tracking.add_to(self)
|
62
62
|
end
|
@@ -116,6 +116,11 @@ class TrackedCard
|
|
116
116
|
estimate_errors
|
117
117
|
end
|
118
118
|
|
119
|
+
def trello_notifications
|
120
|
+
notification_ids = efforts.map(&:tracking_notification_id) | estimates.map(&:tracking_notification_id)
|
121
|
+
notification_ids.map { |each_id| Trello::Notification.find(each_id) }.sort_by(&:date)
|
122
|
+
end
|
123
|
+
|
119
124
|
def to_s
|
120
125
|
"[#{name}]. Total effort: #{total_effort}h. Estimates #{estimates.map(&:to_s)}. Efforts: #{efforts.map(&:to_s)}"
|
121
126
|
end
|
data/lib/tracco/version.rb
CHANGED
@@ -0,0 +1,13 @@
|
|
1
|
+
FactoryGirl.define do
|
2
|
+
factory :tracked_card do
|
3
|
+
sequence(:name) { |n| "any_card_#{n}" }
|
4
|
+
description "any description"
|
5
|
+
sequence(:short_id, 1000) { |n| n }
|
6
|
+
sequence(:trello_id, 100000) { |n| "xyz#{n}" }
|
7
|
+
done false
|
8
|
+
closed false
|
9
|
+
|
10
|
+
# embeds_many :estimates
|
11
|
+
# embeds_many :efforts
|
12
|
+
end
|
13
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -18,12 +18,16 @@ Bundler.require(:spec)
|
|
18
18
|
|
19
19
|
require 'tracco'
|
20
20
|
|
21
|
+
require 'factory_girl'
|
22
|
+
FactoryGirl.find_definitions
|
23
|
+
|
21
24
|
# Requires supporting ruby files with custom matchers and macros, etc,
|
22
25
|
# in spec/support/ and its subdirectories.
|
23
26
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
24
27
|
|
25
28
|
RSpec.configure do |configuration|
|
26
29
|
configuration.include Mongoid::Matchers
|
30
|
+
configuration.include FactoryGirl::Syntax::Methods # Repeating "FactoryGirl" is too verbose for me...
|
27
31
|
end
|
28
32
|
|
29
33
|
# force test env for the mongodb configuration
|
data/spec/tracked_card_spec.rb
CHANGED
@@ -6,7 +6,7 @@ describe TrackedCard do
|
|
6
6
|
Date.stub(:today).and_return(Date.parse("2012-11-05"))
|
7
7
|
end
|
8
8
|
|
9
|
-
subject(:card) {
|
9
|
+
subject(:card) { build(:tracked_card) }
|
10
10
|
|
11
11
|
%w{piero tommaso michele}.each do |username|
|
12
12
|
let(username.to_sym) { Member.new(username: username) }
|
@@ -32,8 +32,8 @@ describe TrackedCard do
|
|
32
32
|
|
33
33
|
describe ".find_by_trello_id" do
|
34
34
|
it "finds a card given its Trello id" do
|
35
|
-
card =
|
36
|
-
another_card =
|
35
|
+
card = create(:tracked_card, trello_id: "1")
|
36
|
+
another_card = create(:tracked_card, trello_id: "2")
|
37
37
|
|
38
38
|
TrackedCard.find_by_trello_id("1").should == card
|
39
39
|
TrackedCard.find_by_trello_id("3").should == nil
|
@@ -42,57 +42,53 @@ describe TrackedCard do
|
|
42
42
|
|
43
43
|
describe ".all_tracked_cards" do
|
44
44
|
it "finds all tracked cards with a valid tracking" do
|
45
|
-
|
46
|
-
card
|
47
|
-
|
48
|
-
|
49
|
-
card_without_tracking = TrackedCard.create(name: "another card", short_id: 3456, trello_id: "2")
|
45
|
+
# TODO introduce a factory on estimate and effort
|
46
|
+
card = create(:tracked_card, :estimates => [Estimate.new(amount: 5, date: Date.today)],
|
47
|
+
:efforts => [Effort.new(amount: 3, date: Date.today, members: [piero])])
|
48
|
+
card_without_tracking = create(:tracked_card)
|
50
49
|
|
51
50
|
|
52
51
|
TrackedCard.all_tracked_cards.should == [card]
|
53
52
|
end
|
54
53
|
|
55
54
|
it "optionally sorts the cards using a given sorting method" do
|
56
|
-
|
57
|
-
card = TrackedCard.create(name: "AAA", short_id: 1234, trello_id: "1")
|
55
|
+
card = create(:tracked_card, name: "AAA")
|
58
56
|
card.estimates << Estimate.new(amount: 5, date: Date.today)
|
59
57
|
card.efforts << Effort.new(amount: 3, date: Date.today, members: [piero])
|
60
58
|
|
61
|
-
another_card =
|
59
|
+
another_card = create(:tracked_card, name: "ZZZ")
|
62
60
|
another_card.estimates << Estimate.new(amount: 5, date: Date.today)
|
63
61
|
another_card.efforts << Effort.new(amount: 3, date: Date.today, members: [piero])
|
64
62
|
|
65
|
-
card_without_tracking =
|
63
|
+
card_without_tracking = create(:tracked_card)
|
66
64
|
|
67
65
|
TrackedCard.all_tracked_cards(:method => :name).should == [card, another_card]
|
68
66
|
end
|
69
67
|
|
70
68
|
it "applies an optional sorting order" do
|
71
|
-
|
72
|
-
card = TrackedCard.create(name: "AAA", short_id: 1234, trello_id: "1")
|
69
|
+
card = create(:tracked_card, name: "AAA")
|
73
70
|
card.estimates << Estimate.new(amount: 5, date: Date.today)
|
74
71
|
card.efforts << Effort.new(amount: 3, date: Date.today, members: [piero])
|
75
72
|
|
76
|
-
another_card =
|
73
|
+
another_card = create(:tracked_card, name: "ZZZ")
|
77
74
|
another_card.estimates << Estimate.new(amount: 5, date: Date.today)
|
78
75
|
another_card.efforts << Effort.new(amount: 3, date: Date.today, members: [piero])
|
79
76
|
|
80
|
-
card_without_tracking =
|
77
|
+
card_without_tracking = create(:tracked_card)
|
81
78
|
|
82
79
|
TrackedCard.all_tracked_cards(:method => :name, :order => :desc).should == [another_card, card]
|
83
80
|
end
|
84
81
|
|
85
82
|
it "uses the ascending order as default sorting order option" do
|
86
|
-
|
87
|
-
card = TrackedCard.create(name: "AAA", short_id: 44, trello_id: "100")
|
83
|
+
card = create(:tracked_card, name: "AAA", short_id: 44)
|
88
84
|
card.estimates << Estimate.new(amount: 5, date: Date.today)
|
89
85
|
card.efforts << Effort.new(amount: 3, date: Date.today, members: [piero])
|
90
86
|
|
91
|
-
another_card =
|
87
|
+
another_card = create(:tracked_card, name: "ZZZ", short_id: 12)
|
92
88
|
another_card.estimates << Estimate.new(amount: 5, date: Date.today)
|
93
89
|
another_card.efforts << Effort.new(amount: 3, date: Date.today, members: [piero])
|
94
90
|
|
95
|
-
card_without_tracking =
|
91
|
+
card_without_tracking = create(:tracked_card, short_id: 3456)
|
96
92
|
|
97
93
|
TrackedCard.all_tracked_cards(:method => :short_id).should == [another_card, card]
|
98
94
|
end
|
@@ -116,7 +112,7 @@ describe TrackedCard do
|
|
116
112
|
end
|
117
113
|
|
118
114
|
it "updates an existing tracked card on a given trello card" do
|
119
|
-
existing_card =
|
115
|
+
existing_card = create(:tracked_card, name: "an old name", trello_id: trello_card.id)
|
120
116
|
|
121
117
|
updated_card = TrackedCard.update_or_create_with(trello_card)
|
122
118
|
|
@@ -185,6 +181,20 @@ describe TrackedCard do
|
|
185
181
|
card.efforts.should have(2).efforts
|
186
182
|
end
|
187
183
|
|
184
|
+
describe "#trello_notifications" do
|
185
|
+
let(:first_notification) { stub("notification1", date: Date.yesterday) }
|
186
|
+
let(:second_notification) { stub("notification1", date: Date.today) }
|
187
|
+
|
188
|
+
it "fetch all the card notifications from trello" do
|
189
|
+
card.estimates << Estimate.new(tracking_notification_id: "xyz987", amount: 5, date: Date.yesterday)
|
190
|
+
card.efforts << Effort.new(tracking_notification_id: "abc123", amount: 3, date: Date.today, members: [piero])
|
191
|
+
|
192
|
+
Trello::Notification.should_receive(:find).with("xyz987").and_return(second_notification)
|
193
|
+
Trello::Notification.should_receive(:find).with("abc123").and_return(first_notification)
|
194
|
+
card.trello_notifications.should == [first_notification, second_notification]
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
188
198
|
describe "equality" do
|
189
199
|
it "is equal to another TrelloCard when the trello id is the same" do
|
190
200
|
card = TrackedCard.new(name: "a name", trello_id: "123456789")
|
data/tracco.gemspec
CHANGED
@@ -37,5 +37,6 @@ Gem::Specification.new do |gem|
|
|
37
37
|
gem.add_development_dependency 'rspec-mocks'
|
38
38
|
gem.add_development_dependency 'mongoid-rspec'
|
39
39
|
gem.add_development_dependency 'database_cleaner'
|
40
|
+
gem.add_development_dependency 'factory_girl'
|
40
41
|
gem.add_development_dependency 'debugger'
|
41
42
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tracco
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.12
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-02-
|
12
|
+
date: 2013-02-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ruby-trello
|
@@ -203,6 +203,22 @@ dependencies:
|
|
203
203
|
- - ! '>='
|
204
204
|
- !ruby/object:Gem::Version
|
205
205
|
version: '0'
|
206
|
+
- !ruby/object:Gem::Dependency
|
207
|
+
name: factory_girl
|
208
|
+
requirement: !ruby/object:Gem::Requirement
|
209
|
+
none: false
|
210
|
+
requirements:
|
211
|
+
- - ! '>='
|
212
|
+
- !ruby/object:Gem::Version
|
213
|
+
version: '0'
|
214
|
+
type: :development
|
215
|
+
prerelease: false
|
216
|
+
version_requirements: !ruby/object:Gem::Requirement
|
217
|
+
none: false
|
218
|
+
requirements:
|
219
|
+
- - ! '>='
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: '0'
|
206
222
|
- !ruby/object:Gem::Dependency
|
207
223
|
name: debugger
|
208
224
|
requirement: !ruby/object:Gem::Requirement
|
@@ -268,6 +284,7 @@ files:
|
|
268
284
|
- script/mate.sh
|
269
285
|
- spec/effort_spec.rb
|
270
286
|
- spec/estimate_spec.rb
|
287
|
+
- spec/factories/tracked_card_factory.rb
|
271
288
|
- spec/integration/trello_authorization_spec.rb
|
272
289
|
- spec/integration/trello_tracker_spec.rb
|
273
290
|
- spec/member_spec.rb
|
@@ -298,7 +315,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
298
315
|
version: '0'
|
299
316
|
segments:
|
300
317
|
- 0
|
301
|
-
hash:
|
318
|
+
hash: 2200448488814002736
|
302
319
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
303
320
|
none: false
|
304
321
|
requirements:
|