diff --git a/plugins/virtuoso/lib/virtuoso_plugin/dspace_harvest.rb b/plugins/virtuoso/lib/virtuoso_plugin/dspace_harvest.rb index ebcdeff..50c9b05 100644 --- a/plugins/virtuoso/lib/virtuoso_plugin/dspace_harvest.rb +++ b/plugins/virtuoso/lib/virtuoso_plugin/dspace_harvest.rb @@ -55,10 +55,12 @@ class VirtuosoPlugin::DspaceHarvest def self.harvest_all(environment, from_start) settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin) - settings.dspace_servers.each do |k, v| - harvest = VirtuosoPlugin::DspaceHarvest.new(environment, k[:dspace_uri]) - harvest.start(from_start) - end + if defined?(settings.dspace_servers) + settings.dspace_servers.each do |k, v| + harvest = VirtuosoPlugin::DspaceHarvest.new(environment, k[:dspace_uri]) + harvest.start(from_start) + end + end end def start(from_start = false) diff --git a/plugins/virtuoso/test/functional/virtuoso_plugin_admin_controller_test.rb b/plugins/virtuoso/test/functional/virtuoso_plugin_admin_controller_test.rb index 9d264e1..ac3ee7a 100644 --- a/plugins/virtuoso/test/functional/virtuoso_plugin_admin_controller_test.rb +++ b/plugins/virtuoso/test/functional/virtuoso_plugin_admin_controller_test.rb @@ -3,39 +3,42 @@ require File.dirname(__FILE__) + '/../test_helper' class VirtuosoPluginAdminControllerTest < ActionController::TestCase attr_reader :environment - + def setup @environment = Environment.default @profile = create_user('profile').person login_as(@profile.identifier) post :index, :settings => mock_settings end - + def mock_settings - { - :virtuoso_uri=>"http://virtuoso.noosfero.com", - :virtuoso_username=>"username", :virtuoso_password=>"password", - :virtuoso_readonly_username=>"username", - :virtuoso_readonly_password=>"password", - :dspace_servers=>[ - {"dspace_uri"=>"http://dspace1.noosfero.com"}, - {"dspace_uri"=>"http://dspace2.noosfero.com"}, - {"dspace_uri"=>"http://dspace3.noosfero.com"} - ] + { :virtuoso_uri=>"http://virtuoso.noosfero.com", + :virtuoso_username=>"username", + :virtuoso_password=>"password", + :virtuoso_readonly_username=>"readonly_username", + :virtuoso_readonly_password=>"readonly_password", + :dspace_servers=>[ + {"dspace_uri"=>"http://dspace1.noosfero.com"}, + {"dspace_uri"=>"http://dspace2.noosfero.com"}, + {"dspace_uri"=>"http://dspace3.noosfero.com"} + ] } - end + end should 'save virtuoso plugin settings' do @settings = Noosfero::Plugin::Settings.new(environment.reload, VirtuosoPlugin) assert_equal 'http://virtuoso.noosfero.com', @settings.settings[:virtuoso_uri] assert_equal 'username', @settings.settings[:virtuoso_username] assert_equal 'password', @settings.settings[:virtuoso_password] + assert_equal 'readonly_username', @settings.settings[:virtuoso_readonly_username] + assert_equal 'readonly_password', @settings.settings[:virtuoso_readonly_password] assert_equal 'http://dspace1.noosfero.com', @settings.settings[:dspace_servers][0][:dspace_uri] assert_equal 'http://dspace2.noosfero.com', @settings.settings[:dspace_servers][1][:dspace_uri] assert_equal 'http://dspace3.noosfero.com', @settings.settings[:dspace_servers][2][:dspace_uri] assert_redirected_to :action => 'index' end + should 'redirect to index after save' do post :index, :settings => mock_settings assert_redirected_to :action => 'index' @@ -55,4 +58,8 @@ class VirtuosoPluginAdminControllerTest < ActionController::TestCase assert_equal nil, harvest.settings.last_harvest end -end + should 'force harvest_all from start' do + get :force_harvest, :from_start => true + end + +end \ No newline at end of file diff --git a/plugins/virtuoso/test/unit/dspace_harvest_test.rb b/plugins/virtuoso/test/unit/dspace_harvest_test.rb index 85e7160..cf2ce97 100644 --- a/plugins/virtuoso/test/unit/dspace_harvest_test.rb +++ b/plugins/virtuoso/test/unit/dspace_harvest_test.rb @@ -7,6 +7,20 @@ class DspaceHarvestTest < ActiveSupport::TestCase end attr_reader :environment + + def mock_settings + { :virtuoso_uri=>"http://virtuoso.noosfero.com", + :virtuoso_username=>"username", + :virtuoso_password=>"password", + :virtuoso_readonly_username=>"readonly_username", + :virtuoso_readonly_password=>"readonly_password", + :dspace_servers=>[ + {"dspace_uri"=>"http://dspace1.noosfero.com"}, + {"dspace_uri"=>"http://dspace2.noosfero.com"}, + {"dspace_uri"=>"http://dspace3.noosfero.com"} + ] + } + end should 'create delayed job when start' do harvest = VirtuosoPlugin::DspaceHarvest.new(environment) @@ -21,5 +35,29 @@ class DspaceHarvestTest < ActiveSupport::TestCase 5.times { harvest.start } end end + + should 'harvest all dspaces from start' do + VirtuosoPlugin::DspaceHarvest.harvest_all(environment, true) + end + + should 'try to harvest all dspaces from start without any setting' do + VirtuosoPlugin::DspaceHarvest.harvest_all(environment, true) + end + + should 'try to harvest all dspaces from start with mock configuration' do + @settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin, mock_settings) + @settings.save! + VirtuosoPlugin::DspaceHarvest.harvest_all(environment, true) + end + + should 'try to harvest all dspaces without any setting' do + VirtuosoPlugin::DspaceHarvest.harvest_all(environment, false) + end + + should 'try to harvest all dspaces with mock configuration' do + @settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin, mock_settings) + @settings.save! + VirtuosoPlugin::DspaceHarvest.harvest_all(environment, false) + end end -- libgit2 0.21.2