acts_as_footprintable 0.4.0 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/gem-push.yml +30 -0
  3. data/.github/workflows/test.yml +42 -0
  4. data/.gitignore +18 -20
  5. data/.rubocop.yml +32 -0
  6. data/Gemfile +5 -15
  7. data/README.md +6 -8
  8. data/Rakefile +11 -7
  9. data/acts_as_footprintable.gemspec +23 -19
  10. data/config.ru +9 -0
  11. data/gemfiles/rails_5.0.gemfile +8 -0
  12. data/gemfiles/rails_5.1.gemfile +8 -0
  13. data/gemfiles/rails_5.2.gemfile +8 -0
  14. data/gemfiles/rails_6.0.gemfile +8 -0
  15. data/gemfiles/rails_6.1.gemfile +8 -0
  16. data/gemfiles/rails_7.0.gemfile +8 -0
  17. data/lib/acts_as_footprintable/extenders/footprintable.rb +5 -4
  18. data/lib/acts_as_footprintable/extenders/footprinter.rb +4 -3
  19. data/lib/acts_as_footprintable/footprint.rb +9 -14
  20. data/lib/acts_as_footprintable/footprintable.rb +6 -10
  21. data/lib/acts_as_footprintable/footprinter.rb +32 -19
  22. data/lib/acts_as_footprintable/version.rb +3 -2
  23. data/lib/acts_as_footprintable.rb +2 -1
  24. data/lib/generators/acts_as_footprintable/migration/migration_generator.rb +20 -9
  25. data/lib/generators/acts_as_footprintable/migration/templates/active_record/migration.rb +6 -5
  26. data/test/footprintable_test.rb +97 -0
  27. data/test/footprinter_test.rb +64 -0
  28. data/test/internal/app/models/footprintable.rb +6 -0
  29. data/test/internal/app/models/not_footprintable.rb +5 -0
  30. data/{spec → test}/internal/app/models/not_user.rb +3 -2
  31. data/{spec → test}/internal/app/models/second_footprintable.rb +4 -3
  32. data/{spec → test}/internal/app/models/user.rb +3 -2
  33. data/test/test_helper.rb +57 -0
  34. metadata +82 -60
  35. data/.rspec +0 -1
  36. data/.travis.yml +0 -16
  37. data/spec/footprintable_spec.rb +0 -98
  38. data/spec/footprinter_spec.rb +0 -63
  39. data/spec/internal/app/models/footprintable.rb +0 -5
  40. data/spec/internal/app/models/not_footprintable.rb +0 -4
  41. data/spec/internal/config/database.yml +0 -5
  42. data/spec/internal/db/schema.rb +0 -31
  43. data/spec/internal/log/.gitignore +0 -1
  44. data/spec/spec_helper.rb +0 -24
