From 351a34ce493344908358cd75121a9ec3c1cf0b2c Mon Sep 17 00:00:00 2001 From: Dani Donisa Date: Thu, 18 Apr 2024 17:07:40 +0200 Subject: [PATCH] Fix decision factories to take into account STI --- src/api/app/models/decision.rb | 2 +- src/api/spec/factories/appeal.rb | 2 +- .../factories/{decisions.rb => decision_cleared.rb} | 10 +--------- src/api/spec/factories/decision_favored.rb | 10 ++++++++++ src/api/spec/factories/notification.rb | 4 ++-- src/api/spec/mailers/event_mailer_spec.rb | 8 ++++---- src/api/spec/models/report_spec.rb | 4 ++-- src/api/spec/policies/appeal_policy_spec.rb | 10 +++++----- 8 files changed, 26 insertions(+), 24 deletions(-) rename src/api/spec/factories/{decisions.rb => decision_cleared.rb} (61%) create mode 100644 src/api/spec/factories/decision_favored.rb diff --git a/src/api/app/models/decision.rb b/src/api/app/models/decision.rb index 139380590b2d..c27f93a383f3 100644 --- a/src/api/app/models/decision.rb +++ b/src/api/app/models/decision.rb @@ -1,5 +1,5 @@ class Decision < ApplicationRecord - TYPES = [DecisionFavored, DecisionCleared].freeze + TYPES = [::DecisionFavored, ::DecisionCleared].freeze validates :reason, presence: true, length: { maximum: 65_535 } validates :type, presence: true, length: { maximum: 255 } diff --git a/src/api/spec/factories/appeal.rb b/src/api/spec/factories/appeal.rb index bb6c045d047d..61dbd7823347 100644 --- a/src/api/spec/factories/appeal.rb +++ b/src/api/spec/factories/appeal.rb @@ -1,6 +1,6 @@ FactoryBot.define do factory :appeal do - decision + decision { association :decision_cleared } appellant { association :confirmed_user } reason { 'Some random reason' } end diff --git a/src/api/spec/factories/decisions.rb b/src/api/spec/factories/decision_cleared.rb similarity index 61% rename from src/api/spec/factories/decisions.rb rename to src/api/spec/factories/decision_cleared.rb index 518af546282f..decca72e2cae 100644 --- a/src/api/spec/factories/decisions.rb +++ b/src/api/spec/factories/decision_cleared.rb @@ -1,18 +1,10 @@ FactoryBot.define do - factory :decision do + factory :decision_cleared do moderator factory: [:user] reason { Faker::Markdown.emphasis } after(:build) do |decision| decision.reports << create(:report, reason: 'This is spam!') if decision.reports.empty? end - - trait :cleared do - type { 'DecisionCleared' } - end - - trait :favored do - type { 'DecisionFavored' } - end end end diff --git a/src/api/spec/factories/decision_favored.rb b/src/api/spec/factories/decision_favored.rb new file mode 100644 index 000000000000..37057db116f8 --- /dev/null +++ b/src/api/spec/factories/decision_favored.rb @@ -0,0 +1,10 @@ +FactoryBot.define do + factory :decision_favored do + moderator factory: [:user] + reason { Faker::Markdown.emphasis } + + after(:build) do |decision| + decision.reports << create(:report, reason: 'This is spam!') if decision.reports.empty? + end + end +end diff --git a/src/api/spec/factories/notification.rb b/src/api/spec/factories/notification.rb index 77d9ac6d7ba1..ee9f012a741e 100644 --- a/src/api/spec/factories/notification.rb +++ b/src/api/spec/factories/notification.rb @@ -94,7 +94,7 @@ trait :cleared_decision do event_type { 'Event::ClearedDecision' } - notifiable { association(:decision, :cleared) } + notifiable { association(:decision_cleared) } after(:build) do |notification| notification.event_payload['reportable_type'] ||= notification.notifiable.reports.first.reportable.class.to_s @@ -103,7 +103,7 @@ trait :favored_decision do event_type { 'Event::FavoredDecision' } - notifiable { association(:decision, :favored) } + notifiable { association(:decision_favored) } after(:build) do |notification| notification.event_payload['reportable_type'] ||= notification.notifiable.reports.first.reportable.class.to_s diff --git a/src/api/spec/mailers/event_mailer_spec.rb b/src/api/spec/mailers/event_mailer_spec.rb index 34ec31e82a5d..81cfb3d1b3bf 100644 --- a/src/api/spec/mailers/event_mailer_spec.rb +++ b/src/api/spec/mailers/event_mailer_spec.rb @@ -449,7 +449,7 @@ let(:report) { create(:report, user: reporter) } let(:package) { report.reportable.commentable } let!(:subscription) { create(:event_subscription_cleared_decision, user: reporter) } - let(:decision) { create(:decision, :cleared, moderator: admin, reason: 'This is NOT spam.', reports: [report]) } + let(:decision) { create(:decision_cleared, moderator: admin, reason: 'This is NOT spam.', reports: [report]) } let(:event) { Event::ClearedDecision.last } let(:mail) { EventMailer.with(subscribers: event.subscribers, event: event).notification_email.deliver_now } @@ -492,7 +492,7 @@ let!(:reporter_subscription) { create(:event_subscription_favored_decision, user: reporter) } let!(:offender_subscription) { create(:event_subscription_favored_decision, user: offender, receiver_role: 'offender') } - let(:decision) { create(:decision, :favored, moderator: admin, reason: 'This is spam for sure.', reports: [report]) } + let(:decision) { create(:decision_favored, moderator: admin, reason: 'This is spam for sure.', reports: [report]) } let(:event) { Event::FavoredDecision.last } let(:mail) { EventMailer.with(subscribers: event.subscribers, event: event).notification_email.deliver_now } @@ -535,7 +535,7 @@ let!(:moderator_subscription) { create(:event_subscription_appeal_created, user: moderator) } - let(:decision) { create(:decision, :favored, moderator: moderator, reason: 'This is spam for sure.', reports: [report]) } + let(:decision) { create(:decision_favored, moderator: moderator, reason: 'This is spam for sure.', reports: [report]) } let(:appeal) { create(:appeal, appellant: appellant, decision: decision, reason: 'I strongly disagree!') } let(:event) { Event::AppealCreated.last } let(:mail) { EventMailer.with(subscribers: event.subscribers, event: event).notification_email.deliver_now } @@ -579,7 +579,7 @@ let!(:moderator_subscription) { create(:event_subscription_appeal_created, user: moderator) } - let(:decision) { create(:decision, :favored, moderator: moderator, reason: 'This is spam for sure.', reports: [report]) } + let(:decision) { create(:decision_favored, moderator: moderator, reason: 'This is spam for sure.', reports: [report]) } let(:appeal) { create(:appeal, appellant: appellant, decision: decision, reason: 'I strongly disagree!') } let(:event) { Event::AppealCreated.last } let(:mail) { EventMailer.with(subscribers: event.subscribers, event: event).notification_email.deliver_now } diff --git a/src/api/spec/models/report_spec.rb b/src/api/spec/models/report_spec.rb index ab9a44026ddf..ff4daa245b12 100644 --- a/src/api/spec/models/report_spec.rb +++ b/src/api/spec/models/report_spec.rb @@ -1,7 +1,7 @@ RSpec.describe Report do describe '#reports_pointing_to_same_reportable' do context 'when different reportables' do - let(:decision) { create(:decision) } + let(:decision) { create(:decision_cleared) } let(:report) { build(:report, decision: decision) } before do @@ -14,7 +14,7 @@ context 'when reports are pointing to same reportable' do let(:report) { create(:report) } - let(:decision) { create(:decision, reports: [report]) } + let(:decision) { create(:decision_cleared, reports: [report]) } let(:new_report) { build(:report, reportable: report.reportable, decision: decision) } it { expect(new_report.valid?).to be(true) } diff --git a/src/api/spec/policies/appeal_policy_spec.rb b/src/api/spec/policies/appeal_policy_spec.rb index c425ac94f951..4c320ad39ad3 100644 --- a/src/api/spec/policies/appeal_policy_spec.rb +++ b/src/api/spec/policies/appeal_policy_spec.rb @@ -40,7 +40,7 @@ context 'when the decision cleared a report created by the reporter' do let(:report) { create(:report) } let(:reporter) { report.user } - let(:decision) { create(:decision, type: 'DecisionCleared', reports: [report]) } + let(:decision) { create(:decision_cleared, reports: [report]) } let(:appeal) { create(:appeal, decision: decision, appellant: reporter) } permissions :create? do @@ -56,7 +56,7 @@ context 'when the decision is on reports for a now-deleted reportable' do let(:report) { create(:report) } let(:reporter) { report.user } - let(:decision) { create(:decision, type: 'DecisionFavored', reports: [report]) } + let(:decision) { create(:decision_favored, reports: [report]) } let(:appeal) { create(:appeal, decision: decision, appellant: reporter) } before do @@ -76,7 +76,7 @@ context 'when the decision favored a report created by the reporter' do let(:report) { create(:report) } let(:reporter) { report.user } - let(:decision) { create(:decision, type: 'DecisionFavored', reports: [report]) } + let(:decision) { create(:decision_favored, reports: [report]) } let(:appeal) { create(:appeal, decision: decision, appellant: reporter) } permissions :create? do @@ -91,7 +91,7 @@ context 'when the decision cleared a report for something the appellant did' do let(:report) { create(:report, reportable: create(:comment_package, user: appellant)) } - let(:decision) { create(:decision, type: 'DecisionCleared', reports: [report]) } + let(:decision) { create(:decision_cleared, reports: [report]) } let(:appeal) { create(:appeal, decision: decision, appellant: appellant) } permissions :create? do @@ -106,7 +106,7 @@ context 'when the decision favored a report for something the appellant did' do let(:report) { create(:report, reportable: create(:comment_package, user: appellant)) } - let(:decision) { create(:decision, type: 'DecisionFavored', reports: [report]) } + let(:decision) { create(:decision_favored, reports: [report]) } let(:appeal) { create(:appeal, decision: decision, appellant: appellant) } permissions :create? do