tracco 0.0.11 → 0.0.12
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/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:
|