Create RelatedContent model spec to check relationable destroy
This commit is contained in:
@@ -2,6 +2,6 @@ module Relationable
|
|||||||
extend ActiveSupport::Concern
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
included do
|
included do
|
||||||
has_many :related_contents, as: :parent_relationable
|
has_many :related_contents, as: :parent_relationable, dependent: :destroy
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ class RelatedContent < ActiveRecord::Base
|
|||||||
validates :parent_relationable_id, uniqueness: { scope: [:parent_relationable_type, :child_relationable_id, :child_relationable_type] }
|
validates :parent_relationable_id, uniqueness: { scope: [:parent_relationable_type, :child_relationable_id, :child_relationable_type] }
|
||||||
|
|
||||||
after_create :create_opposite_related_content, unless: proc { opposite_related_content.present? }
|
after_create :create_opposite_related_content, unless: proc { opposite_related_content.present? }
|
||||||
|
after_destroy :destroy_opposite_related_content, if: proc { opposite_related_content.present? }
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
@@ -18,4 +19,7 @@ class RelatedContent < ActiveRecord::Base
|
|||||||
self.opposite_related_content = related_content
|
self.opposite_related_content = related_content
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def destroy_opposite_related_content
|
||||||
|
opposite_related_content.destroy
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -38,4 +38,14 @@ describe RelatedContent do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe 'relationable destroy' do
|
||||||
|
let(:parent_relationable) { create(:proposal) }
|
||||||
|
let(:child_relationable) { create(:debate) }
|
||||||
|
|
||||||
|
it 'destroys both related contents involved' do
|
||||||
|
related_content = create(:related_content, parent_relationable: parent_relationable, child_relationable: child_relationable)
|
||||||
|
expect { related_content.parent_relationable.destroy }.to change { RelatedContent.all.count }.by(-2)
|
||||||
|
expect(child_relationable.related_contents).to be_empty
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user