spec/routine_spec.rb in lev-4.1.0 vs spec/routine_spec.rb in lev-4.2.0
- old
+ new
@@ -2,20 +2,20 @@
describe Lev::Routine do
before do
stub_const 'RaiseError', Class.new
- RaiseError.class_eval {
- lev_routine
+ RaiseError.class_eval {
+ lev_routine
def exec
raise 'error message'
end
}
stub_const 'RaiseStandardError', Class.new
- RaiseStandardError.class_eval {
- lev_routine
+ RaiseStandardError.class_eval {
+ lev_routine
def exec
unknown_method_call
end
}
end
@@ -28,8 +28,92 @@
it "raised StandardErrors should propagate" do
expect {
RaiseStandardError.call
}.to raise_error(NameError)
+ end
+
+ it 'allows not raising fatal errors to be overridden' do
+ stub_const 'NestedFatalError', Class.new
+ NestedFatalError.class_eval {
+ lev_routine
+
+ def exec
+ fatal_error(code: :its_broken)
+ end
+ }
+
+ stub_const 'SpecialFatalErrorOption', Class.new
+ SpecialFatalErrorOption.class_eval {
+ lev_routine raise_fatal_errors: true, delegates_to: NestedFatalError
+ }
+
+ stub_const 'NoFatalErrorOption', Class.new
+ NoFatalErrorOption.class_eval {
+ lev_routine
+ def exec
+ fatal_error(code: :no_propagate)
+ end
+ }
+
+ Lev.configure { |c| c.raise_fatal_errors = false }
+
+ expect {
+ SpecialFatalErrorOption.call
+ }.to raise_error
+
+ expect {
+ NoFatalErrorOption.call
+ }.not_to raise_error
+ end
+
+ it 'allows raising fatal errors config to be overridden' do
+ stub_const 'SpecialNoFatalErrorOption', Class.new
+ SpecialNoFatalErrorOption.class_eval {
+ lev_routine raise_fatal_errors: false
+ def exec
+ fatal_error(code: :its_broken)
+ end
+ }
+
+ Lev.configure { |c| c.raise_fatal_errors = true }
+
+ expect {
+ SpecialNoFatalErrorOption.call
+ }.not_to raise_error
+ end
+
+ context 'when raise_fatal_errors is configured true' do
+ before do
+ Lev.configure do |config|
+ config.raise_fatal_errors = true
+ end
+
+ stub_const 'RaiseFatalError', Class.new
+ RaiseFatalError.class_eval {
+ lev_routine
+ def exec
+ fatal_error(code: :broken, such: :disaster)
+ end
+ }
+ end
+
+ after do
+ Lev.configure do |config|
+ config.raise_fatal_errors = false
+ end
+ end
+
+ it 'raises an exception on fatal_error if configured' do
+ expect {
+ RaiseFatalError.call
+ }.to raise_error
+
+ begin
+ RaiseFatalError.call
+ rescue => e
+ expect(e.message).to eq('code broken - such disaster')
+ end
+ end
end
end