From 69a6bc082e834d55bc6e919f53fcf0f7c69193df Mon Sep 17 00:00:00 2001 From: Fabio Teixeira Date: Tue, 9 Sep 2014 15:04:09 -0300 Subject: [PATCH] Add software_info validations and tests --- lib/software_info.rb | 9 +++++++++ test/unit/software_info_validation_test.rb | 30 ++++++++++++++++++++++++++++++ views/mpog_software_plugin_myprofile/new_software.html.erb | 4 ++-- 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/lib/software_info.rb b/lib/software_info.rb index 6dab44c..3c4ba78 100644 --- a/lib/software_info.rb +++ b/lib/software_info.rb @@ -14,6 +14,13 @@ class SoftwareInfo < ActiveRecord::Base has_one :controlled_vocabulary + validates :features, :objectives, + :presence=>true, + :length => { + :maximum => 4000, + :too_long => _("Software features is too long (maximum is 4000 characters)") + } + validate :validate_operating_platform, :validate_acronym, :valid_software_info, :valid_databases, :valid_operating_systems # used on find_by_contents @@ -99,6 +106,8 @@ class SoftwareInfo < ActiveRecord::Base end def validate_acronym + self.acronym = "" if self.acronym.nil? + if self.acronym.length > 10 && self.errors.messages[:acronym].nil? self.errors.add(:acronym, _("can't have more than 10 characteres")) elsif self.acronym.match(/\s+/) diff --git a/test/unit/software_info_validation_test.rb b/test/unit/software_info_validation_test.rb index 40c3635..35ea52a 100644 --- a/test/unit/software_info_validation_test.rb +++ b/test/unit/software_info_validation_test.rb @@ -29,6 +29,8 @@ class SoftwareInfoValidationTest < ActiveSupport::TestCase @software_info.software_databases << @software_database @software_info.operating_systems << @operating_system + @software_info.features = "Do a lot of things" + @software_info.objectives = "All tests should pass !" end should 'Save SoftwareInfo if all fields are filled' do @@ -59,4 +61,32 @@ class SoftwareInfoValidationTest < ActiveSupport::TestCase @software_info.acronym = "AC DC" assert_equal false, @software_info.save end + + should "Not save if objectives are empty" do + @software_info.objectives = "" + + assert_equal false, @software_info.save + assert_equal true, @software_info.errors.full_messages.include?(_("Objectives can't be blank")) + end + + should "Not save if features are empty" do + @software_info.features = "" + + assert_equal false, @software_info.save + assert_equal true, @software_info.errors.full_messages.include?(_("Features can't be blank")) + end + + should "Not save if features are longer than 4000" do + @software_info.features = "a"*4001 + + assert_equal false, @software_info.save + assert_equal true, @software_info.errors.full_messages.include?(_("Features Software features is too long (maximum is 4000 characters)")) + end + + should "Not save if objectives are longer than 4000" do + @software_info.objectives = "a"*4001 + + assert_equal false, @software_info.save + assert_equal true, @software_info.errors.full_messages.include?(_("Objectives Software features is too long (maximum is 4000 characters)")) + end end diff --git a/views/mpog_software_plugin_myprofile/new_software.html.erb b/views/mpog_software_plugin_myprofile/new_software.html.erb index f96579a..1d8819e 100644 --- a/views/mpog_software_plugin_myprofile/new_software.html.erb +++ b/views/mpog_software_plugin_myprofile/new_software.html.erb @@ -82,12 +82,12 @@
<%= swf.label "objectives", _("Objectives: ")%>
- <%= swf.text_area(:objectives, :class=>"expand-field") %> + <%= required swf.text_area(:objectives, :class=>"expand-field") %>
<%= swf.label "features", _("Features: ")%>
- <%= swf.text_area(:features, :class=>"expand-field") %> + <%= required swf.text_area(:features, :class=>"expand-field") %>
-- libgit2 0.21.2