mirror of https://github.com/rails/rails
Rails::Generators::GeneratedAttribute: tests, cleanups and a bugfix [#4631 state:resolved]
Signed-off-by: José Valim <jose.valim@gmail.com>
This commit is contained in:
parent
566967eaf3
commit
d93b45e8d3
|
@ -1,3 +1,5 @@
|
|||
require 'active_support/time'
|
||||
|
||||
module Rails
|
||||
module Generators
|
||||
class GeneratedAttribute
|
||||
|
@ -13,7 +15,6 @@ module Rails
|
|||
when :time then :time_select
|
||||
when :datetime, :timestamp then :datetime_select
|
||||
when :date then :date_select
|
||||
when :string then :text_field
|
||||
when :text then :text_area
|
||||
when :boolean then :check_box
|
||||
else
|
||||
|
|
|
@ -189,18 +189,23 @@ module Rails
|
|||
end
|
||||
alias :assert_method :assert_instance_method
|
||||
|
||||
# Asserts the given field name gets translated to an attribute type
|
||||
# properly.
|
||||
# Asserts the given attribute type gets translated to a field type
|
||||
# properly:
|
||||
#
|
||||
# assert_field_type :date, :date_select
|
||||
#
|
||||
def assert_field_type(name, attribute_type)
|
||||
assert_equal(
|
||||
Rails::Generators::GeneratedAttribute.new('test', name.to_s).field_type,
|
||||
attribute_type
|
||||
)
|
||||
def assert_field_type(attribute_type, field_type)
|
||||
assert_equal(field_type, create_generated_attribute(attribute_type).field_type)
|
||||
end
|
||||
|
||||
|
||||
# Asserts the given attribute type gets a proper default value:
|
||||
#
|
||||
# assert_field_type :string, "MyString"
|
||||
#
|
||||
def assert_field_default_value(attribute_type, value)
|
||||
assert_equal(value, create_generated_attribute(attribute_type).default)
|
||||
end
|
||||
|
||||
# Runs the generator configured for this class. The first argument is an array like
|
||||
# command line arguments:
|
||||
#
|
||||
|
@ -226,6 +231,15 @@ module Rails
|
|||
@generator ||= self.generator_class.new(args, options, config.reverse_merge(:destination_root => destination_root))
|
||||
end
|
||||
|
||||
# Create a Rails::Generators::GeneratedAttribute by supplying the
|
||||
# attribute type and, optionally, the attribute name:
|
||||
#
|
||||
# create_generated_attribute(:string, 'name')
|
||||
#
|
||||
def create_generated_attribute(attribute_type, name = 'test')
|
||||
Rails::Generators::GeneratedAttribute.new(name, attribute_type.to_s)
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def destination_root_is_set? #:nodoc:
|
||||
|
|
|
@ -5,36 +5,107 @@ class GeneratedAttributeTest < Rails::Generators::TestCase
|
|||
include GeneratorsTestHelper
|
||||
|
||||
def test_field_type_returns_text_field
|
||||
%w(integer float decimal string).each do |name|
|
||||
assert_field_type name, :text_field
|
||||
%w(integer float decimal string).each do |attribute_type|
|
||||
assert_field_type attribute_type, :text_field
|
||||
end
|
||||
end
|
||||
|
||||
def test_field_type_returns_datetime_select
|
||||
%w(datetime timestamp).each do |name|
|
||||
assert_field_type name, :datetime_select
|
||||
%w(datetime timestamp).each do |attribute_type|
|
||||
assert_field_type attribute_type, :datetime_select
|
||||
end
|
||||
end
|
||||
|
||||
def test_field_type_returns_time_select
|
||||
assert_field_type 'time', :time_select
|
||||
assert_field_type :time, :time_select
|
||||
end
|
||||
|
||||
def test_field_type_returns_date_select
|
||||
assert_field_type 'date', :date_select
|
||||
assert_field_type :date, :date_select
|
||||
end
|
||||
|
||||
def test_field_type_returns_text_area
|
||||
assert_field_type 'text', :text_area
|
||||
assert_field_type :text, :text_area
|
||||
end
|
||||
|
||||
def test_field_type_returns_check_box
|
||||
assert_field_type 'boolean', :check_box
|
||||
assert_field_type :boolean, :check_box
|
||||
end
|
||||
|
||||
def test_field_type_with_unknown_type_returns_text_field
|
||||
%w(foo bar baz).each do |name|
|
||||
assert_field_type name, :text_field
|
||||
%w(foo bar baz).each do |attribute_type|
|
||||
assert_field_type attribute_type, :text_field
|
||||
end
|
||||
end
|
||||
|
||||
def test_default_value_is_integer
|
||||
assert_field_default_value :integer, 1
|
||||
end
|
||||
|
||||
def test_default_value_is_float
|
||||
assert_field_default_value :float, 1.5
|
||||
end
|
||||
|
||||
def test_default_value_is_decimal
|
||||
assert_field_default_value :decimal, '9.99'
|
||||
end
|
||||
|
||||
def test_default_value_is_datetime
|
||||
%w(datetime timestamp time).each do |attribute_type|
|
||||
assert_field_default_value attribute_type, Time.now.to_s(:db)
|
||||
end
|
||||
end
|
||||
|
||||
def test_default_value_is_date
|
||||
assert_field_default_value :date, Date.today.to_s(:db)
|
||||
end
|
||||
|
||||
def test_default_value_is_string
|
||||
assert_field_default_value :string, 'MyString'
|
||||
end
|
||||
|
||||
def test_default_value_is_text
|
||||
assert_field_default_value :text, 'MyText'
|
||||
end
|
||||
|
||||
def test_default_value_is_boolean
|
||||
assert_field_default_value :boolean, false
|
||||
end
|
||||
|
||||
def test_default_value_is_nil
|
||||
%w(references belongs_to).each do |attribute_type|
|
||||
assert_field_default_value attribute_type, nil
|
||||
end
|
||||
end
|
||||
|
||||
def test_default_value_is_empty_string
|
||||
%w(foo bar baz).each do |attribute_type|
|
||||
assert_field_default_value attribute_type, ''
|
||||
end
|
||||
end
|
||||
|
||||
def test_human_name
|
||||
assert_equal(
|
||||
'Full name',
|
||||
create_generated_attribute(:string, 'full_name').human_name
|
||||
)
|
||||
end
|
||||
|
||||
def test_reference_is_true
|
||||
%w(references belongs_to).each do |attribute_type|
|
||||
assert_equal(
|
||||
true,
|
||||
create_generated_attribute(attribute_type).reference?
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
def test_reference_is_false
|
||||
%w(foo bar baz).each do |attribute_type|
|
||||
assert_equal(
|
||||
false,
|
||||
create_generated_attribute(attribute_type).reference?
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue