Loading app/models/reshare.rb +1 −1 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ class Reshare < Post belongs_to :root, class_name: "Post", foreign_key: :root_guid, primary_key: :guid, optional: true validate :root_must_be_public validates_presence_of :root, :on => :create validates_uniqueness_of :root_guid, :scope => :author_id validates :root_guid, uniqueness: {scope: :author_id}, allow_nil: true delegate :author, to: :root, prefix: true before_validation do Loading spec/models/reshare_spec.rb +34 −8 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ describe Reshare, type: :model do expect(FactoryGirl.build(:reshare)).to be_valid end context "validation" do it "requires root" do reshare = FactoryGirl.build(:reshare, root: nil) expect(reshare).not_to be_valid Loading @@ -14,6 +15,31 @@ describe Reshare, type: :model do expect(reshare.errors[:base]).to include("Only posts which are public may be reshared.") end it "allows two reshares without a root" do reshare1 = FactoryGirl.create(:reshare, author: alice.person) reshare2 = FactoryGirl.create(:reshare, author: alice.person) reshare1.update_attributes(root_guid: nil) reshare2.root_guid = nil expect(reshare2).to be_valid end it "doesn't allow to reshare the same post twice" do post = FactoryGirl.create(:status_message, public: true) FactoryGirl.create(:reshare, author: alice.person, root: post) expect(FactoryGirl.build(:reshare, author: alice.person, root: post)).not_to be_valid end it "allows to reshare the same post with different people" do post = FactoryGirl.create(:status_message, public: true) FactoryGirl.create(:reshare, author: alice.person, root: post) expect(FactoryGirl.build(:reshare, author: bob.person, root: post)).to be_valid end end it "forces public" do expect(FactoryGirl.create(:reshare, public: false).public).to be true end Loading Loading
app/models/reshare.rb +1 −1 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ class Reshare < Post belongs_to :root, class_name: "Post", foreign_key: :root_guid, primary_key: :guid, optional: true validate :root_must_be_public validates_presence_of :root, :on => :create validates_uniqueness_of :root_guid, :scope => :author_id validates :root_guid, uniqueness: {scope: :author_id}, allow_nil: true delegate :author, to: :root, prefix: true before_validation do Loading
spec/models/reshare_spec.rb +34 −8 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ describe Reshare, type: :model do expect(FactoryGirl.build(:reshare)).to be_valid end context "validation" do it "requires root" do reshare = FactoryGirl.build(:reshare, root: nil) expect(reshare).not_to be_valid Loading @@ -14,6 +15,31 @@ describe Reshare, type: :model do expect(reshare.errors[:base]).to include("Only posts which are public may be reshared.") end it "allows two reshares without a root" do reshare1 = FactoryGirl.create(:reshare, author: alice.person) reshare2 = FactoryGirl.create(:reshare, author: alice.person) reshare1.update_attributes(root_guid: nil) reshare2.root_guid = nil expect(reshare2).to be_valid end it "doesn't allow to reshare the same post twice" do post = FactoryGirl.create(:status_message, public: true) FactoryGirl.create(:reshare, author: alice.person, root: post) expect(FactoryGirl.build(:reshare, author: alice.person, root: post)).not_to be_valid end it "allows to reshare the same post with different people" do post = FactoryGirl.create(:status_message, public: true) FactoryGirl.create(:reshare, author: alice.person, root: post) expect(FactoryGirl.build(:reshare, author: bob.person, root: post)).to be_valid end end it "forces public" do expect(FactoryGirl.create(:reshare, public: false).public).to be true end Loading