rating 0.11.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +33 -9
  3. data/README.md +18 -7
  4. data/lib/generators/rating/templates/db/migrate/create_rate_table.rb +1 -1
  5. data/lib/generators/rating/templates/db/migrate/create_rating_table.rb +2 -2
  6. data/lib/rating/models/rating/extension.rb +6 -3
  7. data/lib/rating/models/rating/rate.rb +2 -2
  8. data/lib/rating/models/rating/rating.rb +4 -4
  9. data/lib/rating/version.rb +1 -1
  10. data/lib/rating.rb +1 -1
  11. metadata +55 -129
  12. data/spec/config/rate_table_spec.rb +0 -17
  13. data/spec/config/rating_table_spec.rb +0 -17
  14. data/spec/config/validations_spec.rb +0 -33
  15. data/spec/factories/article.rb +0 -7
  16. data/spec/factories/author.rb +0 -7
  17. data/spec/factories/category.rb +0 -7
  18. data/spec/factories/comment.rb +0 -5
  19. data/spec/factories/global.rb +0 -6
  20. data/spec/factories/rating/rate.rb +0 -10
  21. data/spec/factories/rating/rating.rb +0 -12
  22. data/spec/factories/toy.rb +0 -6
  23. data/spec/models/extension/after_create_spec.rb +0 -47
  24. data/spec/models/extension/order_by_rating_spec.rb +0 -180
  25. data/spec/models/extension/rate_for_spec.rb +0 -41
  26. data/spec/models/extension/rate_spec.rb +0 -60
  27. data/spec/models/extension/rated_question_spec.rb +0 -48
  28. data/spec/models/extension/rated_records_spec.rb +0 -12
  29. data/spec/models/extension/rated_spec.rb +0 -50
  30. data/spec/models/extension/rates_records_spec.rb +0 -12
  31. data/spec/models/extension/rates_spec.rb +0 -50
  32. data/spec/models/extension/rating_records_spec.rb +0 -12
  33. data/spec/models/extension/rating_spec.rb +0 -40
  34. data/spec/models/extension/rating_warm_up_spec.rb +0 -115
  35. data/spec/models/extension/unscoped_rating_spec.rb +0 -99
  36. data/spec/models/extension/where_spec.rb +0 -33
  37. data/spec/models/rate/create_spec.rb +0 -422
  38. data/spec/models/rate/rate_for_spec.rb +0 -107
  39. data/spec/models/rate_spec.rb +0 -28
  40. data/spec/models/rating/averager_data_spec.rb +0 -32
  41. data/spec/models/rating/data_spec.rb +0 -48
  42. data/spec/models/rating/update_rating_spec.rb +0 -48
  43. data/spec/models/rating/values_data_spec.rb +0 -40
  44. data/spec/models/rating_spec.rb +0 -24
  45. data/spec/rails_helper.rb +0 -17
  46. data/spec/support/common.rb +0 -22
  47. data/spec/support/database_cleaner.rb +0 -19
  48. data/spec/support/db/migrate/add_comment_on_rating_rates_table.rb +0 -8
  49. data/spec/support/db/migrate/add_extra_fields_on_rating_rates_table.rb +0 -8
  50. data/spec/support/db/migrate/create_articles_table.rb +0 -9
  51. data/spec/support/db/migrate/create_authors_table.rb +0 -9
  52. data/spec/support/db/migrate/create_categories_table.rb +0 -12
  53. data/spec/support/db/migrate/create_comments_table.rb +0 -7
  54. data/spec/support/db/migrate/create_globals_table.rb +0 -8
  55. data/spec/support/db/migrate/create_rates_table.rb +0 -19
  56. data/spec/support/db/migrate/create_rating_table.rb +0 -20
  57. data/spec/support/db/migrate/create_review_ratings_table.rb +0 -17
  58. data/spec/support/db/migrate/create_reviews_table.rb +0 -15
  59. data/spec/support/db/migrate/create_toys_table.rb +0 -8
  60. data/spec/support/factory_bot.rb +0 -9
  61. data/spec/support/migrate.rb +0 -21
  62. data/spec/support/models/article.rb +0 -7
  63. data/spec/support/models/author.rb +0 -5
  64. data/spec/support/models/category.rb +0 -6
  65. data/spec/support/models/comment.rb +0 -5
  66. data/spec/support/models/global.rb +0 -7
  67. data/spec/support/models/review.rb +0 -5
  68. data/spec/support/models/review_rating.rb +0 -4
  69. data/spec/support/models/toy.rb +0 -5
  70. data/spec/support/shared_context/with_database_records.rb +0 -20
  71. data/spec/support/shoulda.rb +0 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3478dbe5fac4bb47db0a3b730f0b21d49747912056447d9de55d5ec82f6072ec
