require 'rails_helper'

describe PostActionUsersController do
  let!(:post) { Fabricate(:post, user: log_in) }

  it 'raises an error without an id' do
    expect {
      xhr :get, :index, post_action_type_id: PostActionType.types[:like]
    }.to raise_error(ActionController::ParameterMissing)
  end

  it 'raises an error without a post action type' do
    expect {
      xhr :get, :index, id: post.id
    }.to raise_error(ActionController::ParameterMissing)
  end

  it "fails when the user doesn't have permission to see the post" do
    Guardian.any_instance.expects(:can_see?).with(post).returns(false)
    xhr :get, :index, id: post.id, post_action_type_id: PostActionType.types[:like]
    expect(response).to be_forbidden
  end

  it 'raises an error when the post action type cannot be seen' do
    Guardian.any_instance.expects(:can_see_post_actors?).with(instance_of(Topic), PostActionType.types[:like]).returns(false)
    xhr :get, :index, id: post.id, post_action_type_id: PostActionType.types[:like]
    expect(response).to be_forbidden
  end

  it 'succeeds' do
    xhr :get, :index, id: post.id, post_action_type_id: PostActionType.types[:like]
    expect(response).to be_success
  end
end