has_streak 0.0.2 → 0.0.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3addd5db918bed4cc4714e6d64767c6a3ea3d84f
4
- data.tar.gz: e1949a658bef8b49596d4565ab5405fa84173c42
3
+ metadata.gz: a1045fc8f29d5a7ca126ac0b6d9e8b5f7ba389c6
4
+ data.tar.gz: 938ab0df625a22dd57f1a028ad49a0b6df08130a
5
5
  SHA512:
6
- metadata.gz: 73dedc299b1b06899914fae3db6aa5ed95e8dde0daa9fdc33c1eee8610e9078cdc3bbb325393acf6c9e38018c220c629652f10d2814ee69177b8c9b56852e3e3
7
- data.tar.gz: fed002fc0506f3c96cd21ed76af1a3ed57a2e1564dbb72942a66e6715cd05aa595f8723ed49d78c1b5d2ac384fe183775a00e8dc3ebeeaa131e5c2e8fb64545a
6
+ metadata.gz: a25451bdf1b41daabc65677df48d45818f60b3d6ac8107eacd14cd7305bb83a39d03c983492bf4e541f28981ff23652acb59d02e6cb1d791c98517bc2c448388
7
+ data.tar.gz: b604c87825d2c25a26deb4b4573408fe1e7157c736811fb10a231c6c31bf560771dc078ce511f56403e52d0dc8e55e04d5f7e6500d6d68e7222a6f691870bce4
data/has_streak.gemspec CHANGED
@@ -25,4 +25,5 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency 'database_cleaner'
26
26
  spec.add_development_dependency "bundler", "~> 1.3"
27
27
  spec.add_development_dependency "rake"
28
+ spec.add_development_dependency "pry"
28
29
  end
@@ -8,19 +8,19 @@ module HasStreak
8
8
  def streak(association)
9
9
  return if self.send(association).blank?
10
10
 
11
- days = get_days_in_descending_order(association)
11
+ days = get_days(association)
12
12
  determine_consecutive_days(days)
13
13
  end
14
14
 
15
15
  private
16
16
 
17
- def get_days_in_descending_order(association)
17
+ def get_days(association)
18
18
  self.send(association).order(:created_at).pluck(:created_at).map(&:to_date).uniq
19
19
  end
20
20
 
21
21
  def determine_consecutive_days(days)
22
- days.each_with_index.inject(0) do |streak, (day, index)|
23
- streak += 1 if day + 1 == day.tomorrow
22
+ days.each_with_index.inject(1) do |streak, (day, index)|
23
+ streak += 1 if days[index+1] == day.tomorrow
24
24
  streak
25
25
  end
26
26
  end
@@ -1,3 +1,3 @@
1
1
  module HasStreak
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -12,6 +12,14 @@ describe HasStreak::Streakable do
12
12
  expect(user.streak(:posts)).to eq(3)
13
13
  end
14
14
 
15
+ it "returns streak of one (no streak)" do
16
+ user.posts.create(content: "hello", created_at: 5.days.ago)
17
+ user.posts.create(content: "hello", created_at: 2.days.ago)
18
+ user.posts.create(content: "hello")
19
+
20
+ expect(user.streak(:posts)).to eq(1)
21
+ end
22
+
15
23
  context "spanning two months" do
16
24
  it "returns a streak of 2" do
17
25
  user.posts.create(content: "hello", created_at: Date.new.end_of_month)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: has_streak
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Garrett Martin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-16 00:00:00.000000000 Z
11
+ date: 2014-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - '>='
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  description: Easily track streaks on your ActiveRecord models.
98
112
  email:
99
113
  - me@garrettqmartin.com