Added method to perform a yielded action with an ensured UserInfo.current_user_id and added new and missing tests.

This commit is contained in:
Thorsten Eckel 2017-04-27 10:17:10 +02:00
parent 0fd75fa482
commit 8ef2970234
2 changed files with 53 additions and 0 deletions

View file

@ -6,4 +6,16 @@ module UserInfo
def self.current_user_id=(user_id)
Thread.current[:user_id] = user_id
end
def self.ensure_current_user_id
if UserInfo.current_user_id.nil?
UserInfo.current_user_id = 1
reset_current_user_id = true
end
yield
return if !reset_current_user_id
UserInfo.current_user_id = nil
end
end

View file

@ -0,0 +1,41 @@
require 'rails_helper'
RSpec.describe UserInfo do
describe '#current_user_id' do
it 'is nil by default' do
expect(described_class.current_user_id).to be nil
end
it 'takes a User ID as paramter and returns it' do
test_id = 99
described_class.current_user_id = test_id
expect(described_class.current_user_id).to eq(test_id)
end
end
describe '#ensure_current_user_id' do
it 'uses and keeps set User IDs' do
test_id = 99
described_class.current_user_id = test_id
described_class.ensure_current_user_id do
expect(described_class.current_user_id).to eq(test_id)
end
expect(described_class.current_user_id).to eq(test_id)
end
it 'sets and resets temporary User ID 1' do
described_class.current_user_id = nil
described_class.ensure_current_user_id do
expect(described_class.current_user_id).to eq(1)
end
expect(described_class.current_user_id).to be nil
end
end
end