|
@@ -0,0 +1,34 @@
|
|
|
+require 'rails_helper'
|
|
|
+
|
|
|
+RSpec.describe ApplicationHandleInfo do
|
|
|
+ describe '.use' do
|
|
|
+ it 'requires a block' do
|
|
|
+ expect { ApplicationHandleInfo.use('foo') }
|
|
|
+ .to raise_error(ArgumentError)
|
|
|
+ end
|
|
|
+
|
|
|
+ context 'for a given starting ApplicationHandleInfo' do
|
|
|
+ before { ApplicationHandleInfo.current = 'foo' }
|
|
|
+
|
|
|
+ it 'runs the block using the given ApplicationHandleInfo' do
|
|
|
+ ApplicationHandleInfo.use('bar') do
|
|
|
+ expect(ApplicationHandleInfo.current).to eq('bar')
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ it 'resets ApplicationHandleInfo to its original value' do
|
|
|
+ ApplicationHandleInfo.use('bar') {}
|
|
|
+
|
|
|
+ expect(ApplicationHandleInfo.current).to eq('foo')
|
|
|
+ end
|
|
|
+
|
|
|
+ context 'when an error is raised in the given block' do
|
|
|
+ it 'does not rescue the error, and still resets ApplicationHandleInfo' do
|
|
|
+ expect { ApplicationHandleInfo.use('bar') { raise } }
|
|
|
+ .to raise_error(StandardError)
|
|
|
+ .and not_change { ApplicationHandleInfo.current }
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+end
|