1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
# frozen_string_literal: true
require 'test_helper'
class ModuleAttributesSpec < Minitest::Spec
it 'inherits attribute from the module' do
mod = Module.new do
extend Enumerize
enumerize :sex, :in => %w[male female], :default => 'male'
end
klass = Class.new
klass.send :include, mod
expect(klass.enumerized_attributes[:sex]).must_be_instance_of Enumerize::Attribute
expect(klass.new.sex).must_equal 'male'
expect(klass.sex).must_be_instance_of Enumerize::Attribute
end
it 'uses new attributes from the module' do
mod = Module.new do
extend Enumerize
end
klass = Class.new
klass.send :include, mod
mod.enumerize :sex, :in => %w[male female], :default => 'male'
expect(klass.enumerized_attributes[:sex]).must_be_instance_of Enumerize::Attribute
expect(klass.new.sex).must_equal 'male'
expect(klass.sex).must_be_instance_of Enumerize::Attribute
end
it 'validates attributes' do
mod = Module.new do
extend Enumerize
enumerize :sex, :in => %w[male female]
end
klass = Class.new do
include ActiveModel::Validations
include mod
def self.model_name
ActiveModel::Name.new(self, nil, 'name')
end
end
object = klass.new
object.sex = 'wrong'
expect(object).wont_be :valid?
expect(object.errors[:sex]).must_include 'is not included in the list'
end
end
|