# == Schema Information
#
# Table name: bans
#
#  id         :integer          not null, primary key
#  steamid    :string(255)
#  user_id    :integer
#  addr       :string(255)
#  server_id  :integer
#  expiry     :datetime
#  reason     :string(255)
#  created_at :datetime
#  updated_at :datetime
#  ban_type   :integer
#  ip         :string(255)
#

require "spec_helper"

describe Ban do
  let!(:user) { create :user }
  let(:ban) { Ban.new }
  let!(:server) { create :server }

  describe "#check_user" do
    it "assigns user by user_name" do
      ban.user_name = user.username
      ban.check_user

      expect(ban.user).to eq(user)
    end

    it "assigns user and server if user_name not present" do
      ban.steamid = user.steamid
      ban.addr = server.addr
      ban.check_user

      expect(ban.user).to eq(user)
      expect(ban.server).to eq(server)
    end
  end

  describe "Permissions" do
    let!(:user) { create :user }
    let!(:admin) { create :user, :admin }
    let!(:server_user) { create :user }
    let(:ban) { Ban.new }

    describe "can_create?" do
      it "returns true for admins" do
        expect(ban.can_create? admin).to be_truthy
      end

      it "returns false for non-admins" do
        expect(ban.can_create? user).to be_falsey
      end
    end

    describe "can_destroy?" do
      it "returns true for admin" do
        expect(ban.can_destroy? admin).to be_truthy
      end

      it "returns false for non-admins" do
        expect(ban.can_destroy? user).to be_falsey
      end
    end

    describe "can_update?" do
      it "returns true for admin" do
        expect(ban.can_update? admin).to be_truthy
      end

      it "returns false for non-admins" do
        expect(ban.can_update? user).to be_falsey
      end
    end
  end
end