spec/models/rating/update_rating_spec.rb in rating-0.1.0 vs spec/models/rating/update_rating_spec.rb in rating-0.2.0

- old
+ new

@@ -1,10 +1,12 @@ # frozen_string_literal: true require 'rails_helper' RSpec.describe Rating::Rating, ':update_rating' do + let!(:category) { create :category } + let!(:user_1) { create :user } let!(:user_2) { create :user } let!(:article_1) { create :article } let!(:article_2) { create :article } @@ -13,16 +15,32 @@ before do create :rating_rate, author: user_1, resource: article_1, value: 100 create :rating_rate, author: user_1, resource: article_2, value: 11 create :rating_rate, author: user_1, resource: article_3, value: 10 create :rating_rate, author: user_2, resource: article_1, value: 1 + + create :rating_rate, author: user_1, resource: article_1, scopeable: category, value: 1 + create :rating_rate, author: user_2, resource: article_1, scopeable: category, value: 2 end - it 'updates the rating data of the given resource' do - record = described_class.find_by(resource: article_1) + context 'with no scopeable' do + it 'updates the rating data of the given resource' do + record = described_class.find_by(resource: article_1) - expect(record.average).to eq 50.50000000000001 - expect(record.estimate).to eq 42.50000000000001 - expect(record.sum).to eq 101 - expect(record.total).to eq 2 + expect(record.average).to eq 50.50000000000001 + expect(record.estimate).to eq 42.50000000000001 + expect(record.sum).to eq 101 + expect(record.total).to eq 2 + end + end + + context 'with scopeable' do + it 'updates the rating data of the given resource respecting the scope' do + record = described_class.find_by(resource: article_1, scopeable: category) + + expect(record.average).to eq 1.5 + expect(record.estimate).to eq 1.5 + expect(record.sum).to eq 3 + expect(record.total).to eq 2 + end end end