diff --git a/plugins/stoa/controllers/stoa_plugin_controller.rb b/plugins/stoa/controllers/stoa_plugin_controller.rb index 28d8099..300e38d 100644 --- a/plugins/stoa/controllers/stoa_plugin_controller.rb +++ b/plugins/stoa/controllers/stoa_plugin_controller.rb @@ -26,7 +26,7 @@ class StoaPluginController < PublicController def check_usp_id begin - render :text => { :exists => StoaPlugin::UspUser.exists?(params[:usp_id]) }.to_json + render :text => { :exists => StoaPlugin::UspUser.exists?(params[:usp_id]) && Person.find_by_usp_id(params[:usp_id]).nil? }.to_json rescue Exception => exception render :text => { :exists => false, :error => {:message => exception.to_s, :backtrace => exception.backtrace} }.to_json end diff --git a/plugins/stoa/lib/ext/person.rb b/plugins/stoa/lib/ext/person.rb new file mode 100644 index 0000000..816f116 --- /dev/null +++ b/plugins/stoa/lib/ext/person.rb @@ -0,0 +1,5 @@ +require_dependency 'person' + +class Person + validates_uniqueness_of :usp_id +end diff --git a/plugins/stoa/lib/stoa_plugin.rb b/plugins/stoa/lib/stoa_plugin.rb index 9da2b87..9d37d1f 100644 --- a/plugins/stoa/lib/stoa_plugin.rb +++ b/plugins/stoa/lib/stoa_plugin.rb @@ -1,4 +1,5 @@ require_dependency 'person' +require_dependency 'ext/person' class StoaPlugin < Noosfero::Plugin diff --git a/plugins/stoa/test/unit/person.rb b/plugins/stoa/test/unit/person.rb new file mode 100644 index 0000000..f3dbd6e --- /dev/null +++ b/plugins/stoa/test/unit/person.rb @@ -0,0 +1,17 @@ +require File.dirname(__FILE__) + '/../../../../test/test_helper' + +class StoaPlugin::Person < ActiveSupport::TestCase + + should 'validates uniqueness of usp_id' do + usp_id = 12345678 + person = create_user('some-person').person + person.usp_id = usp_id + person.save! + another_person = Person.new(:name => "Another person", :identifier => 'another-person', :usp_id => usp_id) + + assert !another_person.valid? + assert another_person.errors.invalid?(:usp_id) + end + +end + -- libgit2 0.21.2