rating 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +64 -24
- data/lib/generators/rating/templates/db/migrate/create_rating_tables.rb +8 -8
- data/lib/rating/models/rating/extension.rb +2 -2
- data/lib/rating/models/rating/rate.rb +5 -3
- data/lib/rating/models/rating/rating.rb +13 -8
- data/lib/rating/version.rb +1 -1
- data/spec/factories/rating/rate.rb +1 -1
- data/spec/factories/rating/rating.rb +1 -1
- data/spec/models/extension/after_create_spec.rb +5 -5
- data/spec/models/extension/order_by_rating_spec.rb +37 -53
- data/spec/models/extension/rate_for_spec.rb +5 -5
- data/spec/models/extension/rate_spec.rb +31 -5
- data/spec/models/extension/rated_question_spec.rb +9 -9
- data/spec/models/extension/rated_records_spec.rb +3 -17
- data/spec/models/extension/rated_spec.rb +9 -27
- data/spec/models/extension/rates_records_spec.rb +2 -16
- data/spec/models/extension/rates_spec.rb +5 -19
- data/spec/models/extension/rating_records_spec.rb +2 -18
- data/spec/models/extension/rating_spec.rb +3 -17
- data/spec/models/rate/create_spec.rb +56 -15
- data/spec/models/rate/rate_for_spec.rb +7 -7
- data/spec/models/rate_spec.rb +2 -2
- data/spec/models/rating/averager_data_spec.rb +8 -24
- data/spec/models/rating/data_spec.rb +12 -28
- data/spec/models/rating/update_rating_spec.rb +2 -18
- data/spec/models/rating/values_data_spec.rb +10 -26
- data/spec/models/rating_spec.rb +6 -0
- data/spec/support/db/migrate/add_comment_on_rating_rates_table.rb +7 -0
- data/spec/support/db/migrate/{create_category_spec.rb → create_categories_table.rb} +0 -0
- data/spec/support/migrate.rb +3 -1
- data/spec/support/shared_context/with_database_records.rb +20 -0
- metadata +35 -37
- data/spec/factories/user.rb +0 -7
- data/spec/support/db/migrate/create_users_table.rb +0 -9
- data/spec/support/models/user.rb +0 -5
@@ -3,19 +3,19 @@
|
|
3
3
|
require 'rails_helper'
|
4
4
|
|
5
5
|
RSpec.describe Rating::Rate, ':rate_for' do
|
6
|
-
let!(:
|
6
|
+
let!(:author) { create :author }
|
7
7
|
let!(:article) { create :article }
|
8
8
|
|
9
9
|
context 'with no scopeable' do
|
10
10
|
context 'when rate does not exist' do
|
11
|
-
specify { expect(described_class.rate_for(author:
|
11
|
+
specify { expect(described_class.rate_for(author: author, resource: article)).to eq nil }
|
12
12
|
end
|
13
13
|
|
14
14
|
context 'when rate does not exist' do
|
15
|
-
before { described_class.create author:
|
15
|
+
before { described_class.create author: author, metadata: {}, resource: article, value: 3 }
|
16
16
|
|
17
17
|
it 'returns the record' do
|
18
|
-
expect(described_class.rate_for(author:
|
18
|
+
expect(described_class.rate_for(author: author, resource: article)).to eq described_class.last
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
@@ -24,14 +24,14 @@ RSpec.describe Rating::Rate, ':rate_for' do
|
|
24
24
|
let!(:category) { create :category }
|
25
25
|
|
26
26
|
context 'when rate does not exist' do
|
27
|
-
specify { expect(described_class.rate_for(author:
|
27
|
+
specify { expect(described_class.rate_for(author: author, resource: article, scopeable: category)).to eq nil }
|
28
28
|
end
|
29
29
|
|
30
30
|
context 'when rate does not exist' do
|
31
|
-
before { described_class.create author:
|
31
|
+
before { described_class.create author: author, metadata: {}, resource: article, scopeable: category, value: 3 }
|
32
32
|
|
33
33
|
it 'returns the record' do
|
34
|
-
query = described_class.rate_for(author:
|
34
|
+
query = described_class.rate_for(author: author, resource: article, scopeable: category)
|
35
35
|
|
36
36
|
expect(query).to eq described_class.last
|
37
37
|
end
|
data/spec/models/rate_spec.rb
CHANGED
@@ -15,11 +15,11 @@ RSpec.describe Rating::Rate do
|
|
15
15
|
it { is_expected.to validate_presence_of :resource }
|
16
16
|
it { is_expected.to validate_presence_of :value }
|
17
17
|
|
18
|
-
|
18
|
+
it do
|
19
19
|
is_expected.to validate_numericality_of(:value).is_less_than_or_equal_to(100).is_less_than_or_equal_to 100
|
20
20
|
end
|
21
21
|
|
22
|
-
|
22
|
+
it do
|
23
23
|
expect(object).to validate_uniqueness_of(:author_id)
|
24
24
|
.scoped_to(%i[author_type resource_id resource_type scopeable_id scopeable_type])
|
25
25
|
.case_insensitive
|
@@ -1,48 +1,32 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'rails_helper'
|
4
|
+
require 'support/shared_context/with_database_records'
|
4
5
|
|
5
6
|
RSpec.describe Rating::Rating, ':averager_data' do
|
6
|
-
|
7
|
-
|
8
|
-
let!(:user_1) { create :user }
|
9
|
-
let!(:user_2) { create :user }
|
10
|
-
|
11
|
-
let!(:article_1) { create :article }
|
12
|
-
let!(:article_2) { create :article }
|
13
|
-
let!(:article_3) { create :article }
|
14
|
-
|
15
|
-
before do
|
16
|
-
create :rating_rate, author: user_1, resource: article_1, value: 100
|
17
|
-
create :rating_rate, author: user_1, resource: article_2, value: 11
|
18
|
-
create :rating_rate, author: user_1, resource: article_3, value: 10
|
19
|
-
create :rating_rate, author: user_2, resource: article_1, value: 1
|
20
|
-
|
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
|
23
|
-
end
|
7
|
+
include_context 'with_database_records'
|
24
8
|
|
25
9
|
context 'with no scopeable' do
|
26
|
-
subject { described_class.averager_data article_1, nil }
|
10
|
+
subject(:result) { described_class.averager_data article_1, nil }
|
27
11
|
|
28
12
|
it 'returns the values average of given resource type' do
|
29
|
-
expect(
|
13
|
+
expect(result.as_json['rating_avg']).to eq 30.5
|
30
14
|
end
|
31
15
|
|
32
16
|
it 'returns the average of number of records for the given resource type' do
|
33
|
-
expect(
|
17
|
+
expect(result.as_json['count_avg']).to eq 1.3333333333333333
|
34
18
|
end
|
35
19
|
end
|
36
20
|
|
37
21
|
context 'with scopeable' do
|
38
|
-
subject { described_class.averager_data article_1, category }
|
22
|
+
subject(:result) { described_class.averager_data article_1, category }
|
39
23
|
|
40
24
|
it 'returns the values average of given resource type' do
|
41
|
-
expect(
|
25
|
+
expect(result.as_json['rating_avg']).to eq 1.5
|
42
26
|
end
|
43
27
|
|
44
28
|
it 'returns the average of number of records for the given resource type' do
|
45
|
-
expect(
|
29
|
+
expect(result.as_json['count_avg']).to eq 2
|
46
30
|
end
|
47
31
|
end
|
48
32
|
end
|
@@ -1,64 +1,48 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'rails_helper'
|
4
|
+
require 'support/shared_context/with_database_records'
|
4
5
|
|
5
6
|
RSpec.describe Rating::Rating, ':data' do
|
6
|
-
|
7
|
-
|
8
|
-
let!(:user_1) { create :user }
|
9
|
-
let!(:user_2) { create :user }
|
10
|
-
|
11
|
-
let!(:article_1) { create :article }
|
12
|
-
let!(:article_2) { create :article }
|
13
|
-
let!(:article_3) { create :article }
|
14
|
-
|
15
|
-
before do
|
16
|
-
create :rating_rate, author: user_1, resource: article_1, value: 100
|
17
|
-
create :rating_rate, author: user_1, resource: article_2, value: 11
|
18
|
-
create :rating_rate, author: user_1, resource: article_3, value: 10
|
19
|
-
create :rating_rate, author: user_2, resource: article_1, value: 1
|
20
|
-
|
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
|
23
|
-
end
|
7
|
+
include_context 'with_database_records'
|
24
8
|
|
25
9
|
context 'with no scopeable' do
|
26
|
-
subject { described_class.data article_1, nil }
|
10
|
+
subject(:result) { described_class.data article_1, nil }
|
27
11
|
|
28
12
|
it 'returns the average of value for a resource' do
|
29
|
-
expect(
|
13
|
+
expect(result[:average]).to eq 50.5
|
30
14
|
end
|
31
15
|
|
32
16
|
it 'returns the sum of values for a resource' do
|
33
|
-
expect(
|
17
|
+
expect(result[:sum]).to eq 101
|
34
18
|
end
|
35
19
|
|
36
20
|
it 'returns the count of votes for a resource' do
|
37
|
-
expect(
|
21
|
+
expect(result[:total]).to eq 2
|
38
22
|
end
|
39
23
|
|
40
24
|
it 'returns the estimate for a resource' do
|
41
|
-
expect(
|
25
|
+
expect(result[:estimate]).to eq 42.50000000000001
|
42
26
|
end
|
43
27
|
end
|
44
28
|
|
45
29
|
context 'with scopeable' do
|
46
|
-
subject { described_class.data article_1, category }
|
30
|
+
subject(:result) { described_class.data article_1, category }
|
47
31
|
|
48
32
|
it 'returns the average of value for a resource' do
|
49
|
-
expect(
|
33
|
+
expect(result[:average]).to eq 1.5
|
50
34
|
end
|
51
35
|
|
52
36
|
it 'returns the sum of values for a resource' do
|
53
|
-
expect(
|
37
|
+
expect(result[:sum]).to eq 3
|
54
38
|
end
|
55
39
|
|
56
40
|
it 'returns the count of votes for a resource' do
|
57
|
-
expect(
|
41
|
+
expect(result[:total]).to eq 2
|
58
42
|
end
|
59
43
|
|
60
44
|
it 'returns the estimate for a resource' do
|
61
|
-
expect(
|
45
|
+
expect(result[:estimate]).to eq 1.5
|
62
46
|
end
|
63
47
|
end
|
64
48
|
end
|
@@ -1,26 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'rails_helper'
|
4
|
+
require 'support/shared_context/with_database_records'
|
4
5
|
|
5
6
|
RSpec.describe Rating::Rating, ':update_rating' do
|
6
|
-
|
7
|
-
|
8
|
-
let!(:user_1) { create :user }
|
9
|
-
let!(:user_2) { create :user }
|
10
|
-
|
11
|
-
let!(:article_1) { create :article }
|
12
|
-
let!(:article_2) { create :article }
|
13
|
-
let!(:article_3) { create :article }
|
14
|
-
|
15
|
-
before do
|
16
|
-
create :rating_rate, author: user_1, resource: article_1, value: 100
|
17
|
-
create :rating_rate, author: user_1, resource: article_2, value: 11
|
18
|
-
create :rating_rate, author: user_1, resource: article_3, value: 10
|
19
|
-
create :rating_rate, author: user_2, resource: article_1, value: 1
|
20
|
-
|
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
|
23
|
-
end
|
7
|
+
include_context 'with_database_records'
|
24
8
|
|
25
9
|
context 'with no scopeable' do
|
26
10
|
it 'updates the rating data of the given resource' do
|
@@ -1,56 +1,40 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'rails_helper'
|
4
|
+
require 'support/shared_context/with_database_records'
|
4
5
|
|
5
6
|
RSpec.describe Rating::Rating, ':values_data' do
|
6
|
-
|
7
|
-
|
8
|
-
let!(:user_1) { create :user }
|
9
|
-
let!(:user_2) { create :user }
|
10
|
-
|
11
|
-
let!(:article_1) { create :article }
|
12
|
-
let!(:article_2) { create :article }
|
13
|
-
let!(:article_3) { create :article }
|
14
|
-
|
15
|
-
before do
|
16
|
-
create :rating_rate, author: user_1, resource: article_1, value: 100
|
17
|
-
create :rating_rate, author: user_1, resource: article_2, value: 11
|
18
|
-
create :rating_rate, author: user_1, resource: article_3, value: 10
|
19
|
-
create :rating_rate, author: user_2, resource: article_1, value: 4
|
20
|
-
|
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
|
23
|
-
end
|
7
|
+
include_context 'with_database_records'
|
24
8
|
|
25
9
|
context 'with no scopeable' do
|
26
|
-
subject { described_class.values_data article_1, nil }
|
10
|
+
subject(:result) { described_class.values_data article_1, nil }
|
27
11
|
|
28
12
|
it 'returns the average of value for a resource' do
|
29
|
-
expect(
|
13
|
+
expect(result.as_json['rating_avg']).to eq 50.5
|
30
14
|
end
|
31
15
|
|
32
16
|
it 'returns the sum of values for a resource' do
|
33
|
-
expect(
|
17
|
+
expect(result.as_json['rating_sum']).to eq 101
|
34
18
|
end
|
35
19
|
|
36
20
|
it 'returns the count of votes for a resource' do
|
37
|
-
expect(
|
21
|
+
expect(result.as_json['rating_count']).to eq 2
|
38
22
|
end
|
39
23
|
end
|
40
24
|
|
41
25
|
context 'with scopeable' do
|
42
|
-
subject { described_class.values_data article_1, category }
|
26
|
+
subject(:result) { described_class.values_data article_1, category }
|
43
27
|
|
44
28
|
it 'returns the average of value for a resource' do
|
45
|
-
expect(
|
29
|
+
expect(result.as_json['rating_avg']).to eq 1.5
|
46
30
|
end
|
47
31
|
|
48
32
|
it 'returns the sum of values for a resource' do
|
49
|
-
expect(
|
33
|
+
expect(result.as_json['rating_sum']).to eq 3
|
50
34
|
end
|
51
35
|
|
52
36
|
it 'returns the count of votes for a resource' do
|
53
|
-
expect(
|
37
|
+
expect(result.as_json['rating_count']).to eq 2
|
54
38
|
end
|
55
39
|
end
|
56
40
|
end
|
data/spec/models/rating_spec.rb
CHANGED
@@ -15,4 +15,10 @@ RSpec.describe Rating::Rating do
|
|
15
15
|
it { is_expected.to validate_presence_of :resource }
|
16
16
|
it { is_expected.to validate_presence_of :sum }
|
17
17
|
it { is_expected.to validate_presence_of :total }
|
18
|
+
|
19
|
+
it do
|
20
|
+
expect(object).to validate_uniqueness_of(:resource_id)
|
21
|
+
.scoped_to(%i[resource_type scopeable_id scopeable_type])
|
22
|
+
.case_insensitive
|
23
|
+
end
|
18
24
|
end
|
File without changes
|
data/spec/support/migrate.rb
CHANGED
@@ -2,8 +2,10 @@
|
|
2
2
|
|
3
3
|
require File.expand_path('../../lib/generators/rating/templates/db/migrate/create_rating_tables.rb', __dir__)
|
4
4
|
|
5
|
+
Dir[File.expand_path('db/migrate/*.rb', __dir__)].each { |file| require file }
|
6
|
+
|
5
7
|
CreateArticlesTable.new.change
|
6
8
|
CreateAuthorsTable.new.change
|
7
9
|
CreateCategoriesTable.new.change
|
8
10
|
CreateRatingTables.new.change
|
9
|
-
|
11
|
+
AddCommentOnRatingRatesTable.new.change
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.shared_context 'with_database_records' do
|
4
|
+
let!(:category) { create :category }
|
5
|
+
|
6
|
+
let!(:author_1) { create :author }
|
7
|
+
let!(:author_2) { create :author }
|
8
|
+
|
9
|
+
let!(:article_1) { create :article }
|
10
|
+
let!(:article_2) { create :article }
|
11
|
+
let!(:article_3) { create :article }
|
12
|
+
|
13
|
+
let!(:rate_1) { create :rating_rate, author: author_1, resource: article_1, value: 100 }
|
14
|
+
let!(:rate_2) { create :rating_rate, author: author_1, resource: article_2, value: 11 }
|
15
|
+
let!(:rate_3) { create :rating_rate, author: author_1, resource: article_3, value: 10 }
|
16
|
+
let!(:rate_4) { create :rating_rate, author: author_2, resource: article_1, value: 1 }
|
17
|
+
|
18
|
+
let!(:rate_5) { create :rating_rate, author: author_1, resource: article_1, scopeable: category, value: 1 }
|
19
|
+
let!(:rate_6) { create :rating_rate, author: author_2, resource: article_1, scopeable: category, value: 2 }
|
20
|
+
end
|
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rating
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.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:
|
11
|
+
date: 2018-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: activerecord
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
@@ -149,7 +149,6 @@ files:
|
|
149
149
|
- spec/factories/category.rb
|
150
150
|
- spec/factories/rating/rate.rb
|
151
151
|
- spec/factories/rating/rating.rb
|
152
|
-
- spec/factories/user.rb
|
153
152
|
- spec/models/extension/after_create_spec.rb
|
154
153
|
- spec/models/extension/order_by_rating_spec.rb
|
155
154
|
- spec/models/extension/rate_for_spec.rb
|
@@ -172,16 +171,16 @@ files:
|
|
172
171
|
- spec/rails_helper.rb
|
173
172
|
- spec/support/common.rb
|
174
173
|
- spec/support/database_cleaner.rb
|
174
|
+
- spec/support/db/migrate/add_comment_on_rating_rates_table.rb
|
175
175
|
- spec/support/db/migrate/create_articles_table.rb
|
176
176
|
- spec/support/db/migrate/create_authors_table.rb
|
177
|
-
- spec/support/db/migrate/
|
178
|
-
- spec/support/db/migrate/create_users_table.rb
|
177
|
+
- spec/support/db/migrate/create_categories_table.rb
|
179
178
|
- spec/support/factory_bot.rb
|
180
179
|
- spec/support/migrate.rb
|
181
180
|
- spec/support/models/article.rb
|
182
181
|
- spec/support/models/author.rb
|
183
182
|
- spec/support/models/category.rb
|
184
|
-
- spec/support/
|
183
|
+
- spec/support/shared_context/with_database_records.rb
|
185
184
|
- spec/support/shoulda.rb
|
186
185
|
homepage: https://github.com/wbotelhos/rating
|
187
186
|
licenses:
|
@@ -208,42 +207,41 @@ signing_key:
|
|
208
207
|
specification_version: 4
|
209
208
|
summary: A true Bayesian rating system with scope and cache enabled.
|
210
209
|
test_files:
|
211
|
-
- spec/factories/article.rb
|
212
|
-
- spec/factories/author.rb
|
213
|
-
- spec/factories/category.rb
|
214
|
-
- spec/factories/rating/rate.rb
|
215
|
-
- spec/factories/rating/rating.rb
|
216
|
-
- spec/factories/user.rb
|
217
|
-
- spec/models/extension/after_create_spec.rb
|
218
|
-
- spec/models/extension/order_by_rating_spec.rb
|
219
|
-
- spec/models/extension/rate_for_spec.rb
|
220
|
-
- spec/models/extension/rate_spec.rb
|
221
|
-
- spec/models/extension/rated_question_spec.rb
|
222
|
-
- spec/models/extension/rated_records_spec.rb
|
223
|
-
- spec/models/extension/rated_spec.rb
|
224
|
-
- spec/models/extension/rates_records_spec.rb
|
225
|
-
- spec/models/extension/rates_spec.rb
|
226
|
-
- spec/models/extension/rating_records_spec.rb
|
227
|
-
- spec/models/extension/rating_spec.rb
|
228
|
-
- spec/models/rate/create_spec.rb
|
229
210
|
- spec/models/rate/rate_for_spec.rb
|
230
|
-
- spec/models/
|
211
|
+
- spec/models/rate/create_spec.rb
|
231
212
|
- spec/models/rating/averager_data_spec.rb
|
232
213
|
- spec/models/rating/data_spec.rb
|
233
214
|
- spec/models/rating/update_rating_spec.rb
|
234
215
|
- spec/models/rating/values_data_spec.rb
|
216
|
+
- spec/models/extension/rated_records_spec.rb
|
217
|
+
- spec/models/extension/rating_spec.rb
|
218
|
+
- spec/models/extension/rated_question_spec.rb
|
219
|
+
- spec/models/extension/order_by_rating_spec.rb
|
220
|
+
- spec/models/extension/rate_spec.rb
|
221
|
+
- spec/models/extension/rate_for_spec.rb
|
222
|
+
- spec/models/extension/after_create_spec.rb
|
223
|
+
- spec/models/extension/rates_spec.rb
|
224
|
+
- spec/models/extension/rating_records_spec.rb
|
225
|
+
- spec/models/extension/rated_spec.rb
|
226
|
+
- spec/models/extension/rates_records_spec.rb
|
235
227
|
- spec/models/rating_spec.rb
|
236
|
-
- spec/
|
237
|
-
- spec/support/common.rb
|
238
|
-
- spec/support/database_cleaner.rb
|
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
|
242
|
-
- spec/support/db/migrate/create_users_table.rb
|
243
|
-
- spec/support/factory_bot.rb
|
228
|
+
- spec/models/rate_spec.rb
|
244
229
|
- spec/support/migrate.rb
|
230
|
+
- spec/support/shoulda.rb
|
231
|
+
- spec/support/factory_bot.rb
|
245
232
|
- spec/support/models/article.rb
|
246
|
-
- spec/support/models/author.rb
|
247
233
|
- spec/support/models/category.rb
|
248
|
-
- spec/support/models/
|
249
|
-
- spec/support/
|
234
|
+
- spec/support/models/author.rb
|
235
|
+
- spec/support/common.rb
|
236
|
+
- spec/support/db/migrate/create_categories_table.rb
|
237
|
+
- spec/support/db/migrate/create_authors_table.rb
|
238
|
+
- spec/support/db/migrate/create_articles_table.rb
|
239
|
+
- spec/support/db/migrate/add_comment_on_rating_rates_table.rb
|
240
|
+
- spec/support/database_cleaner.rb
|
241
|
+
- spec/support/shared_context/with_database_records.rb
|
242
|
+
- spec/factories/article.rb
|
243
|
+
- spec/factories/category.rb
|
244
|
+
- spec/factories/rating/rate.rb
|
245
|
+
- spec/factories/rating/rating.rb
|
246
|
+
- spec/factories/author.rb
|
247
|
+
- spec/rails_helper.rb
|