@@ -0,0 +1,97 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+ require 'acts_as_footprintable/footprintable'
5
+
6
+ describe ActsAsFootprintable::Footprintable do
7
+ it 'should not be a footprintable' do
8
+ expect(NotFootprintable).wont_be :footprintable?
9
+ end
10
+
11
+ it 'should be a footprintable' do
12
+ expect(Footprintable).must_be :footprintable?
13
+ end
14
+
15
+ describe 'leave footprints by footprinter' do
16
+ let(:user) { User.create!(name: 'i can footprint!') }
17
+ let(:user2) { User.create!(name: 'a new person') }
18
+ let(:footprintable) { Footprintable.create!(name: 'a footprinting model') }
19
+ let(:footprintable2) { Footprintable.create!(name: 'a 2nd footprinting model') }
20
+
21
+ it 'should be leave footprints' do
22
+ expect(footprintable.leave_footprints(user)).must_equal true
23
+ end
24
+
25
+ it '足跡の数が増えていること' do
26
+ expect(footprintable.footprint_count).must_equal 0
27
+ footprintable.leave_footprints user
28
+ expect(footprintable.footprint_count).must_equal 1
29
+ end
30
+
31
+ it '10回アクセスしたら10になること' do
32
+ expect(footprintable.footprint_count).must_equal 0
33
+ 10.times { footprintable.leave_footprints user }
34
+ expect(footprintable.footprint_count).must_equal 10
35
+ end
36
+
37
+ it '複数人でアクセスしたら合計されること' do
38
+ expect(footprintable.footprint_count).must_equal 0
39
+ 5.times { footprintable.leave_footprints user }
40
+ 5.times { footprintable.leave_footprints user2 }
41
+ expect(footprintable.footprint_count).must_equal 10
42
+ end
43
+
44
+ describe '期間指定をする' do
45
+ before do
46
+ 1.upto(30) do |day|
47
+ travel_to Time.parse("2013-09-#{day}") do
48
+ 5.times { footprintable.leave_footprints user }
49
+ end
50
+ end
51
+ end
52
+
53
+ describe '1週間の場合' do
54
+ it '35の足跡があること' do
55
+ travel_to Time.parse('2013-09-30 10:00:00') do
56
+ expect(footprintable.footprint_count_between(1.week.ago..Time.now)).must_equal 35
57
+ end
58
+ end
59
+ end
60
+
61
+ describe '1ヶ月の場合' do
62
+ it '150の足跡があること' do
63
+ travel_to Time.parse('2013-09-30 10:00:00') do
64
+ expect(footprintable.footprint_count_between(1.month.ago..Time.now)).must_equal 150
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+
71
+ describe 'アクセスランキングを作成' do
72
+ let(:user) { User.create!(name: 'i can footprint!') }
73
+
74
+ describe '件数と期間を制限' do
75
+ before do
76
+ 1.upto(30) do |index|
77
+ travel_to Time.parse("2013-09-#{index}") do
78
+ footprintable = Footprintable.create!(name: "Footprintable#{index}")
79
+ index.times { footprintable.leave_footprints user }
80
+ end
81
+ end
82
+ end
83
+ subject do
84
+ month = Time.new(2013, 9, 1)
85
+ Footprintable.access_ranking(month.beginning_of_month...1.week.since(month), 5)
86
+ end
87
+
88
+ it 'アクセスランキングが取得できること' do
89
+ expect(subject).must_equal({ 7 => 7, 6 => 6, 5 => 5, 4 => 4, 3 => 3 })
90
+ end
91
+
92
+ it '5件取得できること' do
93
+ expect(subject.count).must_equal 5
94
+ end
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+ require 'acts_as_footprintable/footprinter'
5
+
6
+ describe ActsAsFootprintable::Footprinter do
7
+ it 'should not be a footprinter' do
8
+ expect(NotUser).wont_be :footprinter?
9
+ end
10
+
11
+ it 'should be a footprinter' do
12
+ expect(User).must_be :footprinter?
13
+ end
14
+
15
+ describe 'ユーザーのアクセス履歴を' do
16
+ let(:user1) { User.create!(name: 'user1') }
17
+ before do
18
+ 1.upto(5) do |index|
19
+ footprintable = Footprintable.create!(name: "footprintable#{index}")
20
+ second_footprintable = SecondFootprintable.create!(name: "second_footprintable#{index}")
21
+ 3.times do
22
+ footprintable.leave_footprints user1
23
+ second_footprintable.leave_footprints user1
24
+ end
25
+ end
26
+ end
27
+
28
+ describe '対象のモデル毎に' do
29
+ it '取得できること' do
30
+ expect(user1.access_histories_for(Footprintable).count).must_equal 5
31
+ expected_data = 5.downto(1).map { |i| "footprintable#{i}" }
32
+ expect(user1.access_histories_for(Footprintable).map(&:footprintable).pluck(:name)).must_equal expected_data
33
+ end
34
+
35
+ it '件数を絞り込めること' do
36
+ expect(user1.access_histories_for(Footprintable, 3).count).must_equal 3
37
+ expected_data = 5.downto(3).map { |i| "footprintable#{i}" }
38
+ expect(user1.access_histories_for(Footprintable, 3).map(&:footprintable).pluck(:name)).must_equal expected_data
39
+ end
40
+ end
41
+
42
+ describe '全てのモデルを通じて' do
43
+ it '取得できること' do
44
+ expect(user1.access_histories.count).must_equal 10
45
+ footprintable_names = 5.downto(1).each_with_object([]) do |index, results|
46
+ results.push "second_footprintable#{index}"
47
+ results.push "footprintable#{index}"
48
+ end
49
+ expect(user1.access_histories.map(&:footprintable).pluck(:name)).must_equal footprintable_names
50
+ end
51
+
52
+ it '件数を絞り込める事' do
53
+ expect(user1.access_histories(3).count).must_equal 3
54
+ end
55
+ end
56
+
57
+ describe 'アクセス履歴のないユーザーの場合' do
58
+ let(:user2) { User.create!(name: 'user2') }
59
+ it '件数が0件であること' do
60
+ expect(user2.access_histories_for(Footprintable).count).must_equal 0
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Footprintable < ActiveRecord::Base
4
+ acts_as_footprintable
5
+ validates :name, presence: true
6
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ class NotFootprintable < ActiveRecord::Base
4
+ validates :name, presence: true
5
+ end
@@ -1,3 +1,4 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  class NotUser < ActiveRecord::Base
3
- end
4
+ end
@@ -1,5 +1,6 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  class SecondFootprintable < ActiveRecord::Base
3
4
  acts_as_footprintable
