diff --git a/plugins/stoa/lib/ext/person.rb b/plugins/stoa/lib/ext/person.rb index 514696b..d8aacb2 100644 --- a/plugins/stoa/lib/ext/person.rb +++ b/plugins/stoa/lib/ext/person.rb @@ -6,7 +6,7 @@ class Person validate :usp_id_or_invitation, :if => lambda { |person| person.environment && person.environment.plugin_enabled?(StoaPlugin)} def usp_id_or_invitation - if usp_id.blank? && (invitation_code.blank? || !Task.find(:first, :conditions => {:code => invitation_code})) + if usp_id.blank? && (invitation_code.blank? || !Task.pending.find(:first, :conditions => {:code => invitation_code})) errors.add(:usp_id, "can't register without usp_id or invitation") end end diff --git a/plugins/stoa/test/unit/person.rb b/plugins/stoa/test/unit/person.rb index 416cc0e..a395e08 100644 --- a/plugins/stoa/test/unit/person.rb +++ b/plugins/stoa/test/unit/person.rb @@ -2,6 +2,13 @@ require File.dirname(__FILE__) + '/../../../../test/test_helper' class StoaPlugin::Person < ActiveSupport::TestCase + def setup + @environment = Environment.default + @environment.enable_plugin(StoaPlugin) + end + + attr_reader :environment + should 'validates uniqueness of usp_id' do usp_id = 87654321 fast_create(Person, :usp_id => usp_id) @@ -12,8 +19,6 @@ class StoaPlugin::Person < ActiveSupport::TestCase end should 'allow nil usp_id only if person has an invitation_code' do - environment = Environment.default - environment.enable_plugin(StoaPlugin) person = Person.new(:environment => environment) person.valid? assert person.errors.invalid?(:usp_id) @@ -34,5 +39,14 @@ class StoaPlugin::Person < ActiveSupport::TestCase assert !person.errors.invalid?(:usp_id) end + should 'not allow person register with a finished task' do + t = Task.create!(:code => 87654321) + t.finish + person = Person.new(:environment => environment, :invitation_code => 87654321) + person.valid? + + assert person.errors.invalid?(:usp_id) + end + end -- libgit2 0.21.2