Skip to content

Commit

Permalink
Fix decision factories to take into account STI
Browse files Browse the repository at this point in the history
  • Loading branch information
danidoni committed Apr 18, 2024
1 parent 9f07a9e commit 351a34c
Show file tree
Hide file tree
Showing 8 changed files with 26 additions and 24 deletions.
2 changes: 1 addition & 1 deletion 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 }
Expand Down
2 changes: 1 addition & 1 deletion 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
Expand Down
@@ -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
10 changes: 10 additions & 0 deletions 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
4 changes: 2 additions & 2 deletions src/api/spec/factories/notification.rb
Expand Up @@ -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
Expand All @@ -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
Expand Down
8 changes: 4 additions & 4 deletions src/api/spec/mailers/event_mailer_spec.rb
Expand Up @@ -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 }

Expand Down Expand Up @@ -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 }

Expand Down Expand Up @@ -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 }
Expand Down Expand Up @@ -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 }
Expand Down
4 changes: 2 additions & 2 deletions 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
Expand All @@ -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) }
Expand Down
10 changes: 5 additions & 5 deletions src/api/spec/policies/appeal_policy_spec.rb
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down

0 comments on commit 351a34c

Please sign in to comment.