4
- validates :name, :presence => true
5
- end
5
+ validates :name, presence: true
6
+ end
@@ -1,4 +1,5 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  class User < ActiveRecord::Base
3
4
  acts_as_footprinter
4
- end
5
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'minitest/autorun'
4
+ require 'active_record'
5
+ require 'active_support/testing/time_helpers'
6
+ require 'database_cleaner/active_record'
7
+ require 'acts_as_footprintable'
8
+
9
+ Dir["#{Dir.pwd}/test/internal/app/models/*.rb"].sort.each { |f| require f }
10
+
11
+ ActiveRecord::Base.establish_connection('adapter' => 'sqlite3', 'database' => ':memory:')
12
+ ActiveRecord::Schema.define do
13
+ create_table :footprints, force: true do |t|
14
+ t.references :footprintable, polymorphic: true
15
+ t.references :footprinter, polymorphic: true
16
+ t.timestamps null: false
17
+ end
18
+
19
+ add_index :footprints, %i[footprintable_id footprintable_type]
20
+ add_index :footprints, %i[footprinter_id footprinter_type]
21
+
22
+ create_table :users, force: true do |t|
23
+ t.string :name
24
+ end
25
+
26
+ create_table :not_users, force: true do |t|
27
+ t.string :name
28
+ end
29
+
30
+ create_table :footprintables, force: true do |t|
31
+ t.string :name
32
+ end
33
+
34
+ create_table :second_footprintables, force: true do |t|
35
+ t.string :name
36
+ end
37
+
38
+ create_table :not_footprintables, force: true do |t|
39
+ t.string :name
40
+ end
41
+ end
42
+
43
+ DatabaseCleaner.strategy = :transaction
44
+
45
+ module Minitest
46
+ class Spec
47
+ include ActiveSupport::Testing::TimeHelpers
48
+
49
+ before :each do
50
+ DatabaseCleaner.start
51
+ end
52
+
53
+ after :each do
54
+ DatabaseCleaner.clean
55
+ end
56
+ end
57
+ end
metadata CHANGED
@@ -1,127 +1,155 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_footprintable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Toyoaki Oko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-13 00:00:00.000000000 Z
11
+ date: 2022-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: activerecord
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 5.0.0
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: 7.1.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 5.0.0
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: 7.1.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: database_cleaner
15
35
  requirement: !ruby/object:Gem::Requirement
16
36
  requirements:
17
37
  - - "~>"
18
38
  - !ruby/object:Gem::Version
19
- version: '1.3'
39
+ version: '2.0'
20
40
  type: :development
21
41
  prerelease: false
22
42
  version_requirements: !ruby/object:Gem::Requirement
23
43
  requirements:
24
44
  - - "~>"
25
45
  - !ruby/object:Gem::Version
26
- version: '1.3'
46
+ version: '2.0'
27
47
  - !ruby/object:Gem::Dependency
28
48
  name: rake
29
49
  requirement: !ruby/object:Gem::Requirement
