Commit 5399368c0bb7a313d4df4f4e0b5c26a8dd714123

Authored by Victor Costa
1 parent 3d090c90
Exists in master

Refactor validation of abstract max length

Showing 2 changed files with 16 additions and 10 deletions   Show diff stats
lib/ext/proposal.rb
1 require_relative '../../../proposals_discussion/lib/proposals_discussion_plugin/proposal.rb' 1 require_relative '../../../proposals_discussion/lib/proposals_discussion_plugin/proposal.rb'
2 2
3 -class ProposalsDiscussionPlugin::Proposal < TinyMceArticle  
4 - validate :abstract_max_length 3 +class ProposalsDiscussionPlugin::Proposal
  4 +
  5 + validates :abstract, length: {maximum: 200}, if: proc { |a| a.environment.plugin_enabled?(DialogaPlugin)}
5 6
6 - def abstract_max_length  
7 - if abstract.size > 200 and environment.plugin_enabled? "Dialoga"  
8 - errors.add(:proposal, "Proposal must be no longer than 200 characters")  
9 - end  
10 - end  
11 end 7 end
test/unit/proposal_test.rb
@@ -8,17 +8,27 @@ class ProposalTest &lt; ActiveSupport::TestCase @@ -8,17 +8,27 @@ class ProposalTest &lt; ActiveSupport::TestCase
8 @discussion = ProposalsDiscussionPlugin::Discussion.create!(:name => 'discussion', :profile => person, :allow_topics => false) 8 @discussion = ProposalsDiscussionPlugin::Discussion.create!(:name => 'discussion', :profile => person, :allow_topics => false)
9 @proposal = ProposalsDiscussionPlugin::Proposal.new(:name => 'test', :abstract => 'abstract', :profile => @profile, :parent => @discussion) 9 @proposal = ProposalsDiscussionPlugin::Proposal.new(:name => 'test', :abstract => 'abstract', :profile => @profile, :parent => @discussion)
10 @proposal.created_by = @person 10 @proposal.created_by = @person
  11 + @environment = Environment.default
  12 + environment.enable_plugin(DialogaPlugin)
11 end 13 end
12 14
13 - attr_reader :profile, :proposal, :person, :discussion 15 + attr_reader :profile, :proposal, :person, :discussion, :environment
14 16
15 - should 'should not save a proposal with an abstract > 200 chars' do 17 + should 'should not save a proposal with an abstract greater than 200 chars' do
16 proposal.abstract = 201.times.map{'B'}.join 18 proposal.abstract = 201.times.map{'B'}.join
17 refute proposal.valid? 19 refute proposal.valid?
18 refute proposal.save 20 refute proposal.save
  21 + assert proposal.errors[:abstract].present?
19 end 22 end
20 23
21 - should 'should save a proposal with abstract <= 200 chars' do 24 + should 'should save a proposal with an abstract greater than 200 chars and dialoga plugin is not enabled' do
  25 + environment.disable_plugin(DialogaPlugin)
  26 + proposal.abstract = 201.times.map{'B'}.join
  27 + assert proposal.valid?
  28 + assert proposal.save
  29 + end
  30 +
  31 + should 'should save a proposal with an abstract not greater than 200 chars' do
22 proposal.abstract = 200.times.map{'B'}.join 32 proposal.abstract = 200.times.map{'B'}.join
23 assert proposal.valid? 33 assert proposal.valid?
24 assert proposal.save 34 assert proposal.save