rating 0.1.0 → 0.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +111 -5
- data/lib/generators/rating/install_generator.rb +7 -3
- data/lib/generators/rating/templates/db/migrate/create_rating_tables.rb +10 -6
- data/lib/rating/models/rating/extension.rb +32 -13
- data/lib/rating/models/rating/rate.rb +9 -8
- data/lib/rating/models/rating/rating.rb +34 -17
- data/lib/rating/version.rb +1 -1
- data/spec/factories/article.rb +1 -1
- data/spec/factories/author.rb +7 -0
- data/spec/factories/category.rb +7 -0
- data/spec/factories/user.rb +1 -1
- data/spec/models/extension/after_create_spec.rb +16 -7
- data/spec/models/extension/order_by_rating_spec.rb +75 -0
- data/spec/models/extension/rate_for_spec.rb +15 -3
- data/spec/models/extension/rate_spec.rb +15 -3
- data/spec/models/extension/rated_question_spec.rb +24 -6
- data/spec/models/extension/rated_records_spec.rb +26 -0
- data/spec/models/extension/rated_spec.rb +33 -13
- data/spec/models/extension/rates_records_spec.rb +26 -0
- data/spec/models/extension/rates_spec.rb +33 -17
- data/spec/models/extension/rating_records_spec.rb +28 -0
- data/spec/models/extension/rating_spec.rb +31 -15
- data/spec/models/rate/create_spec.rb +104 -37
- data/spec/models/rate/rate_for_spec.rb +26 -6
- data/spec/models/rate_spec.rb +2 -1
- data/spec/models/rating/averager_data_spec.rb +24 -5
- data/spec/models/rating/data_spec.rb +38 -11
- data/spec/models/rating/update_rating_spec.rb +24 -6
- data/spec/models/rating/values_data_spec.rb +31 -8
- data/spec/models/rating_spec.rb +1 -0
- data/spec/support/db/migrate/create_authors_table.rb +9 -0
- data/spec/support/db/migrate/create_category_spec.rb +9 -0
- data/spec/support/migrate.rb +3 -1
- data/spec/support/models/author.rb +5 -0
- data/spec/support/models/category.rb +4 -0
- metadata +22 -20
- data/spec/support/html_matchers.rb +0 -7
@@ -3,7 +3,7 @@
|
|
3
3
|
require 'rails_helper'
|
4
4
|
|
5
5
|
RSpec.describe Rating::Rating, ':values_data' do
|
6
|
-
|
6
|
+
let!(:category) { create :category }
|
7
7
|
|
8
8
|
let!(:user_1) { create :user }
|
9
9
|
let!(:user_2) { create :user }
|
@@ -17,17 +17,40 @@ RSpec.describe Rating::Rating, ':values_data' do
|
|
17
17
|
create :rating_rate, author: user_1, resource: article_2, value: 11
|
18
18
|
create :rating_rate, author: user_1, resource: article_3, value: 10
|
19
19
|
create :rating_rate, author: user_2, resource: article_1, value: 4
|
20
|
-
end
|
21
20
|
|
22
|
-
|
23
|
-
|
21
|
+
create :rating_rate, author: user_1, resource: article_1, scopeable: category, value: 1
|
22
|
+
create :rating_rate, author: user_2, resource: article_1, scopeable: category, value: 2
|
24
23
|
end
|
25
24
|
|
26
|
-
|
27
|
-
|
25
|
+
context 'with no scopeable' do
|
26
|
+
subject { described_class.values_data article_1, nil }
|
27
|
+
|
28
|
+
it 'returns the average of value for a resource' do
|
29
|
+
expect(subject.as_json['rating_avg']).to eq 52.0
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'returns the sum of values for a resource' do
|
33
|
+
expect(subject.as_json['rating_sum']).to eq 104
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'returns the count of votes for a resource' do
|
37
|
+
expect(subject.as_json['rating_count']).to eq 2
|
38
|
+
end
|
28
39
|
end
|
29
40
|
|
30
|
-
|
31
|
-
|
41
|
+
context 'with scopeable' do
|
42
|
+
subject { described_class.values_data article_1, category }
|
43
|
+
|
44
|
+
it 'returns the average of value for a resource' do
|
45
|
+
expect(subject.as_json['rating_avg']).to eq 1.5
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'returns the sum of values for a resource' do
|
49
|
+
expect(subject.as_json['rating_sum']).to eq 3
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'returns the count of votes for a resource' do
|
53
|
+
expect(subject.as_json['rating_count']).to eq 2
|
54
|
+
end
|
32
55
|
end
|
33
56
|
end
|
data/spec/models/rating_spec.rb
CHANGED
@@ -8,6 +8,7 @@ RSpec.describe Rating::Rating do
|
|
8
8
|
it { expect(object).to be_valid }
|
9
9
|
|
10
10
|
it { is_expected.to belong_to :resource }
|
11
|
+
it { is_expected.to belong_to :scopeable }
|
11
12
|
|
12
13
|
it { is_expected.to validate_presence_of :average }
|
13
14
|
it { is_expected.to validate_presence_of :estimate }
|
data/spec/support/migrate.rb
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
require File.expand_path('../../lib/generators/rating/templates/db/migrate/create_rating_tables.rb', __dir__)
|
4
4
|
|
5
|
+
CreateArticlesTable.new.change
|
6
|
+
CreateAuthorsTable.new.change
|
7
|
+
CreateCategoriesTable.new.change
|
5
8
|
CreateRatingTables.new.change
|
6
9
|
CreateUsersTable.new.change
|
7
|
-
CreateArticlesTable.new.change
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rating
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Washington Botelho
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -72,20 +72,6 @@ dependencies:
|
|
72
72
|
- - ">="
|
73
73
|
- !ruby/object:Gem::Version
|
74
74
|
version: '0'
|
75
|
-
- !ruby/object:Gem::Dependency
|
76
|
-
name: rspec-html-matchers
|
77
|
-
requirement: !ruby/object:Gem::Requirement
|
78
|
-
requirements:
|
79
|
-
- - ">="
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
version: '0'
|
82
|
-
type: :development
|
83
|
-
prerelease: false
|
84
|
-
version_requirements: !ruby/object:Gem::Requirement
|
85
|
-
requirements:
|
86
|
-
- - ">="
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
version: '0'
|
89
75
|
- !ruby/object:Gem::Dependency
|
90
76
|
name: rspec-rails
|
91
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,7 +128,7 @@ dependencies:
|
|
142
128
|
- - ">="
|
143
129
|
- !ruby/object:Gem::Version
|
144
130
|
version: '0'
|
145
|
-
description: A true Bayesian rating system with cache enabled.
|
131
|
+
description: A true Bayesian rating system with scope and cache enabled.
|
146
132
|
email: wbotelhos@gmail.com
|
147
133
|
executables: []
|
148
134
|
extensions: []
|
@@ -159,6 +145,8 @@ files:
|
|
159
145
|
- lib/rating/models/rating/rating.rb
|
160
146
|
- lib/rating/version.rb
|
161
147
|
- spec/factories/article.rb
|
148
|
+
- spec/factories/author.rb
|
149
|
+
- spec/factories/category.rb
|
162
150
|
- spec/factories/rating/rate.rb
|
163
151
|
- spec/factories/rating/rating.rb
|
164
152
|
- spec/factories/user.rb
|
@@ -167,8 +155,11 @@ files:
|
|
167
155
|
- spec/models/extension/rate_for_spec.rb
|
168
156
|
- spec/models/extension/rate_spec.rb
|
169
157
|
- spec/models/extension/rated_question_spec.rb
|
158
|
+
- spec/models/extension/rated_records_spec.rb
|
170
159
|
- spec/models/extension/rated_spec.rb
|
160
|
+
- spec/models/extension/rates_records_spec.rb
|
171
161
|
- spec/models/extension/rates_spec.rb
|
162
|
+
- spec/models/extension/rating_records_spec.rb
|
172
163
|
- spec/models/extension/rating_spec.rb
|
173
164
|
- spec/models/rate/create_spec.rb
|
174
165
|
- spec/models/rate/rate_for_spec.rb
|
@@ -182,11 +173,14 @@ files:
|
|
182
173
|
- spec/support/common.rb
|
183
174
|
- spec/support/database_cleaner.rb
|
184
175
|
- spec/support/db/migrate/create_articles_table.rb
|
176
|
+
- spec/support/db/migrate/create_authors_table.rb
|
177
|
+
- spec/support/db/migrate/create_category_spec.rb
|
185
178
|
- spec/support/db/migrate/create_users_table.rb
|
186
179
|
- spec/support/factory_bot.rb
|
187
|
-
- spec/support/html_matchers.rb
|
188
180
|
- spec/support/migrate.rb
|
189
181
|
- spec/support/models/article.rb
|
182
|
+
- spec/support/models/author.rb
|
183
|
+
- spec/support/models/category.rb
|
190
184
|
- spec/support/models/user.rb
|
191
185
|
- spec/support/shoulda.rb
|
192
186
|
homepage: https://github.com/wbotelhos/rating
|
@@ -212,9 +206,11 @@ rubyforge_project:
|
|
212
206
|
rubygems_version: 2.6.14
|
213
207
|
signing_key:
|
214
208
|
specification_version: 4
|
215
|
-
summary: A true Bayesian rating system with cache enabled.
|
209
|
+
summary: A true Bayesian rating system with scope and cache enabled.
|
216
210
|
test_files:
|
217
211
|
- spec/factories/article.rb
|
212
|
+
- spec/factories/author.rb
|
213
|
+
- spec/factories/category.rb
|
218
214
|
- spec/factories/rating/rate.rb
|
219
215
|
- spec/factories/rating/rating.rb
|
220
216
|
- spec/factories/user.rb
|
@@ -223,8 +219,11 @@ test_files:
|
|
223
219
|
- spec/models/extension/rate_for_spec.rb
|
224
220
|
- spec/models/extension/rate_spec.rb
|
225
221
|
- spec/models/extension/rated_question_spec.rb
|
222
|
+
- spec/models/extension/rated_records_spec.rb
|
226
223
|
- spec/models/extension/rated_spec.rb
|
224
|
+
- spec/models/extension/rates_records_spec.rb
|
227
225
|
- spec/models/extension/rates_spec.rb
|
226
|
+
- spec/models/extension/rating_records_spec.rb
|
228
227
|
- spec/models/extension/rating_spec.rb
|
229
228
|
- spec/models/rate/create_spec.rb
|
230
229
|
- spec/models/rate/rate_for_spec.rb
|
@@ -238,10 +237,13 @@ test_files:
|
|
238
237
|
- spec/support/common.rb
|
239
238
|
- spec/support/database_cleaner.rb
|
240
239
|
- spec/support/db/migrate/create_articles_table.rb
|
240
|
+
- spec/support/db/migrate/create_authors_table.rb
|
241
|
+
- spec/support/db/migrate/create_category_spec.rb
|
241
242
|
- spec/support/db/migrate/create_users_table.rb
|
242
243
|
- spec/support/factory_bot.rb
|
243
|
-
- spec/support/html_matchers.rb
|
244
244
|
- spec/support/migrate.rb
|
245
245
|
- spec/support/models/article.rb
|
246
|
+
- spec/support/models/author.rb
|
247
|
+
- spec/support/models/category.rb
|
246
248
|
- spec/support/models/user.rb
|
247
249
|
- spec/support/shoulda.rb
|