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,14 +3,14 @@
|
|
3
3
|
require 'rails_helper'
|
4
4
|
|
5
5
|
RSpec.describe Rating::Extension, ':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
|
it 'delegates to rate object' do
|
11
|
-
expect(Rating::Rate).to receive(:rate_for).with author:
|
11
|
+
expect(Rating::Rate).to receive(:rate_for).with author: author, resource: article, scopeable: nil
|
12
12
|
|
13
|
-
|
13
|
+
author.rate_for article
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
@@ -18,9 +18,9 @@ RSpec.describe Rating::Extension, ':rate_for' do
|
|
18
18
|
let!(:category) { build :category }
|
19
19
|
|
20
20
|
it 'delegates to rate object' do
|
21
|
-
expect(Rating::Rate).to receive(:rate_for).with author:
|
21
|
+
expect(Rating::Rate).to receive(:rate_for).with author: author, resource: article, scopeable: category
|
22
22
|
|
23
|
-
|
23
|
+
author.rate_for article, scope: category
|
24
24
|
end
|
25
25
|
end
|
26
26
|
end
|
@@ -3,14 +3,16 @@
|
|
3
3
|
require 'rails_helper'
|
4
4
|
|
5
5
|
RSpec.describe Rating::Extension, ':rate' 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
|
it 'delegates to rate object' do
|
11
|
-
expect(Rating::Rate).to receive(:create).with
|
11
|
+
expect(Rating::Rate).to receive(:create).with(
|
12
|
+
author: author, metadata: {}, resource: article, scopeable: nil, value: 3
|
13
|
+
)
|
12
14
|
|
13
|
-
|
15
|
+
author.rate article, 3
|
14
16
|
end
|
15
17
|
end
|
16
18
|
|
@@ -18,9 +20,33 @@ RSpec.describe Rating::Extension, ':rate' do
|
|
18
20
|
let!(:category) { build :category }
|
19
21
|
|
20
22
|
it 'delegates to rate object' do
|
21
|
-
expect(Rating::Rate).to receive(:create).with
|
23
|
+
expect(Rating::Rate).to receive(:create).with(
|
24
|
+
author: author, metadata: {}, resource: article, scopeable: category, value: 3
|
25
|
+
)
|
22
26
|
|
23
|
-
|
27
|
+
author.rate article, 3, scope: category
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'with no metadata' do
|
32
|
+
it 'delegates an empty hash to rate object' do
|
33
|
+
expect(Rating::Rate).to receive(:create).with(
|
34
|
+
author: author, resource: article, metadata: {}, scopeable: nil, value: 3
|
35
|
+
)
|
36
|
+
|
37
|
+
author.rate article, 3
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context 'with metadata' do
|
42
|
+
let!(:category) { build :category }
|
43
|
+
|
44
|
+
it 'delegates to rate object' do
|
45
|
+
expect(Rating::Rate).to receive(:create).with(
|
46
|
+
author: author, metadata: { comment: 'comment' }, resource: article, scopeable: nil, value: 3
|
47
|
+
)
|
48
|
+
|
49
|
+
author.rate article, 3, metadata: { comment: 'comment' }
|
24
50
|
end
|
25
51
|
end
|
26
52
|
end
|
@@ -3,20 +3,20 @@
|
|
3
3
|
require 'rails_helper'
|
4
4
|
|
5
5
|
RSpec.describe Rating::Extension, ':rated?' 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 has no rate for the given resource' do
|
11
|
-
before { allow(
|
11
|
+
before { allow(author).to receive(:rate_for).with(article, scope: nil).and_return nil }
|
12
12
|
|
13
|
-
specify { expect(
|
13
|
+
specify { expect(author.rated?(article)).to eq false }
|
14
14
|
end
|
15
15
|
|
16
16
|
context 'when has rate for the given resource' do
|
17
|
-
before { allow(
|
17
|
+
before { allow(author).to receive(:rate_for).with(article, scope: nil).and_return double }
|
18
18
|
|
19
|
-
specify { expect(
|
19
|
+
specify { expect(author.rated?(article)).to eq true }
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
@@ -24,15 +24,15 @@ RSpec.describe Rating::Extension, ':rated?' do
|
|
24
24
|
let!(:category) { build :category }
|
25
25
|
|
26
26
|
context 'when has no rate for the given resource' do
|
27
|
-
before { allow(
|
27
|
+
before { allow(author).to receive(:rate_for).with(article, scope: category).and_return nil }
|
28
28
|
|
29
|
-
specify { expect(
|
29
|
+
specify { expect(author.rated?(article, scope: category)).to eq false }
|
30
30
|
end
|
31
31
|
|
32
32
|
context 'when has rate for the given resource' do
|
33
|
-
before { allow(
|
33
|
+
before { allow(author).to receive(:rate_for).with(article, scope: category).and_return double }
|
34
34
|
|
35
|
-
specify { expect(
|
35
|
+
specify { expect(author.rated?(article, scope: category)).to eq true }
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
@@ -1,26 +1,12 @@
|
|
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::Extension, '.rated_records' 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
|
-
let!(:rate_1) { create :rating_rate, author: user_1, resource: article_1, value: 100 }
|
16
|
-
let!(:rate_2) { create :rating_rate, author: user_1, resource: article_2, value: 11 }
|
17
|
-
let!(:rate_3) { create :rating_rate, author: user_1, resource: article_3, value: 10 }
|
18
|
-
let!(:rate_4) { create :rating_rate, author: user_2, resource: article_1, value: 1 }
|
19
|
-
|
20
|
-
let!(:rate_5) { create :rating_rate, author: user_1, resource: article_1, scopeable: category, value: 1 }
|
21
|
-
let!(:rate_6) { create :rating_rate, author: user_2, resource: article_1, scopeable: category, value: 2 }
|
7
|
+
include_context 'with_database_records'
|
22
8
|
|
23
9
|
it 'returns all rates that this author gave' do
|
24
|
-
expect(
|
10
|
+
expect(author_1.rated_records).to match_array [rate_1, rate_2, rate_3, rate_5]
|
25
11
|
end
|
26
12
|
end
|
@@ -1,57 +1,39 @@
|
|
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::Extension, ':rated' 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
|
-
let!(:rate_1) { create :rating_rate, author: user_1, resource: article_1, value: 100 }
|
16
|
-
let!(:rate_2) { create :rating_rate, author: user_1, resource: article_2, value: 11 }
|
17
|
-
let!(:rate_3) { create :rating_rate, author: user_1, resource: article_3, value: 10 }
|
18
|
-
let!(:rate_4) { create :rating_rate, author: user_2, resource: article_1, value: 1 }
|
19
|
-
|
20
|
-
let!(:rate_5) { create :rating_rate, author: user_1, resource: article_1, scopeable: category, value: 1 }
|
21
|
-
let!(:rate_6) { create :rating_rate, author: user_2, resource: article_1, scopeable: category, value: 2 }
|
7
|
+
include_context 'with_database_records'
|
22
8
|
|
23
9
|
context 'with no scope' do
|
24
10
|
it 'returns rates made by this author' do
|
25
|
-
expect(
|
11
|
+
expect(author_1.rated).to match_array [rate_1, rate_2, rate_3]
|
26
12
|
end
|
27
13
|
end
|
28
14
|
|
29
15
|
context 'with no scope' do
|
30
16
|
it 'returns scoped rates made by this author' do
|
31
|
-
expect(
|
17
|
+
expect(author_1.rated(scope: category)).to eq [rate_5]
|
32
18
|
end
|
33
19
|
end
|
34
20
|
|
35
21
|
context 'when destroy author' do
|
36
|
-
|
37
|
-
expect(Rating::Rate.where(author:
|
22
|
+
it 'destroys rates of that author' do
|
23
|
+
expect(Rating::Rate.where(author: author_1).count).to eq 4
|
38
24
|
|
39
|
-
|
40
|
-
end
|
25
|
+
author_1.destroy!
|
41
26
|
|
42
|
-
|
43
|
-
expect(Rating::Rate.where(author: user_1).count).to eq 0
|
27
|
+
expect(Rating::Rate.where(author: author_1).count).to eq 0
|
44
28
|
end
|
45
29
|
end
|
46
30
|
|
47
31
|
context 'when destroy resource rated by author' do
|
48
|
-
|
32
|
+
it 'destroys rates of that resource' do
|
49
33
|
expect(Rating::Rate.where(resource: article_1).count).to eq 4
|
50
34
|
|
51
35
|
article_1.destroy!
|
52
|
-
end
|
53
36
|
|
54
|
-
it 'destroys rates of that resource' do
|
55
37
|
expect(Rating::Rate.where(resource: article_1).count).to eq 0
|
56
38
|
end
|
57
39
|
end
|
@@ -1,24 +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::Extension, '.rates_records' 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
|
-
let!(:rate_1) { create :rating_rate, author: user_1, resource: article_1, value: 100 }
|
16
|
-
let!(:rate_2) { create :rating_rate, author: user_1, resource: article_2, value: 11 }
|
17
|
-
let!(:rate_3) { create :rating_rate, author: user_1, resource: article_3, value: 10 }
|
18
|
-
let!(:rate_4) { create :rating_rate, author: user_2, resource: article_1, value: 1 }
|
19
|
-
|
20
|
-
let!(:rate_5) { create :rating_rate, author: user_1, resource: article_1, scopeable: category, value: 1 }
|
21
|
-
let!(:rate_6) { create :rating_rate, author: user_2, resource: article_1, scopeable: category, value: 2 }
|
7
|
+
include_context 'with_database_records'
|
22
8
|
|
23
9
|
it 'returns all rates that this resource received' do
|
24
10
|
expect(article_1.rates_records).to match_array [rate_1, rate_4, rate_5, rate_6]
|
@@ -1,24 +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::Extension, ':rates' 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
|
-
let!(:rate_1) { create :rating_rate, author: user_1, resource: article_1, value: 100 }
|
16
|
-
let!(:rate_2) { create :rating_rate, author: user_1, resource: article_2, value: 11 }
|
17
|
-
let!(:rate_3) { create :rating_rate, author: user_1, resource: article_3, value: 10 }
|
18
|
-
let!(:rate_4) { create :rating_rate, author: user_2, resource: article_1, value: 1 }
|
19
|
-
|
20
|
-
let!(:rate_5) { create :rating_rate, author: user_1, resource: article_1, scopeable: category, value: 1 }
|
21
|
-
let!(:rate_6) { create :rating_rate, author: user_2, resource: article_1, scopeable: category, value: 2 }
|
7
|
+
include_context 'with_database_records'
|
22
8
|
|
23
9
|
context 'with no scope' do
|
24
10
|
it 'returns rates that this resource received' do
|
@@ -34,11 +20,11 @@ RSpec.describe Rating::Extension, ':rates' do
|
|
34
20
|
|
35
21
|
context 'when destroy author' do
|
36
22
|
it 'destroys rates of that author' do
|
37
|
-
expect(Rating::Rate.where(author:
|
23
|
+
expect(Rating::Rate.where(author: author_1).count).to eq 4
|
38
24
|
|
39
|
-
|
25
|
+
author_1.destroy!
|
40
26
|
|
41
|
-
expect(Rating::Rate.where(author:
|
27
|
+
expect(Rating::Rate.where(author: author_1).count).to eq 0
|
42
28
|
end
|
43
29
|
end
|
44
30
|
|
@@ -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::Extension, '.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
|
it 'returns all rating of this resource' do
|
26
10
|
expect(article_1.rating_records).to match_array Rating::Rating.where(resource: article_1)
|
@@ -1,24 +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::Extension, '.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
|
-
let!(:rate_1) { create :rating_rate, author: user_1, resource: article_1, value: 100 }
|
16
|
-
let!(:rate_2) { create :rating_rate, author: user_1, resource: article_2, value: 11 }
|
17
|
-
let!(:rate_3) { create :rating_rate, author: user_1, resource: article_3, value: 10 }
|
18
|
-
let!(:rate_4) { create :rating_rate, author: user_2, resource: article_1, value: 1 }
|
19
|
-
|
20
|
-
let!(:rate_5) { create :rating_rate, author: user_1, resource: article_1, scopeable: category, value: 1 }
|
21
|
-
let!(:rate_6) { create :rating_rate, author: user_2, resource: article_1, scopeable: category, value: 2 }
|
7
|
+
include_context 'with_database_records'
|
22
8
|
|
23
9
|
context 'with no scope' do
|
24
10
|
it 'returns rating record' do
|
@@ -36,7 +22,7 @@ RSpec.describe Rating::Extension, '.rating' do
|
|
36
22
|
it 'does not destroy resource rating' do
|
37
23
|
expect(Rating::Rating.where(resource: article_1).count).to eq 2
|
38
24
|
|
39
|
-
|
25
|
+
author_1.destroy!
|
40
26
|
|
41
27
|
expect(Rating::Rating.where(resource: article_1).count).to eq 2
|
42
28
|
end
|
@@ -3,17 +3,17 @@
|
|
3
3
|
require 'rails_helper'
|
4
4
|
|
5
5
|
RSpec.describe Rating::Rate, ':create' do
|
6
|
-
let!(:
|
6
|
+
let!(:author) { create :author }
|
7
7
|
let!(:article) { create :article }
|
8
8
|
|
9
9
|
context 'with no scopeable' do
|
10
|
-
before { create :
|
10
|
+
before { described_class.create author: author, metadata: {}, resource: article, value: 3 }
|
11
11
|
|
12
12
|
context 'when rate does not exist yet' do
|
13
13
|
it 'creates a rate entry' do
|
14
14
|
rate = described_class.last
|
15
15
|
|
16
|
-
expect(rate.author).to eq
|
16
|
+
expect(rate.author).to eq author
|
17
17
|
expect(rate.resource).to eq article
|
18
18
|
expect(rate.value).to eq 3
|
19
19
|
end
|
@@ -30,24 +30,24 @@ RSpec.describe Rating::Rate, ':create' do
|
|
30
30
|
end
|
31
31
|
|
32
32
|
context 'when rate already exists' do
|
33
|
-
let!(:
|
33
|
+
let!(:author_2) { create :author }
|
34
34
|
|
35
|
-
before { create :
|
35
|
+
before { described_class.create author: author_2, metadata: {}, resource: article, value: 4 }
|
36
36
|
|
37
37
|
it 'creates one more rate entry' do
|
38
|
-
rates = described_class.where(author: [
|
38
|
+
rates = described_class.where(author: [author, author_2]).order('created_at asc')
|
39
39
|
|
40
40
|
expect(rates.size).to eq 2
|
41
41
|
|
42
42
|
rate = rates[0]
|
43
43
|
|
44
|
-
expect(rate.author).to eq
|
44
|
+
expect(rate.author).to eq author
|
45
45
|
expect(rate.resource).to eq article
|
46
46
|
expect(rate.value).to eq 3
|
47
47
|
|
48
48
|
rate = rates[1]
|
49
49
|
|
50
|
-
expect(rate.author).to eq
|
50
|
+
expect(rate.author).to eq author_2
|
51
51
|
expect(rate.resource).to eq article
|
52
52
|
expect(rate.value).to eq 4
|
53
53
|
end
|
@@ -67,13 +67,13 @@ RSpec.describe Rating::Rate, ':create' do
|
|
67
67
|
context 'with scopeable' do
|
68
68
|
let!(:category) { create :category }
|
69
69
|
|
70
|
-
before { create :
|
70
|
+
before { described_class.create author: author, metadata: {}, resource: article, scopeable: category, value: 3 }
|
71
71
|
|
72
72
|
context 'when rate does not exist yet' do
|
73
73
|
it 'creates a rate entry' do
|
74
74
|
rate = described_class.last
|
75
75
|
|
76
|
-
expect(rate.author).to eq
|
76
|
+
expect(rate.author).to eq author
|
77
77
|
expect(rate.resource).to eq article
|
78
78
|
expect(rate.scopeable).to eq category
|
79
79
|
expect(rate.value).to eq 3
|
@@ -92,25 +92,25 @@ RSpec.describe Rating::Rate, ':create' do
|
|
92
92
|
end
|
93
93
|
|
94
94
|
context 'when rate already exists' do
|
95
|
-
let!(:
|
95
|
+
let!(:author_2) { create :author }
|
96
96
|
|
97
|
-
before { create :
|
97
|
+
before { described_class.create author: author_2, metadata: {}, resource: article, scopeable: category, value: 4 }
|
98
98
|
|
99
99
|
it 'creates one more rate entry' do
|
100
|
-
rates = described_class.where(author: [
|
100
|
+
rates = described_class.where(author: [author, author_2]).order('created_at asc')
|
101
101
|
|
102
102
|
expect(rates.size).to eq 2
|
103
103
|
|
104
104
|
rate = rates[0]
|
105
105
|
|
106
|
-
expect(rate.author).to eq
|
106
|
+
expect(rate.author).to eq author
|
107
107
|
expect(rate.resource).to eq article
|
108
108
|
expect(rate.scopeable).to eq category
|
109
109
|
expect(rate.value).to eq 3
|
110
110
|
|
111
111
|
rate = rates[1]
|
112
112
|
|
113
|
-
expect(rate.author).to eq
|
113
|
+
expect(rate.author).to eq author_2
|
114
114
|
expect(rate.resource).to eq article
|
115
115
|
expect(rate.scopeable).to eq category
|
116
116
|
expect(rate.value).to eq 4
|
@@ -128,4 +128,45 @@ RSpec.describe Rating::Rate, ':create' do
|
|
128
128
|
end
|
129
129
|
end
|
130
130
|
end
|
131
|
+
|
132
|
+
context 'with metadata' do
|
133
|
+
context 'with nil value' do
|
134
|
+
it 'creates a rate entry ignoring metadata' do
|
135
|
+
described_class.create author: author, metadata: nil, resource: article, value: 3
|
136
|
+
|
137
|
+
rate = described_class.last
|
138
|
+
|
139
|
+
expect(rate.author).to eq author
|
140
|
+
expect(rate.comment).to eq nil
|
141
|
+
expect(rate.resource).to eq article
|
142
|
+
expect(rate.value).to eq 3
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
context 'with empty value' do
|
147
|
+
it 'creates a rate entry ignoring metadata' do
|
148
|
+
described_class.create author: author, metadata: '', resource: article, value: 3
|
149
|
+
|
150
|
+
rate = described_class.last
|
151
|
+
|
152
|
+
expect(rate.author).to eq author
|
153
|
+
expect(rate.comment).to eq nil
|
154
|
+
expect(rate.resource).to eq article
|
155
|
+
expect(rate.value).to eq 3
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
context 'with hash value' do
|
160
|
+
it 'creates a rate entry with metadata included' do
|
161
|
+
described_class.create author: author, metadata: { comment: 'comment' }, resource: article, value: 3
|
162
|
+
|
163
|
+
rate = described_class.last
|
164
|
+
|
165
|
+
expect(rate.author).to eq author
|
166
|
+
expect(rate.comment).to eq 'comment'
|
167
|
+
expect(rate.resource).to eq article
|
168
|
+
expect(rate.value).to eq 3
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
131
172
|
end
|