2018-07-30 11:45:49 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
require 'spec_helper'
|
|
|
|
|
2020-06-16 14:09:01 -04:00
|
|
|
RSpec.describe UserFinder do
|
2019-10-09 20:06:44 -04:00
|
|
|
let_it_be(:user) { create(:user) }
|
2018-10-18 05:06:44 -04:00
|
|
|
|
|
|
|
describe '#find_by_id' do
|
|
|
|
context 'when the user exists' do
|
|
|
|
it 'returns the user' do
|
|
|
|
found = described_class.new(user.id).find_by_id
|
|
|
|
|
|
|
|
expect(found).to eq(user)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'when the user exists (id as string)' do
|
|
|
|
it 'returns the user' do
|
|
|
|
found = described_class.new(user.id.to_s).find_by_id
|
|
|
|
|
|
|
|
expect(found).to eq(user)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'when the user does not exist' do
|
|
|
|
it 'returns nil' do
|
2019-10-09 20:06:44 -04:00
|
|
|
found = described_class.new(-1).find_by_id
|
2018-10-18 05:06:44 -04:00
|
|
|
|
|
|
|
expect(found).to be_nil
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe '#find_by_username' do
|
2018-07-30 11:45:49 -04:00
|
|
|
context 'when the user exists' do
|
|
|
|
it 'returns the user' do
|
2018-10-18 05:06:44 -04:00
|
|
|
found = described_class.new(user.username).find_by_username
|
|
|
|
|
|
|
|
expect(found).to eq(user)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'when the user does not exist' do
|
|
|
|
it 'returns nil' do
|
|
|
|
found = described_class.new("non_existent_username").find_by_username
|
|
|
|
|
|
|
|
expect(found).to be_nil
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe '#find_by_id_or_username' do
|
|
|
|
context 'when the user exists (id)' do
|
|
|
|
it 'returns the user' do
|
|
|
|
found = described_class.new(user.id).find_by_id_or_username
|
|
|
|
|
|
|
|
expect(found).to eq(user)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'when the user exists (id as string)' do
|
|
|
|
it 'returns the user' do
|
|
|
|
found = described_class.new(user.id.to_s).find_by_id_or_username
|
2018-07-30 11:45:49 -04:00
|
|
|
|
|
|
|
expect(found).to eq(user)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2018-10-18 05:06:44 -04:00
|
|
|
context 'when the user exists (username)' do
|
|
|
|
it 'returns the user' do
|
|
|
|
found = described_class.new(user.username).find_by_id_or_username
|
|
|
|
|
|
|
|
expect(found).to eq(user)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'when the user does not exist (username)' do
|
|
|
|
it 'returns nil' do
|
|
|
|
found = described_class.new("non_existent_username").find_by_id_or_username
|
|
|
|
|
|
|
|
expect(found).to be_nil
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2018-07-30 11:45:49 -04:00
|
|
|
context 'when the user does not exist' do
|
|
|
|
it 'returns nil' do
|
2019-10-09 20:06:44 -04:00
|
|
|
found = described_class.new(-1).find_by_id_or_username
|
2018-07-30 11:45:49 -04:00
|
|
|
|
|
|
|
expect(found).to be_nil
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2018-10-18 05:06:44 -04:00
|
|
|
describe '#find_by_id!' do
|
|
|
|
context 'when the user exists' do
|
|
|
|
it 'returns the user' do
|
|
|
|
found = described_class.new(user.id).find_by_id!
|
|
|
|
|
|
|
|
expect(found).to eq(user)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'when the user exists (id as string)' do
|
|
|
|
it 'returns the user' do
|
|
|
|
found = described_class.new(user.id.to_s).find_by_id!
|
|
|
|
|
|
|
|
expect(found).to eq(user)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'when the user does not exist' do
|
|
|
|
it 'raises ActiveRecord::RecordNotFound' do
|
2019-10-09 20:06:44 -04:00
|
|
|
finder = described_class.new(-1)
|
2018-10-18 05:06:44 -04:00
|
|
|
|
|
|
|
expect { finder.find_by_id! }.to raise_error(ActiveRecord::RecordNotFound)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe '#find_by_username!' do
|
2018-07-30 11:45:49 -04:00
|
|
|
context 'when the user exists' do
|
|
|
|
it 'returns the user' do
|
2018-10-18 05:06:44 -04:00
|
|
|
found = described_class.new(user.username).find_by_username!
|
|
|
|
|
|
|
|
expect(found).to eq(user)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'when the user does not exist' do
|
|
|
|
it 'raises ActiveRecord::RecordNotFound' do
|
|
|
|
finder = described_class.new("non_existent_username")
|
|
|
|
|
|
|
|
expect { finder.find_by_username! }.to raise_error(ActiveRecord::RecordNotFound)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe '#find_by_id_or_username!' do
|
|
|
|
context 'when the user exists (id)' do
|
|
|
|
it 'returns the user' do
|
|
|
|
found = described_class.new(user.id).find_by_id_or_username!
|
|
|
|
|
|
|
|
expect(found).to eq(user)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'when the user exists (id as string)' do
|
|
|
|
it 'returns the user' do
|
|
|
|
found = described_class.new(user.id.to_s).find_by_id_or_username!
|
2018-07-30 11:45:49 -04:00
|
|
|
|
|
|
|
expect(found).to eq(user)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2018-10-18 05:06:44 -04:00
|
|
|
context 'when the user exists (username)' do
|
|
|
|
it 'returns the user' do
|
|
|
|
found = described_class.new(user.username).find_by_id_or_username!
|
|
|
|
|
|
|
|
expect(found).to eq(user)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'when the user does not exist (username)' do
|
|
|
|
it 'raises ActiveRecord::RecordNotFound' do
|
|
|
|
finder = described_class.new("non_existent_username")
|
|
|
|
|
|
|
|
expect { finder.find_by_id_or_username! }.to raise_error(ActiveRecord::RecordNotFound)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2018-07-30 11:45:49 -04:00
|
|
|
context 'when the user does not exist' do
|
|
|
|
it 'raises ActiveRecord::RecordNotFound' do
|
2019-10-09 20:06:44 -04:00
|
|
|
finder = described_class.new(-1)
|
2018-07-30 11:45:49 -04:00
|
|
|
|
2018-10-18 05:06:44 -04:00
|
|
|
expect { finder.find_by_id_or_username! }.to raise_error(ActiveRecord::RecordNotFound)
|
2018-07-30 11:45:49 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|