30
50
  requirements:
31
- - - ">="
51
+ - - "~>"
32
52
  - !ruby/object:Gem::Version
33
- version: '0'
53
+ version: '13.0'
34
54
  type: :development
35
55
  prerelease: false
36
56
  version_requirements: !ruby/object:Gem::Requirement
37
57
  requirements:
38
- - - ">="
58
+ - - "~>"
39
59
  - !ruby/object:Gem::Version
40
- version: '0'
60
+ version: '13.0'
41
61
  - !ruby/object:Gem::Dependency
42
- name: rspec
62
+ name: rubocop
43
63
  requirement: !ruby/object:Gem::Requirement
44
64
  requirements:
45
- - - ">="
65
+ - - "~>"
46
66
  - !ruby/object:Gem::Version
47
- version: 3.0.0
67
+ version: '1.24'
48
68
  type: :development
49
69
  prerelease: false
50
70
  version_requirements: !ruby/object:Gem::Requirement
51
71
  requirements:
52
- - - ">="
72
+ - - "~>"
53
73
  - !ruby/object:Gem::Version
54
- version: 3.0.0
74
+ version: '1.24'
55
75
  - !ruby/object:Gem::Dependency
56
- name: pg
76
+ name: rubocop-minitest
57
77
  requirement: !ruby/object:Gem::Requirement
58
78
  requirements:
59
- - - ">="
79
+ - - "~>"
60
80
  - !ruby/object:Gem::Version
61
- version: '0'
81
+ version: '0.17'
62
82
  type: :development
63
83
  prerelease: false
64
84
  version_requirements: !ruby/object:Gem::Requirement
65
85
  requirements:
66
- - - ">="
86
+ - - "~>"
67
87
  - !ruby/object:Gem::Version
68
- version: '0'
88
+ version: '0.17'
69
89
  - !ruby/object:Gem::Dependency
70
- name: timecop
90
+ name: rubocop-performance
71
91
  requirement: !ruby/object:Gem::Requirement
72
92
  requirements:
73
- - - ">="
93
+ - - "~>"
74
94
  - !ruby/object:Gem::Version
75
- version: '0'
95
+ version: '1.13'
76
96
  type: :development
77
97
  prerelease: false
78
98
  version_requirements: !ruby/object:Gem::Requirement
79
99
  requirements:
80
- - - ">="
100
+ - - "~>"
81
101
  - !ruby/object:Gem::Version
82
- version: '0'
102
+ version: '1.13'
83
103
  - !ruby/object:Gem::Dependency
84
- name: database_cleaner
104
+ name: rubocop-rake
85
105
  requirement: !ruby/object:Gem::Requirement
86
106
  requirements:
87
107
  - - "~>"
88
108
  - !ruby/object:Gem::Version
89
- version: 1.0.1
109
+ version: '0.6'
90
110
  type: :development
91
111
  prerelease: false
92
112
  version_requirements: !ruby/object:Gem::Requirement
93
113
  requirements:
94
114
  - - "~>"
95
115
  - !ruby/object:Gem::Version
96
- version: 1.0.1
116
+ version: '0.6'
97
117
  - !ruby/object:Gem::Dependency
98
- name: pry
118
+ name: sqlite3
99
119
  requirement: !ruby/object:Gem::Requirement
100
120
  requirements:
101
- - - ">="
121
+ - - "~>"
102
122
  - !ruby/object:Gem::Version
103
- version: '0'
123
+ version: '1.3'
104
124
  type: :development
105
125
  prerelease: false
106
126
  version_requirements: !ruby/object:Gem::Requirement
107
127
  requirements:
108
- - - ">="
128
+ - - "~>"
109
129
  - !ruby/object:Gem::Version
110
- version: '0'
130
+ version: '1.3'
111
131
  description: Rails gem to allowing records to leave footprints
112
132
  email: chariderpato@gmail.com
113
133
  executables: []
114
134
  extensions: []
115
135
  extra_rdoc_files: []
116
136
  files:
137
+ - ".github/workflows/gem-push.yml"
138
+ - ".github/workflows/test.yml"
117
139
  - ".gitignore"
