#   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 ShareVisibilitiesController do
  before do
    @status = alice.post(:status_message, :text => "hello", :to => alice.aspects.first)
    sign_in :user, bob
  end

  describe '#update' do
    context "on a post you can see" do
      it 'succeeds' do
        put :update, :format => :js, :id => 42, :post_id => @status.id
        response.should be_success
      end

      it 'it calls toggle_hidden_shareable' do
        @controller.current_user.should_receive(:toggle_hidden_shareable).with(an_instance_of(Post))
        put :update, :format => :js, :id => 42, :post_id => @status.id
      end
    end
  end
 
  describe "#accessible_post" do
    it "memoizes a query for a post given a post_id param" do
      id = 1
      @controller.params[:post_id] = id
      @controller.params[:shareable_type] = 'Post'

      Post.should_receive(:where).with(hash_including(:id => id)).once.and_return(stub.as_null_object)
      2.times do |n|
        @controller.send(:accessible_post)
      end
    end
  end
end
