From 5399368c0bb7a313d4df4f4e0b5c26a8dd714123 Mon Sep 17 00:00:00 2001 From: Victor Costa Date: Thu, 3 Dec 2015 10:55:22 -0300 Subject: [PATCH] Refactor validation of abstract max length --- lib/ext/proposal.rb | 10 +++------- test/unit/proposal_test.rb | 16 +++++++++++++--- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/lib/ext/proposal.rb b/lib/ext/proposal.rb index 8635c8b..ec9ffaf 100644 --- a/lib/ext/proposal.rb +++ b/lib/ext/proposal.rb @@ -1,11 +1,7 @@ require_relative '../../../proposals_discussion/lib/proposals_discussion_plugin/proposal.rb' -class ProposalsDiscussionPlugin::Proposal < TinyMceArticle - validate :abstract_max_length +class ProposalsDiscussionPlugin::Proposal + + validates :abstract, length: {maximum: 200}, if: proc { |a| a.environment.plugin_enabled?(DialogaPlugin)} - def abstract_max_length - if abstract.size > 200 and environment.plugin_enabled? "Dialoga" - errors.add(:proposal, "Proposal must be no longer than 200 characters") - end - end end diff --git a/test/unit/proposal_test.rb b/test/unit/proposal_test.rb index a6b0555..d5af957 100644 --- a/test/unit/proposal_test.rb +++ b/test/unit/proposal_test.rb @@ -8,17 +8,27 @@ class ProposalTest < ActiveSupport::TestCase @discussion = ProposalsDiscussionPlugin::Discussion.create!(:name => 'discussion', :profile => person, :allow_topics => false) @proposal = ProposalsDiscussionPlugin::Proposal.new(:name => 'test', :abstract => 'abstract', :profile => @profile, :parent => @discussion) @proposal.created_by = @person + @environment = Environment.default + environment.enable_plugin(DialogaPlugin) end - attr_reader :profile, :proposal, :person, :discussion + attr_reader :profile, :proposal, :person, :discussion, :environment - should 'should not save a proposal with an abstract > 200 chars' do + should 'should not save a proposal with an abstract greater than 200 chars' do proposal.abstract = 201.times.map{'B'}.join refute proposal.valid? refute proposal.save + assert proposal.errors[:abstract].present? end - should 'should save a proposal with abstract <= 200 chars' do + should 'should save a proposal with an abstract greater than 200 chars and dialoga plugin is not enabled' do + environment.disable_plugin(DialogaPlugin) + proposal.abstract = 201.times.map{'B'}.join + assert proposal.valid? + assert proposal.save + end + + should 'should save a proposal with an abstract not greater than 200 chars' do proposal.abstract = 200.times.map{'B'}.join assert proposal.valid? assert proposal.save -- libgit2 0.21.2