Refactor consumer factory

This commit is contained in:
Sebastian Serth
2022-09-22 13:33:54 +02:00
committed by Sebastian Serth
parent 6ad5274e67
commit e3018c1847
2 changed files with 28 additions and 8 deletions

View File

@ -10,17 +10,18 @@ describe ConsumersController do
describe 'POST #create' do
context 'with a valid consumer' do
let(:perform_request) { proc { post :create, params: {consumer: attributes_for(:consumer)} } }
let(:perform_request) { proc { post :create, params: {consumer: build(:consumer, name: 'New Consumer').attributes} } }
before { perform_request.call }
context 'when the request is performed' do
before { perform_request.call }
expect_assigns(consumer: Consumer)
expect_assigns(consumer: Consumer)
expect_redirect(Consumer.last)
end
it 'creates the consumer' do
expect { perform_request.call }.to change(Consumer, :count).by(1)
end
expect_redirect(Consumer.last)
end
context 'with an invalid consumer' do
@ -30,6 +31,22 @@ describe ConsumersController do
expect_http_status(:ok)
expect_template(:new)
end
context 'with a duplicated consumer' do
let(:perform_request) { proc { post :create, params: {consumer: build(:consumer).attributes} } }
context 'when the request is performed' do
before { perform_request.call }
expect_assigns(consumer: Consumer)
expect_http_status(:ok)
expect_template(:new)
end
it 'does not create a new consumer' do
expect { perform_request.call }.not_to change(Consumer, :count)
end
end
end
describe 'DELETE #destroy' do

View File

@ -3,12 +3,15 @@
FactoryBot.define do
factory :consumer do
name { 'openHPI' }
oauth_key { SecureRandom.hex }
oauth_secret { SecureRandom.hex }
singleton_consumer
end
trait :singleton_consumer do
initialize_with { Consumer.where(name: name).first_or_create }
initialize_with do
Consumer.find_or_initialize_by(name: name) do |consumer|
consumer.oauth_key = SecureRandom.hex
consumer.oauth_secret = SecureRandom.hex
end
end
end
end