1
0
Fork 0
mirror of https://github.com/aasm/aasm synced 2023-03-27 23:22:41 -04:00
aasm/spec/unit/override_warning_spec.rb
2017-02-10 22:00:03 +11:00

94 lines
1.9 KiB
Ruby

require 'spec_helper'
describe 'warns when overrides a method' do
before do
AASM::Configuration.hide_warnings = false
end
after do
AASM::Configuration.hide_warnings = true
end
module Clumsy
def self.included base
base.send :include, AASM
base.aasm do
state :valid
event(:save) { }
end
end
end
module WithEnumBase
def self.included base
base.send :include, AASM
base.instance_eval do
def defined_enums
{ 'state' => { 'valid' => 0, 'invalid' => 1 } }
end
end
base.aasm enum: true do
state :valid
event(:save) { }
end
end
end
describe 'state' do
let(:base_klass) do
Class.new do
def valid?; end
end
end
subject { base_klass.send :include, Clumsy }
it 'should log to warn' do
expect_any_instance_of(Logger).to receive(:warn).with(": overriding method 'valid?'!")
subject
end
end
describe 'enum' do
let(:enum_base_klass) do
Class.new do
def valid?; end
end
end
subject { enum_base_klass.send :include, WithEnumBase }
it 'should not log to warn' do
expect_any_instance_of(Logger).to receive(:warn).never
subject
end
end
describe 'event' do
context 'may?' do
let(:base_klass) do
Class.new do
def may_save?; end
def save!; end
def save; end
end
end
subject { base_klass.send :include, Clumsy }
it 'should log to warn' do
expect_any_instance_of(Logger).to receive(:warn).exactly(3).times do |logger, message|
expect(
[
": overriding method 'may_save?'!",
": overriding method 'save!'!",
": overriding method 'save'!"
]
).to include(message)
end
subject
end
end
end
end