4
- data.tar.gz: 3d95a77107c053347876554c1f36121a62b9342dd4b585833cd12b2f32aadd0c
3
+ metadata.gz: 2d43b5a545fab38d39feb7a46f4d081c4408dd2281f00478996bf989a4f3682d
4
+ data.tar.gz: cfc83ae954ea334ecf0a7cf44b16594d0fd8a3c0fe48cc75034bb662cd555fa7
5
5
  SHA512:
6
- metadata.gz: caabeb2c0336c22a86d95a064688424d242c96f84c8e28bd93883a2472f15a22d937ab726f060f765332bb8277f19ffb2fde571a2e7019b91e02c8aced96867d
7
- data.tar.gz: 5acbf2bb5e2280de7507e9c23785ecc75e31b62a8c434a48972f50e78d09fa38a8e4280d4272c91bb3109994cdab217f5766a01d94c5a384d9990aa080c18e06
6
+ metadata.gz: 6a393e04ede36dd77e88023c8ed134e359ad2ead75a96a07e483d46f99fe9ec0c83c9303143dc3fd545902064f8e711c8665de1293259561bec7afd1293ce091
7
+ data.tar.gz: 89e4096c7c2e43b7771e2af9680f8a3fca8753831fc7c4c5685f9fd676fd2694bde65cdbcf816f70150486dd5282141938ecd700ec79d2f9a231b6aadf97eabd
data/CHANGELOG.md CHANGED
@@ -1,3 +1,27 @@
1
+ ## v1.0.0
2
+
3
+ ### Break Change
4
+
5
+ - The attributes `estimate` and `average` now is rounded by two decimal numbers;
6
+
7
+ ### Updates
8
+
9
+ - The method `order_by_rating` now receives a hash parameter to avoid scope and so support Ruby 3.2;
10
+
11
+ ## v0.12.0
12
+
13
+ ### News
14
+
15
+ - Officially Supports Postgres;
16
+
17
+ ### Updates
18
+
19
+ - Migrates the CI to GitHub Actions;
20
+ - This gem does not depends on `git` package anymore;
21
+ - Makes this gem requires MFA for security;
22
+ - Adds coverage test;
23
+ - The method `rated?` now uses a better query;
24
+
1
25
  ## v0.11.0
2
26
 
3
27
  ### Updates
@@ -14,47 +38,47 @@
14
38
 
15
39
  ### News
16
40
 
17
- - Order index keys of template the same way Rails does the query;
41
+ - Order index keys of the template the same way Rails does the query;
18
42
  - Limits the `_type` columns to avoid overflow bytes in DBs like MySQL < 5.7.
19
43
 
20
44
  ### Updates
21
45
 
22
46
  - Update Ruby to 2.6.5;
23
- - Update Activerecord to the last version;
47
+ - Update ActiveRecord to the last version;
24
48
 
25
49
  ## v0.8.0
26
50
 
27
51
  ### News
28
52
 
29
- - Adds `unscoped_rating` option to calculate the rating counting all resource record ignoring the scope.
53
+ - Adds `unscoped_rating` option to calculate the rating by counting all resource records ignoring the scope.
30
54
 
31
55
  ## v0.7.0
32
56
 
33
57
  ### News
34
58
 
35
59
  - Support to configure `uniqueness` validation via YAML into Rating::Rate model;
36
- - Support to multiple scopes via `extra_scopes` option.
60
+ - Support multiple scopes via `extra_scopes` option.
37
61
 
38
62
  ### Updates
39
63
 
40
- - Reverts v0.6.0, since we need this validation because we cannot edit the Rate model by ourself.
64
+ - Reverts v0.6.0, since we need this validation because we cannot edit the Rate model by ourselves.
41
65
 