118
- - ".rspec"
119
- - ".travis.yml"
140
+ - ".rubocop.yml"
120
141
  - Gemfile
121
142
  - LICENSE.txt
122
143
  - README.md
123
144
  - Rakefile
124
145
  - acts_as_footprintable.gemspec
146
+ - config.ru
147
+ - gemfiles/rails_5.0.gemfile
148
+ - gemfiles/rails_5.1.gemfile
149
+ - gemfiles/rails_5.2.gemfile
150
+ - gemfiles/rails_6.0.gemfile
151
+ - gemfiles/rails_6.1.gemfile
152
+ - gemfiles/rails_7.0.gemfile
125
153
  - lib/acts_as_footprintable.rb
126
154
  - lib/acts_as_footprintable/extenders/footprintable.rb
127
155
  - lib/acts_as_footprintable/extenders/footprinter.rb
@@ -131,21 +159,19 @@ files:
131
159
  - lib/acts_as_footprintable/version.rb
132
160
  - lib/generators/acts_as_footprintable/migration/migration_generator.rb
133
161
  - lib/generators/acts_as_footprintable/migration/templates/active_record/migration.rb
134
- - spec/footprintable_spec.rb
135
- - spec/footprinter_spec.rb
136
- - spec/internal/app/models/footprintable.rb
137
- - spec/internal/app/models/not_footprintable.rb
138
- - spec/internal/app/models/not_user.rb
139
- - spec/internal/app/models/second_footprintable.rb
140
- - spec/internal/app/models/user.rb
141
- - spec/internal/config/database.yml
142
- - spec/internal/db/schema.rb
143
- - spec/internal/log/.gitignore
144
- - spec/spec_helper.rb
162
+ - test/footprintable_test.rb
163
+ - test/footprinter_test.rb
164
+ - test/internal/app/models/footprintable.rb
165
+ - test/internal/app/models/not_footprintable.rb
166
+ - test/internal/app/models/not_user.rb
167
+ - test/internal/app/models/second_footprintable.rb
168
+ - test/internal/app/models/user.rb
169
+ - test/test_helper.rb
145
170
  homepage: https://github.com/patorash/acts_as_footprintable
146
171
  licenses:
147
172
  - MIT
148
- metadata: {}
173
+ metadata:
174
+ rubygems_mfa_required: 'true'
149
175
  post_install_message:
150
176
  rdoc_options: []
151
177
  require_paths:
@@ -154,27 +180,23 @@ required_ruby_version: !ruby/object:Gem::Requirement
154
180
  requirements:
155
181
  - - ">="
156
182
  - !ruby/object:Gem::Version
157
- version: '0'
183
+ version: '2.6'
158
184
  required_rubygems_version: !ruby/object:Gem::Requirement
159
185
  requirements:
160
186
  - - ">="
161
187
  - !ruby/object:Gem::Version
162
188
  version: '0'
163
189
  requirements: []
164
- rubyforge_project:
165
- rubygems_version: 2.5.2
190
+ rubygems_version: 3.0.3.1
166
191
  signing_key:
167
192
  specification_version: 4
168
193
  summary: Rails gem to allowing records to leave footprints
169
194
  test_files:
