spec/hashie/extensions/mash/safe_assignment_spec.rb in hashie-3.4.2 vs spec/hashie/extensions/mash/safe_assignment_spec.rb in hashie-3.4.3
- old
+ new
@@ -1,17 +1,44 @@
require 'spec_helper'
describe Hashie::Extensions::Mash::SafeAssignment do
class MashWithSafeAssignment < Hashie::Mash
include Hashie::Extensions::Mash::SafeAssignment
+
+ private
+
+ def my_own_private
+ :hello!
+ end
end
context 'when included in Mash' do
subject { MashWithSafeAssignment.new }
+ context 'when not attempting to override a method' do
+ it 'assigns just fine' do
+ expect do
+ subject.blabla = 'Test'
+ subject.blabla = 'Test'
+ end.to_not raise_error
+ end
+ end
+
context 'when attempting to override a method' do
it 'raises an error' do
expect { subject.zip = 'Test' }.to raise_error(ArgumentError)
+ end
+ end
+
+ context 'when attempting to override a private method' do
+ it 'raises an error' do
+ expect { subject.my_own_private = 'Test' }.to raise_error(ArgumentError)
+ end
+ end
+
+ context 'when attempting to initialize with predefined method' do
+ it 'raises an error' do
+ expect { MashWithSafeAssignment.new(zip: true) }.to raise_error(ArgumentError)
end
end
context 'when setting as a hash key' do
it 'still raises if conflicts with a method' do