# frozen_string_literal: true

describe InvitationCode, :type => :model do
  it 'has a valid factory' do
    expect(FactoryBot.build(:invitation_code)).to be_valid
  end

  it 'sets the count to a default value' do
    code = FactoryBot.create(:invitation_code)
    expect(code.count).to be > 0
  end

  describe '#use!' do
    it 'decrements the count of the code' do
      code = FactoryBot.create(:invitation_code)

      expect{
        code.use!
      }.to change(code, :count).by(-1)
    end
  end

  describe '.default_inviter_or' do
    it 'grabs the set admin account for the pod...' do
      AppConfig.admins.account = 'bob'
      expect(InvitationCode.default_inviter_or(alice).username).to eq('bob')
    end

    it '..or the given user' do
      AppConfig.admins.account = ''
      expect(InvitationCode.default_inviter_or(alice).username).to eq('alice')
    end
  end
end
