diaspora/spec/models/share_visibility_spec.rb
Benjamin Neff 3f2586bc6f
Create share visibilities for photos attached to a private post
Also fixed the "fix public photos"-migration, because it didn't work
with migration-models :/

fixes #6177
2016-09-20 04:24:37 +02:00

55 lines
1.9 KiB
Ruby

# Copyright (c) 2010-2011, Diaspora Inc. This file is
# licensed under the Affero General Public License version 3 or later. See
# the COPYRIGHT file.
require "spec_helper"
describe ShareVisibility, type: :model do
describe ".batch_import" do
let(:post) { FactoryGirl.create(:status_message, author: alice.person) }
it "returns false if share is public" do
post.public = true
post.save
expect(ShareVisibility.batch_import([bob.id], post)).to be false
end
it "creates a visibility for each user" do
expect {
ShareVisibility.batch_import([bob.id], post)
}.to change {
ShareVisibility.exists?(user_id: bob.id, shareable_id: post.id, shareable_type: "Post")
}.from(false).to(true)
end
it "does not raise if a visibility already exists" do
ShareVisibility.create!(user_id: bob.id, shareable_id: post.id, shareable_type: "Post")
expect {
ShareVisibility.batch_import([bob.id], post)
}.not_to raise_error
end
it "does not create visibilities for a public shareable" do
public_post = FactoryGirl.create(:status_message, author: alice.person, public: true)
ShareVisibility.batch_import([bob.id], public_post)
expect(ShareVisibility.where(user_id: bob.id, shareable_id: post.id, shareable_type: "Post")).not_to exist
end
context "scopes" do
before do
alice.post(:status_message, text: "Hey", to: alice.aspects.first)
photo_path = File.join(File.dirname(__FILE__), "..", "fixtures", "button.png")
alice.post(:photo, user_file: File.open(photo_path), text: "Photo", to: alice.aspects.first)
end
describe ".for_a_user" do
it "searches for share visibilies for a user" do
expect(ShareVisibility.for_a_user(bob).count).to eq(2)
expect(ShareVisibility.for_a_user(bob)).to eq(ShareVisibility.where(user_id: bob.id).to_a)
end
end
end
end
end