170
- - spec/footprintable_spec.rb
171
- - spec/footprinter_spec.rb
172
- - spec/internal/app/models/footprintable.rb
173
- - spec/internal/app/models/not_footprintable.rb
174
- - spec/internal/app/models/not_user.rb
175
- - spec/internal/app/models/second_footprintable.rb
176
- - spec/internal/app/models/user.rb
177
- - spec/internal/config/database.yml
178
- - spec/internal/db/schema.rb
179
- - spec/internal/log/.gitignore
180
- - spec/spec_helper.rb
195
+ - test/footprintable_test.rb
196
+ - test/footprinter_test.rb
197
+ - test/internal/app/models/footprintable.rb
198
+ - test/internal/app/models/not_footprintable.rb
199
+ - test/internal/app/models/not_user.rb
200
+ - test/internal/app/models/second_footprintable.rb
201
+ - test/internal/app/models/user.rb
202
+ - test/test_helper.rb
data/.rspec DELETED
@@ -1 +0,0 @@
1
- --drb --colour --format documentation
data/.travis.yml DELETED
@@ -1,16 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.4.0
4
- - 2.3.3
5
- - 2.2.6
6
- - 2.1.10
7
- env:
8
- - "RAILS_VERSION=5.0.0"
9
- - "RAILS_VERSION=4.2.0"
10
- - "RAILS_VERSION=4.1.0"
11
- - "RAILS_VERSION=4.0.0"
12
- - "RAILS_VERSION=3.2.0"
13
- branches:
14
- only:
15
- - master
16
- - travis
@@ -1,98 +0,0 @@
1
- # coding: utf-8
2
- require 'spec_helper'
3
-
4
- describe ActsAsFootprintable::Footprintable do
5
-
6
- it "should not be a footprintable" do
7
- expect(NotFootprintable).not_to be_footprintable
8
- end
9
-
10
- it "should be a footprintable" do
11
- expect(Footprintable).to be_footprintable
12
- end
13
-
14
- describe 'leave footprints by footprinter' do
15
-
16
- before do
17
- @user = User.create!(:name => 'i can footprint!')
18
- @user2 = User.create!(:name => 'a new person')
19
-
20
- @footprintable = Footprintable.create!(:name => 'a footprinting model')
21
- @footprintable2 = Footprintable.create!(:name => 'a 2nd footprinting model')
22
- end
23
-
24
- it "should be leave footprints" do
25
- expect(@footprintable.leave_footprints(@user)).to be_truthy
26
- end
27
-
28
- it "足跡の数が増えていること" do
29
- expect {
30
- @footprintable.leave_footprints @user
31
- }.to change{ @footprintable.footprint_count }.from(0).to(1)
32
- end
33
-
34
- it "10回アクセスしたら10になること" do
35
- expect {
36
- 10.times { @footprintable.leave_footprints @user }
37
- }.to change{ @footprintable.footprint_count }.from(0).to(10)
38
- end
39
-
40
- it "複数人でアクセスしたら合計されること" do
41
- expect {
42
- 5.times { @footprintable.leave_footprints @user }
43
- 5.times { @footprintable.leave_footprints @user2 }
44
- }.to change{ @footprintable.footprint_count }.from(0).to(10)
45
- end
46
-
47
- describe "期間指定をする" do
48
- before do
49
- (1..30).each do |day|
50
- Timecop.travel(Time.parse("2013/9/#{day}")) do
51
- 5.times {@footprintable.leave_footprints @user}
52
- end
53
- end
54
- end
55
-
56
- context "1週間の場合" do
57
- it "35の足跡があること" do
58
- Timecop.travel(Time.parse("2013/9/30 10:00:00")) do
59
- expect(@footprintable.footprint_count_between(1.week.ago..Time.now)).to eq 35
60
- end
61
- end
62
- end
63
-
64
- context "1ヶ月の場合" do
65
- it "150の足跡があること" do
66
- Timecop.travel(Time.parse("2013/9/30 10:00:00")) do
67
- expect(@footprintable.footprint_count_between(1.month.ago..Time.now)).to eq 150
68
- end
69
- end
70
- end
71
- end
72
- end
73
-
74
- describe "アクセスランキングを作成" do
75
- before do
76
- @user = User.create!(:name => 'i can footprint!')
77
- end
78
-
79
- context "件数と期間を制限" do
80
- before do
81
- (1..30).each do |index|
82
- Timecop.travel(Time.parse("2013/9/#{index}")) do
83
- footprintable = Footprintable.create!(:name => "Footprintable#{index}")
84
- index.times {footprintable.leave_footprints @user}
85
- end
86
- end
87
- end
88
- subject do
89
- month = Time.new(2013,9,1)
90
- Footprintable.access_ranking(month.beginning_of_month...1.week.since(month), 5)
91
- end
92
- it { is_expected.to eq ({7 => 7, 6 => 6, 5 => 5, 4 => 4, 3 => 3 }) }
93
- it '5件取得できること' do
94
- expect(subject.count).to eq 5
95
- end
96
- end
97
- end
98
- end