require 'spec_helper' describe RailsAdmin::Config::Fields::Types::Date do describe '#parse_input' do before :each do @object = FactoryGirl.create(:field_test) @time = ::Time.now.getutc @field = RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :date_field } end after :each do Time.zone = 'UTC' end it 'reads %B %d, %Y by default' do @object.date_field = @field.parse_input(date_field: @time.strftime('%B %d, %Y')) expect(@object.date_field).to eq(::Date.parse(@time.to_s)) end it 'covers a timezone lag even if in UTC+n:00 timezone.' do Time.zone = 'Tokyo' # +09:00 @object.date_field = @field.parse_input(date_field: @time.strftime('%B %d, %Y')) expect(@object.date_field).to eq(::Date.parse(@time.to_s)) end it 'has a simple customization option' do RailsAdmin.config FieldTest do edit do field :date_field do date_format :default end end end @object.date_field = @field.parse_input(date_field: @time.strftime('%Y-%m-%d')) expect(@object.date_field).to eq(::Date.parse(@time.to_s)) end it 'has a customization option' do RailsAdmin.config FieldTest do edit do field :date_field do strftime_format '%Y/%m/%d' end end end @object.date_field = @field.parse_input(date_field: @time.strftime('%Y/%m/%d')) expect(@object.date_field).to eq(::Date.parse(@time.to_s)) end end describe 'default value' do before :each do RailsAdmin.config FieldTest do field :date_field do default_value Date.current end end @object = FactoryGirl.create(:field_test) @time = ::Time.now.getutc @field = RailsAdmin.config(FieldTest).fields.detect { |f| f.name == :date_field } @field.bindings = {object: @object} end it 'should contain the default value' do expect(@field.default_value).to eq(Date.current) end it 'should propagate to the field formatted_date_value when the object is a new record' do object = FactoryGirl.build(:field_test) @field.bindings = {object: object} expect(@field.formatted_date_value).to eq(Date.current.strftime('%B %d, %Y')) end end end