diff --git a/plugins/custom_forms/lib/custom_forms_plugin/form.rb b/plugins/custom_forms/lib/custom_forms_plugin/form.rb index 9426f97..8225c7d 100644 --- a/plugins/custom_forms/lib/custom_forms_plugin/form.rb +++ b/plugins/custom_forms/lib/custom_forms_plugin/form.rb @@ -10,6 +10,7 @@ class CustomFormsPlugin::Form < Noosfero::Plugin::ActiveRecord validates_presence_of :profile, :name validates_uniqueness_of :slug, :scope => :profile_id + validate :period_range, :if => Proc.new { |f| f.begining.present? && f.ending.present? } validate :access_format before_validation do |form| @@ -75,4 +76,8 @@ class CustomFormsPlugin::Form < Noosfero::Plugin::ActiveRecord end end end + + def period_range + errors.add(:base, _('The time range selected is invalid.')) if ending < begining + end end diff --git a/plugins/custom_forms/test/unit/custom_forms_plugin/form_test.rb b/plugins/custom_forms/test/unit/custom_forms_plugin/form_test.rb index f56a29e..bee84c0 100644 --- a/plugins/custom_forms/test/unit/custom_forms_plugin/form_test.rb +++ b/plugins/custom_forms/test/unit/custom_forms_plugin/form_test.rb @@ -53,6 +53,20 @@ class CustomFormsPlugin::FormTest < ActiveSupport::TestCase assert !form.errors.invalid?(:slug) end + should 'validate the difference between ending and beginning is positive' do + profile = fast_create(Profile) + form = CustomFormsPlugin::Form.new(:profile => profile, :name => 'Free Software') + + form.begining = Time.now + form.ending = Time.now + 1.day + assert form.valid? + assert !form.errors.invalid?(:base) + + form.ending = Time.now - 2.day + assert !form.valid? + assert form.errors.invalid?(:base) + end + should 'define form expiration' do form = CustomFormsPlugin::Form.new assert !form.expired? -- libgit2 0.21.2