42
66
  ## v0.6.0
43
67
 
44
68
  ### Updates
45
69
 
46
- - The author unique validations was removed to enable custom validations
70
+ - The author's unique validations were removed to enable custom validations
47
71
 
48
72
  ## v0.5.0
49
73
 
50
74
  ### News
51
75
 
52
- - Adds `rating.yml` config to support to change the tables where Rating will write the data;
53
- - Adds `scoping` option to support to generates zero based rating via scope.
76
+ - Adds `rating.yml` config to support changing the tables where Rating will write the data;
77
+ - Adds `scoping` option to support generating zero-based rating via scope.
54
78
 
55
79
  ### Updates
56
80
 
57
- - The migrate was separated in two to improve in troubleshoot. (iondrimba)
81
+ - The migration was separated in two to improve troubleshooting. [#1](https://github.com/wbotelhos/rating/pull/1) by [iondrimba](https://github.com/iondrimba)
58
82
 
59
83
  ## v0.4.0
60
84
 
data/README.md CHANGED
@@ -1,9 +1,10 @@
1
1
  # Rating
2
2
 
3
- [![Build Status](https://travis-ci.org/wbotelhos/rating.svg)](https://travis-ci.org/wbotelhos/rating)
3
+ [![CI](https://github.com/wbotelhos/rating/workflows/CI/badge.svg)](https://github.com/wbotelhos/rating/actions)
4
4
  [![Gem Version](https://badge.fury.io/rb/rating.svg)](https://badge.fury.io/rb/rating)
5
5
  [![Maintainability](https://api.codeclimate.com/v1/badges/cc5efe8b06bc1d5e9e8a/maintainability)](https://codeclimate.com/github/wbotelhos/rating/maintainability)
6
- [![Patreon](https://img.shields.io/badge/donate-%3C3-brightgreen.svg)](https://www.patreon.com/wbotelhos)
6
+ [![codecov](https://codecov.io/gh/wbotelhos/rating/branch/master/graph/badge.svg?token=QJSHUOULEG)](https://codecov.io/gh/wbotelhos/rating)
7
+ [![Sponsor](https://img.shields.io/badge/sponsor-%3C3-green)](https://github.com/sponsors/wbotelhos)
7
8
 
8
9
  A true Bayesian rating system with scope and cache enabled.
9
10
 
@@ -51,15 +52,15 @@ Add the following code on your `Gemfile` and run `bundle install`:
51
52
  gem 'rating'
52
53
  ```
53
54
 
54
- Run the following task to create a Rating migration:
55
+ Run the following task to create the Rating migration:
55
56
 
56
- ```bash
57
+ ```sh
57
58
  rails g rating:install
58
59
  ```
59
60
 
60
61
  Then execute the migrations to create the to create tables `rating_rates` and `rating_ratings`:
61
62
 
62
- ```bash
63
+ ```sh
63
64
  rake db:migrate
64
65
  ```
65
66
 
@@ -168,7 +169,7 @@ It will return a collection of resource ordered by `estimate desc` as default.
168
169
  The order column and direction can be changed:
169
170
 
170
171
  ```ruby
171
- Article.order_by_rating :average, :asc
172
+ Article.order_by_rating({ column: :average, direction: :asc })
172
173
  ```
173
174
 
174
175
  It will return a collection of resource ordered by `Rating` table data.
@@ -241,7 +242,7 @@ article.rates scope: category_2
241
242
  To order the rating you do the same thing:
242
243
 
243
244
  ```ruby
244
- Article.order_by_rating scope: category_1
245
+ Article.order_by_rating({ scope: category_1 })
245
246
  ```
246
247
 
247
248
  ### Extra Scopes
@@ -423,6 +424,16 @@ author.rate resource, 5, extra_scope: { approved: true }
423
424
 
424
425
  As you can see, now, only the rate with value `5` will be included on the final rating.
425
426
 
427
+ ### Specs
428
+
429
+ To run all specs, run the following rakes:
430
+
431
+ ```sh
432
+ bundle exec rake spec
433
+ bundle exec rake spec_config
434
+ bundle exec rake spec_config_with_extra_scopes
435
+ ```
436
+
426
437
  ### References
427
438
 
428
439
  - [Evan Miller](http://www.evanmiller.org/ranking-items-with-star-ratings.html)
@@ -3,7 +3,7 @@
3
3
  class CreateRateTable < ActiveRecord::Migration[5.0]
4
4
  def change
5
5
  create_table :rating_rates do |t|
6
- t.decimal :value, default: 0, precision: 25, scale: 16
6
+ t.decimal :value, default: 0, precision: 11, scale: 2
7
7
 
8
8
  t.references :author, index: true, null: false, polymorphic: true
9
9
  t.references :resource, index: true, null: false, polymorphic: true
@@ -3,8 +3,8 @@
3
3
  class CreateRatingTable < ActiveRecord::Migration[5.0]
4
4
  def change
5
5
  create_table :rating_ratings do |t|
6
- t.decimal :average, default: 0, mull: false, precision: 25, scale: 16
7
- t.decimal :estimate, default: 0, mull: false, precision: 25, scale: 16
6
+ t.decimal :average, default: 0, mull: false, precision: 11, scale: 2
7
+ t.decimal :estimate, default: 0, mull: false, precision: 11, scale: 2
8
8
  t.integer :sum, default: 0, mull: false
9
9
  t.integer :total, default: 0, mull: false
10
10
 
@@ -20,9 +20,8 @@ module Rating
20
20
  Rate.rate_for author: self, extra_scopes: extra_scopes, resource: resource, scopeable: scope
21
21
  end
22
22
 
23
- # TODO: use exists for performance
24
23
  def rated?(resource, extra_scopes: {}, scope: nil)
25
- !rate_for(resource, extra_scopes: extra_scopes, scope: scope).nil?
24
+ Rate.exists?(extra_scopes.merge(author: self, resource: resource, scopeable: scope))
26
25
  end
27
26
 
28
27
  def rates(extra_scopes: {}, scope: nil)
@@ -73,7 +72,11 @@ module Rating
73
72
  class_name: '::Rating::Rate',
74
73
  dependent: :destroy
75
74
 
76
- scope :order_by_rating, lambda { |column = :estimate, direction = :desc, scope: nil|
75
+ scope :order_by_rating, lambda { |opts = {}|
76
+ column = opts.fetch(:column, :estimate)
77
+ direction = opts.fetch(:direction, :desc)
78
+ scope = opts[:scope]
79
+
77
80
  includes(:rating_records)
78
81
  .where(Rating.table_name => { scopeable_id: scope&.id, scopeable_type: scope&.class&.base_class&.name })
79
82
  .order("#{Rating.table_name}.#{column} #{direction}")
@@ -19,7 +19,7 @@ module Rating
19
19
  scope: ::Rating::Config.validations['rate']['scope'].map(&:to_sym),
20
20
  }
21
21
 
22
- def self.create(author:, extra_scopes:, metadata:, resource:, scopeable: nil, value:)
22
+ def self.create(author:, extra_scopes:, metadata:, resource:, value:, scopeable: nil)
23
23
  attributes = { author: author, resource: resource, scopeable: scopeable }.merge(extra_scopes)
24
24
  record = find_or_initialize_by(attributes)
25
25
 
@@ -31,7 +31,7 @@ module Rating
31
31
  record
32
32
  end
33
33
 
34
- def self.rate_for(author:, extra_scopes: {}, resource:, scopeable: nil)
34
+ def self.rate_for(author:, resource:, extra_scopes: {}, scopeable: nil)
35
35
  find_by extra_scopes.merge(author: author, resource: resource, scopeable: scopeable)
36
36
  end
37
37
 
@@ -43,8 +43,8 @@ module Rating
43
43
  values = values_data(resource, scopeable)
44
44
 
45
45
  {
46
- average: values.rating_avg,
47
- estimate: estimate(averager, values),
46
+ average: values.rating_avg.round(2),
47
+ estimate: estimate(averager, values).round(2),
48
48
  sum: values.rating_sum,
49
49
  total: values.rating_count,
50
50
  }
@@ -93,8 +93,8 @@ module Rating
93
93
  resource_rating_avg = values.rating_avg
94
94
  resource_rating_count = values.rating_count.to_f
95
95
 
96
- (resource_rating_count / (resource_rating_count + count_avg)) * resource_rating_avg +
97
- (count_avg / (resource_rating_count + count_avg)) * resource_type_rating_avg
96
+ ((resource_rating_count / (resource_rating_count + count_avg)) * resource_rating_avg) +
97
+ ((count_avg / (resource_rating_count + count_avg)) * resource_type_rating_avg)
98
98
  end
99
99
 
100
100
  def execute_sql(sql)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rating
4
- VERSION = '0.11.0'
4
+ VERSION = '1.0.0'
5
5
  end
data/lib/rating.rb CHANGED
@@ -8,4 +8,4 @@ require 'rating/models/rating/extension'
8
8
  require 'rating/models/rating/rate'
9
9
  require 'rating/models/rating/rating'
10
10
 
11
- ActiveRecord::Base.include Rating::Extension
11
+ ActiveSupport.on_load(:active_record) { include Rating::Extension }
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.11.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Washington Botelho
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-16 00:00:00.000000000 Z
11
+ date: 2023-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: codecov
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: database_cleaner
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +80,20 @@ dependencies:
66
80
  - - ">="
67
81
  - !ruby/object:Gem::Version
68
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pg
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
69
97
  - !ruby/object:Gem::Dependency
70
98
  name: pry-byebug
71
99
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +136,20 @@ dependencies:
108
136
  - - ">="
109
137
  - !ruby/object:Gem::Version
110
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop-rails
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
111
153
  - !ruby/object:Gem::Dependency
112
154
  name: rubocop-rspec
113
155
  requirement: !ruby/object:Gem::Requirement
@@ -140,7 +182,10 @@ description: A true Bayesian rating system with scope and cache enabled.
140
182
  email: wbotelhos@gmail.com
141
183
  executables: []
142
184
  extensions: []
143
- extra_rdoc_files: []
185
+ extra_rdoc_files:
186
+ - CHANGELOG.md
187
+ - LICENSE
188
+ - README.md
144
189
  files:
145
190
  - CHANGELOG.md
146
191
  - LICENSE
@@ -154,71 +199,12 @@ files:
154
199
  - lib/rating/models/rating/rate.rb
155
200
  - lib/rating/models/rating/rating.rb
156
201
  - lib/rating/version.rb
157
- - spec/config/rate_table_spec.rb
158
- - spec/config/rating_table_spec.rb
159
- - spec/config/validations_spec.rb
160
- - spec/factories/article.rb
161
- - spec/factories/author.rb
162
- - spec/factories/category.rb
163
- - spec/factories/comment.rb
164
- - spec/factories/global.rb
165
- - spec/factories/rating/rate.rb
166
- - spec/factories/rating/rating.rb
167
- - spec/factories/toy.rb
168
- - spec/models/extension/after_create_spec.rb
169
- - spec/models/extension/order_by_rating_spec.rb
170
- - spec/models/extension/rate_for_spec.rb
171
- - spec/models/extension/rate_spec.rb
172
- - spec/models/extension/rated_question_spec.rb
173
- - spec/models/extension/rated_records_spec.rb
174
- - spec/models/extension/rated_spec.rb
175
- - spec/models/extension/rates_records_spec.rb
176
- - spec/models/extension/rates_spec.rb
177
- - spec/models/extension/rating_records_spec.rb
178
- - spec/models/extension/rating_spec.rb
179
- - spec/models/extension/rating_warm_up_spec.rb
180
- - spec/models/extension/unscoped_rating_spec.rb
181
- - spec/models/extension/where_spec.rb
182
- - spec/models/rate/create_spec.rb
183
- - spec/models/rate/rate_for_spec.rb
184
- - spec/models/rate_spec.rb
185
- - spec/models/rating/averager_data_spec.rb
186
- - spec/models/rating/data_spec.rb
187
- - spec/models/rating/update_rating_spec.rb
188
- - spec/models/rating/values_data_spec.rb
189
- - spec/models/rating_spec.rb
190
- - spec/rails_helper.rb
191
- - spec/support/common.rb
192
- - spec/support/database_cleaner.rb
193
- - spec/support/db/migrate/add_comment_on_rating_rates_table.rb
194
- - spec/support/db/migrate/add_extra_fields_on_rating_rates_table.rb
195
- - spec/support/db/migrate/create_articles_table.rb
196
- - spec/support/db/migrate/create_authors_table.rb
197
- - spec/support/db/migrate/create_categories_table.rb
198
- - spec/support/db/migrate/create_comments_table.rb
199
- - spec/support/db/migrate/create_globals_table.rb
200
- - spec/support/db/migrate/create_rates_table.rb
201
- - spec/support/db/migrate/create_rating_table.rb
202
- - spec/support/db/migrate/create_review_ratings_table.rb
203
- - spec/support/db/migrate/create_reviews_table.rb
204
- - spec/support/db/migrate/create_toys_table.rb
205
- - spec/support/factory_bot.rb
206
- - spec/support/migrate.rb
207
- - spec/support/models/article.rb
208
- - spec/support/models/author.rb
209
- - spec/support/models/category.rb
210
- - spec/support/models/comment.rb
211
- - spec/support/models/global.rb
212
- - spec/support/models/review.rb
213
- - spec/support/models/review_rating.rb
214
- - spec/support/models/toy.rb
215
- - spec/support/shared_context/with_database_records.rb
216
- - spec/support/shoulda.rb
217
202
  homepage: https://github.com/wbotelhos/rating
218
203
  licenses:
219
204
  - MIT
220
- metadata: {}
221
- post_install_message:
205
+ metadata:
206
+ rubygems_mfa_required: 'true'
207
+ post_install_message:
222
208
  rdoc_options: []
223
209
  require_paths:
224
210
  - lib
@@ -233,68 +219,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
233
219
  - !ruby/object:Gem::Version
234
220
  version: '0'
235
221
  requirements: []
236
- rubygems_version: 3.1.2
237
- signing_key:
222
+ rubygems_version: 3.4.6
223
+ signing_key:
238
224
  specification_version: 4
239
225
  summary: A true Bayesian rating system with scope and cache enabled.
240
- test_files:
241
- - spec/config/rate_table_spec.rb
242
- - spec/config/validations_spec.rb
243
- - spec/config/rating_table_spec.rb
244
- - spec/models/rate/rate_for_spec.rb
245
- - spec/models/rate/create_spec.rb
246
- - spec/models/rating/averager_data_spec.rb
247
- - spec/models/rating/data_spec.rb
248
- - spec/models/rating/update_rating_spec.rb
249
- - spec/models/rating/values_data_spec.rb
250
- - spec/models/extension/rated_records_spec.rb
251
- - spec/models/extension/rating_spec.rb
252
- - spec/models/extension/rated_question_spec.rb
253
- - spec/models/extension/rating_warm_up_spec.rb
254
- - spec/models/extension/order_by_rating_spec.rb
255
- - spec/models/extension/unscoped_rating_spec.rb
256
- - spec/models/extension/where_spec.rb
257
- - spec/models/extension/rate_spec.rb
258
- - spec/models/extension/rate_for_spec.rb
259
- - spec/models/extension/after_create_spec.rb
260
- - spec/models/extension/rates_spec.rb
261
- - spec/models/extension/rating_records_spec.rb
262
- - spec/models/extension/rated_spec.rb
263
- - spec/models/extension/rates_records_spec.rb
264
- - spec/models/rating_spec.rb
265
- - spec/models/rate_spec.rb
266
- - spec/support/migrate.rb
267
- - spec/support/shoulda.rb
268
- - spec/support/factory_bot.rb
269
- - spec/support/models/article.rb
270
- - spec/support/models/category.rb
271
- - spec/support/models/toy.rb
272
- - spec/support/models/author.rb
273
- - spec/support/models/review.rb
274
- - spec/support/models/comment.rb
275
- - spec/support/models/global.rb
276
- - spec/support/models/review_rating.rb
277
- - spec/support/common.rb
278
- - spec/support/db/migrate/create_categories_table.rb
279
- - spec/support/db/migrate/create_authors_table.rb
280
- - spec/support/db/migrate/create_review_ratings_table.rb
281
- - spec/support/db/migrate/create_articles_table.rb
282
- - spec/support/db/migrate/create_rating_table.rb
283
- - spec/support/db/migrate/create_toys_table.rb
284
- - spec/support/db/migrate/add_comment_on_rating_rates_table.rb
285
- - spec/support/db/migrate/add_extra_fields_on_rating_rates_table.rb
286
- - spec/support/db/migrate/create_reviews_table.rb
287
- - spec/support/db/migrate/create_comments_table.rb
288
- - spec/support/db/migrate/create_globals_table.rb
289
- - spec/support/db/migrate/create_rates_table.rb
290
- - spec/support/database_cleaner.rb
291
- - spec/support/shared_context/with_database_records.rb
292
- - spec/factories/article.rb
293
- - spec/factories/category.rb
294
- - spec/factories/rating/rate.rb
295
- - spec/factories/rating/rating.rb
296
- - spec/factories/toy.rb
297
- - spec/factories/author.rb
298
- - spec/factories/comment.rb
299
- - spec/factories/global.rb
300
- - spec/rails_helper.rb
226
+ test_files: []
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Rating::Config, '.rate_table' do
6
- if ENV['CONFIG_ENABLED'] != 'true'
7
- context 'when rating.yml does not exist' do
8
- it { expect(subject.rate_table).to eq 'rating_rates' }
9
- end
10
- end
11
-
12
- if ENV['CONFIG_ENABLED'] == 'true'
13
- context 'when rating.yml exists' do
14
- it { expect(subject.rate_table).to eq 'reviews' }
15
- end
16
- end
17
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Rating::Config, '.rating_table' do
6
- if ENV['CONFIG_ENABLED'] != 'true'
7
- context 'when rating.yml does not exist' do
8
- it { expect(subject.rating_table).to eq 'rating_ratings' }
9
- end
10
- end
11
-
12
- if ENV['CONFIG_ENABLED'] == 'true'
13
- context 'when rating.yml exists' do
14
- it { expect(subject.rating_table).to eq 'review_ratings' }
15
- end
16
- end
17
- end
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails_helper'
4
-
5
- RSpec.describe Rating::Config, '.validations' do
6
- if ENV['CONFIG_ENABLED_WITH_EXTRA_SCOPES'] != 'true'
7
- context 'when rating.yml does not exist' do
8
- it do
9
- expect(subject.validations).to eq({
10
- rate: {
11
- case_sensitive: false,
12
- scope: %w[author_type resource_id resource_type scopeable_id scopeable_type],
13
- },
14
- }.deep_stringify_keys
15
- )
16
- end
17
- end
18
- end
19
-
20
- if ENV['CONFIG_ENABLED_WITH_EXTRA_SCOPES'] == 'true'
21
- context 'when rating.yml exists' do
22
- it do
23
- expect(subject.validations).to eq({
24
- rate: {
25
- case_sensitive: false,
26
- scope: %w[author_type resource_id resource_type scopeable_id scopeable_type scope_1 scope_2],
27
- },
28
- }.deep_stringify_keys
29
- )
30
- end
31
- end
32
- end
33
- end
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- FactoryBot.define do
4
- factory :article do
5
- sequence(:name) { |i| "Article #{i}" }
6
- end
7
- end
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- FactoryBot.define do
4
- factory :author do
5
- sequence(:name) { |i| "Author #{i}" }
6
- end
7
- end
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- FactoryBot.define do
4
- factory :category do
5
- sequence(:name) { |i| "Category #{i}" }
6
- end
7
- end
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- FactoryBot.define do
4
- factory :comment
5
- end
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- FactoryBot.define do
4
- factory :global do
5
- end
6
- end
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- FactoryBot.define do
4
- factory :rating_rate, class: Rating::Rate do
5
- value { 100 }
6
-
7
- author { create :author }
8
- resource { create :article }
9
- end
10
- end
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- FactoryBot.define do
4
- factory :rating_rating, class: Rating::Rating do
5
- average { 100 }
6
- estimate { 100 }
7
- sum { 100 }
8
- total { 1 }
9
-
10
- association :resource, factory: :article, strategy: :build
11
- end
12
- end
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- FactoryBot.define do
4
- factory :toy do
5
- end
6
- end