Skip to content

Commit 2a000c6

Browse files
committed
Add spec
1 parent e8046dc commit 2a000c6

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

spec/mongoid/config_spec.rb

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -814,4 +814,56 @@ def self.logger
814814
end
815815
end
816816
end
817+
818+
context '#define_field_type' do
819+
around do |example|
820+
klass = Mongoid::Fields::FieldTypes
821+
klass.instance_variable_set(:@mapping, klass::DEFAULT_MAPPING.dup)
822+
example.run
823+
klass.instance_variable_set(:@mapping, klass::DEFAULT_MAPPING.dup)
824+
end
825+
826+
it 'can define a custom type' do
827+
Mongoid.configure do |config|
828+
config.define_field_type :my_type, Integer
829+
end
830+
831+
expect(Mongoid::Fields::FieldTypes.get(:my_type)).to eq Integer
832+
end
833+
834+
it 'can override and existing type' do
835+
Mongoid.configure do |config|
836+
config.define_field_type :integer, String
837+
end
838+
839+
expect(Mongoid::Fields::FieldTypes.get(:integer)).to eq String
840+
end
841+
end
842+
843+
context '#define_field_option method' do
844+
after do
845+
Mongoid::Fields.instance_variable_set(:@options, {})
846+
end
847+
848+
it 'can define a custom field option' do
849+
Mongoid.configure do |config|
850+
config.define_field_option :my_required do |model, field, value|
851+
model.validates_presence_of field.name if value
852+
end
853+
end
854+
855+
klass = Class.new do
856+
include Mongoid::Document
857+
field :my_field, my_required: true
858+
859+
def self.model_name
860+
OpenStruct.new(human: 'Klass')
861+
end
862+
end
863+
864+
instance = klass.new
865+
expect(instance.valid?).to eq false
866+
expect(instance.errors.full_messages).to eq ["My field can't be blank"]
867+
end
868+
end
817869
end

0 commit comments

Comments
 (0)