Commit e04a0099beb7b9e2fa85b610ab8043ee0b212d2c

Authored by Evandro Junior
2 parents 556fff56 f1ad087c

Merge branch 'virtuoso_integration' into production

* virtuoso_integration:
  changed time_ago_as_sentence to time_ago_in_words
  fixed display last_harvest
  fix problema creating job
  fix saving last_harvest to settings
  test fixed
  test fixed
  new unit test
  save_harvest_time at the end of a harverst
plugins/virtuoso/lib/virtuoso_plugin/dspace_harvest.rb
@@ -60,14 +60,14 @@ class VirtuosoPlugin::DspaceHarvest @@ -60,14 +60,14 @@ class VirtuosoPlugin::DspaceHarvest
60 raise ex 60 raise ex
61 end 61 end
62 end 62 end
  63 + save_harvest_time_settings(harvest_time)
63 puts "ending harvest #{harvest_time}" 64 puts "ending harvest #{harvest_time}"
64 end 65 end
65 66
66 def save_harvest_time_settings(harvest_time) 67 def save_harvest_time_settings(harvest_time)
67 - dspace_settings = {"dspace_uri" => dspace_uri, "last_harvest" => last_harvest}  
68 settings.dspace_servers.each do |s| 68 settings.dspace_servers.each do |s|
69 if s["dspace_uri"] == dspace_uri 69 if s["dspace_uri"] == dspace_uri
70 - settings.dspace_servers.delete(dspace_settings) 70 + settings.dspace_servers.delete(s)
71 end 71 end
72 end 72 end
73 @dspace_settings = {"dspace_uri" => dspace_uri, "last_harvest" => harvest_time} 73 @dspace_settings = {"dspace_uri" => dspace_uri, "last_harvest" => harvest_time}
@@ -102,8 +102,8 @@ class VirtuosoPlugin::DspaceHarvest @@ -102,8 +102,8 @@ class VirtuosoPlugin::DspaceHarvest
102 102
103 class Job < Struct.new(:environment_id, :dspace_uri) 103 class Job < Struct.new(:environment_id, :dspace_uri)
104 def perform 104 def perform
105 - environment = Environment.find(environment_id, dspace_uri)  
106 - harvest = VirtuosoPlugin::DspaceHarvest.new(environment, {"dspace_uri" => dspace_uri, "last_harvest" => last_harvest}) 105 + environment = Environment.find(environment_id)
  106 + harvest = VirtuosoPlugin::DspaceHarvest.new(environment, {"dspace_uri" => dspace_uri})
107 harvest.run 107 harvest.run
108 end 108 end
109 end 109 end
plugins/virtuoso/test/integration/dspace_test.rb 0 → 100644
@@ -0,0 +1,28 @@ @@ -0,0 +1,28 @@
  1 +#require File.dirname(__FILE__) + '/../test_helper.rb'
  2 +#
  3 +#class DspaceTest < ActiveSupport::TestCase
  4 +#
  5 +# def setup
  6 +# @environment = Environment.default
  7 +# end
  8 +#
  9 +# attr_reader :environment
  10 +#
  11 +# should 'list at least one record' do
  12 +# settings =
  13 +# { :virtuoso_uri=>"http://hom.virtuoso.participa.br",
  14 +# :virtuoso_username=>"dba",
  15 +# :virtuoso_password=>"dba",
  16 +# :virtuoso_readonly_username=>"dba",
  17 +# :virtuoso_readonly_password=>"dba",
  18 +# :dspace_servers=>[
  19 +# {"dspace_uri"=>"http://hom.dspace.participa.br"}
  20 +# ]
  21 +# }
  22 +# settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin, settings)
  23 +# harvest = VirtuosoPlugin::DspaceHarvest.new(environment, {"dspace_uri"=>"http://hom.dspace.participa.br"})
  24 +# params = harvest.last_harvest ? {:from => harvest.last_harvest.utc} : {}
  25 +# records = harvest.dspace_client.list_records(params)
  26 +# assert_not_equal records.count, 0
  27 +# end
  28 +#end
0 \ No newline at end of file 29 \ No newline at end of file
plugins/virtuoso/test/integration/virtuoso.rb 0 → 100644
@@ -0,0 +1,33 @@ @@ -0,0 +1,33 @@
  1 +#require File.dirname(__FILE__) + '/../test_helper.rb'
  2 +#
  3 +#class DspaceTest < ActiveSupport::TestCase
  4 +#
  5 +# def setup
  6 +# @environment = Environment.default
  7 +# end
  8 +#
  9 +# attr_reader :environment
  10 +#
  11 +#
  12 +# should 'update last_harvest after harvert' do
  13 +# time = Time.now.utc
  14 +# settings =
  15 +# { :virtuoso_uri=>"http://hom.virtuoso.participa.br",
  16 +# :virtuoso_username=>"dba",
  17 +# :virtuoso_password=>"dba",
  18 +# :virtuoso_readonly_username=>"dba",
  19 +# :virtuoso_readonly_password=>"dba",
  20 +# :dspace_servers=>[
  21 +# {"dspace_uri"=>"http://hom.dspace.participa.br"}
  22 +# ]
  23 +# }
  24 +# @settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin, settings)
  25 +# harvest = VirtuosoPlugin::DspaceHarvest.new(environment, {"dspace_uri"=>"http://hom.dspace.participa.br" })
  26 +# harvest.run
  27 +# assert_not_equal harvest.last_harvest, nil
  28 +# Noosfero::Plugin::Settings.new(environment.reload, VirtuosoPlugin)
  29 +# assert_not_equal harvest.last_harvest, nil
  30 +# assert_not_equal harvest.last_harvest, Time.now.utc
  31 +# end
  32 +#
  33 +#end
0 \ No newline at end of file 34 \ No newline at end of file
plugins/virtuoso/test/unit/dspace_harvest_test.rb
1 -require File.dirname(__FILE__) + '/../test_helper' 1 +require File.dirname(__FILE__) + '/../test_helper.rb'
2 2
3 class DspaceHarvestTest < ActiveSupport::TestCase 3 class DspaceHarvestTest < ActiveSupport::TestCase
4 4
@@ -15,11 +15,11 @@ class DspaceHarvestTest &lt; ActiveSupport::TestCase @@ -15,11 +15,11 @@ class DspaceHarvestTest &lt; ActiveSupport::TestCase
15 :virtuoso_readonly_username=>"readonly_username", 15 :virtuoso_readonly_username=>"readonly_username",
16 :virtuoso_readonly_password=>"readonly_password", 16 :virtuoso_readonly_password=>"readonly_password",
17 :dspace_servers=>[ 17 :dspace_servers=>[
18 - {"dspace_uri"=>"http://dspace1.noosfero.com","last_harvest" => 5 }, 18 + {"dspace_uri"=>"http://dspace1.noosfero.com","last_harvest" => Time.now.utc },
19 {"dspace_uri"=>"http://dspace2.noosfero.com"}, 19 {"dspace_uri"=>"http://dspace2.noosfero.com"},
20 - {"dspace_uri"=>"http://dspace3.noosfero.com", "last_harvest" => 0}, 20 + {"dspace_uri"=>"http://dspace3.noosfero.com", "last_harvest" => Time.now.utc},
21 {"dspace_uri"=>"http://dspace4.noosfero.com", "last_harvest" => nil}, 21 {"dspace_uri"=>"http://dspace4.noosfero.com", "last_harvest" => nil},
22 - {"dspace_uri"=>"http://dspace5.noosfero.com", "last_harvest" => 9}, 22 + {"dspace_uri"=>"http://dspace5.noosfero.com", "last_harvest" => Time.now.utc},
23 ] 23 ]
24 } 24 }
25 end 25 end
@@ -36,17 +36,21 @@ class DspaceHarvestTest &lt; ActiveSupport::TestCase @@ -36,17 +36,21 @@ class DspaceHarvestTest &lt; ActiveSupport::TestCase
36 end 36 end
37 37
38 should 'save_harvest_time_settings' do 38 should 'save_harvest_time_settings' do
39 - @settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin, mock_settings) 39 + Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin, mock_settings)
40 harvest = VirtuosoPlugin::DspaceHarvest.new(environment, {"dspace_uri"=>"http://dspace5.noosfero.com", "last_harvest" => 9}) 40 harvest = VirtuosoPlugin::DspaceHarvest.new(environment, {"dspace_uri"=>"http://dspace5.noosfero.com", "last_harvest" => 9})
41 assert harvest.last_harvest, 9 41 assert harvest.last_harvest, 9
42 harvest.save_harvest_time_settings(10) 42 harvest.save_harvest_time_settings(10)
43 - @settings = Noosfero::Plugin::Settings.new(environment.reload, VirtuosoPlugin)  
44 assert harvest.last_harvest, 10 43 assert harvest.last_harvest, 10
  44 + settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin)
  45 + dspace_server = settings.dspace_servers[4]
  46 + settings = Noosfero::Plugin::Settings.new(environment.reload, VirtuosoPlugin)
  47 + dspace_server = settings.dspace_servers[4]
  48 + assert_equal 10, dspace_server["last_harvest"]
45 end 49 end
46 50
47 should 'create delayed job when start' do 51 should 'create delayed job when start' do
48 - @settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin, mock_settings)  
49 - @settings.save! 52 + settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin, mock_settings)
  53 + settings.save!
50 harvest = VirtuosoPlugin::DspaceHarvest.new(environment, {"dspace_uri"=>"http://dspace1.noosfero.com", "last_harvest" => 5}) 54 harvest = VirtuosoPlugin::DspaceHarvest.new(environment, {"dspace_uri"=>"http://dspace1.noosfero.com", "last_harvest" => 5})
51 assert !harvest.find_job.present? 55 assert !harvest.find_job.present?
52 harvest.start 56 harvest.start
@@ -54,8 +58,8 @@ class DspaceHarvestTest &lt; ActiveSupport::TestCase @@ -54,8 +58,8 @@ class DspaceHarvestTest &lt; ActiveSupport::TestCase
54 end 58 end
55 59
56 should 'not duplicate harvest job' do 60 should 'not duplicate harvest job' do
57 - @settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin, mock_settings)  
58 - @settings.save! 61 + settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin, mock_settings)
  62 + settings.save!
59 harvest = VirtuosoPlugin::DspaceHarvest.new(environment, {"dspace_uri"=>"http://dspace1.noosfero.com", "last_harvest" => 5}) 63 harvest = VirtuosoPlugin::DspaceHarvest.new(environment, {"dspace_uri"=>"http://dspace1.noosfero.com", "last_harvest" => 5})
60 assert_difference "harvest.find_job.count", 1 do 64 assert_difference "harvest.find_job.count", 1 do
61 5.times { harvest.start } 65 5.times { harvest.start }
@@ -67,8 +71,8 @@ class DspaceHarvestTest &lt; ActiveSupport::TestCase @@ -67,8 +71,8 @@ class DspaceHarvestTest &lt; ActiveSupport::TestCase
67 end 71 end
68 72
69 should 'try to harvest all dspaces from start with mock configuration' do 73 should 'try to harvest all dspaces from start with mock configuration' do
70 - @settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin, mock_settings)  
71 - @settings.save! 74 + settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin, mock_settings)
  75 + settings.save!
72 VirtuosoPlugin::DspaceHarvest.harvest_all(environment, true) 76 VirtuosoPlugin::DspaceHarvest.harvest_all(environment, true)
73 end 77 end
74 78
@@ -77,9 +81,50 @@ class DspaceHarvestTest &lt; ActiveSupport::TestCase @@ -77,9 +81,50 @@ class DspaceHarvestTest &lt; ActiveSupport::TestCase
77 end 81 end
78 82
79 should 'try to harvest all dspaces with mock configuration' do 83 should 'try to harvest all dspaces with mock configuration' do
80 - @settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin, mock_settings)  
81 - @settings.save! 84 + settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin, mock_settings)
  85 + settings.save!
82 VirtuosoPlugin::DspaceHarvest.harvest_all(environment, false) 86 VirtuosoPlugin::DspaceHarvest.harvest_all(environment, false)
83 end 87 end
84 88
85 -end 89 + should 'update last_harvest after harvert' do
  90 + time = Time.now.utc
  91 + settings =
  92 + { :virtuoso_uri=>"http://virtuoso",
  93 + :virtuoso_username=>"username",
  94 + :virtuoso_password=>"password",
  95 + :virtuoso_readonly_username=>"username",
  96 + :virtuoso_readonly_password=>"password",
  97 + :dspace_servers=>[
  98 + {"dspace_uri"=>"http://dspace","last_harvest" => time }
  99 + ]
  100 + }
  101 + @settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin, settings)
  102 + harvest = VirtuosoPlugin::DspaceHarvest.new(environment, {"dspace_uri"=>"http://dspace" })
  103 + dspace_client = mock
  104 + harvest.expects(:dspace_client).returns(dspace_client)
  105 + dspace_client.expects(:list_records).returns([])
  106 + harvest.run
  107 + assert_not_equal harvest.last_harvest, nil
  108 + Noosfero::Plugin::Settings.new(environment.reload, VirtuosoPlugin)
  109 + assert_not_equal harvest.last_harvest, nil
  110 + assert_not_equal harvest.last_harvest, Time.now.utc
  111 + end
  112 +
  113 + should 'list records' do
  114 + settings =
  115 + { :virtuoso_uri=>"http://hom.virtuoso.participa.br",
  116 + :virtuoso_username=>"dba",
  117 + :virtuoso_password=>"dba",
  118 + :virtuoso_readonly_username=>"dba",
  119 + :virtuoso_readonly_password=>"dba",
  120 + :dspace_servers=>[
  121 + {"dspace_uri"=>"http://hom.dspace.participa.br"}
  122 + ]
  123 + }
  124 + settings = Noosfero::Plugin::Settings.new(environment, VirtuosoPlugin, settings)
  125 + harvest = VirtuosoPlugin::DspaceHarvest.new(environment, {"dspace_uri"=>"http://hom.dspace.participa.br"})
  126 + params = harvest.last_harvest ? {:from => harvest.last_harvest.utc} : {}
  127 + records = harvest.dspace_client.list_records(params)
  128 + assert_not_equal records.count, 0
  129 + end
  130 +end
86 \ No newline at end of file 131 \ No newline at end of file
plugins/virtuoso/views/virtuoso_plugin_admin/_server_list_item.html.erb
1 <div> 1 <div>
2 - <% value = server_list_item[:dspace_uri] if server_list_item %> 2 + <%
  3 +
  4 + value = server_list_item[:dspace_uri] if server_list_item %>
3 <%= text_field_tag 'settings[dspace_servers][][dspace_uri]', value, { :class => 'link-name', :maxlength => 60, :size=> 58 } %> 5 <%= text_field_tag 'settings[dspace_servers][][dspace_uri]', value, { :class => 'link-name', :maxlength => 60, :size=> 58 } %>
4 <%= button_without_text(:delete, _('Delete'), "#" , :class=>"delete-server-list-row") %> 6 <%= button_without_text(:delete, _('Delete'), "#" , :class=>"delete-server-list-row") %>
5 - <% last_execution = server_list_item[:last_harvest] if server_list_item  
6 - if last_execution %> 7 +
  8 + <%
  9 + last_execution = server_list_item["last_harvest"] if server_list_item
  10 + if last_execution
  11 + %>
7 <div class="date" style="display: inline-block;"> 12 <div class="date" style="display: inline-block;">
8 <span class="label"><strong><%= _('Last execution:') %></strong></span> 13 <span class="label"><strong><%= _('Last execution:') %></strong></span>
9 - <span class="value"><%= time_ago_as_sentence last_execution %></span> 14 + <span class="value"><%= time_ago_in_words last_execution %></span>
10 </div> 15 </div>
11 <% end %> 16 <% end %>
12 <BR><BR> 17 <BR><BR>
13 </div> 18 </div>
14 -  
plugins/virtuoso/views/virtuoso_plugin_admin/index.html.erb
@@ -7,9 +7,9 @@ @@ -7,9 +7,9 @@
7 <strong> 7 <strong>
8 <%= labelled_form_field _('Virtuoso URL:'), f.text_field(:virtuoso_uri, :size=> 60) %> 8 <%= labelled_form_field _('Virtuoso URL:'), f.text_field(:virtuoso_uri, :size=> 60) %>
9 <%= labelled_form_field _('Virtuoso Admin Username:'), f.text_field(:virtuoso_username, :size=> 60) %> 9 <%= labelled_form_field _('Virtuoso Admin Username:'), f.text_field(:virtuoso_username, :size=> 60) %>
10 - <%= labelled_form_field _('Virtuoso Admin Password:'), f.password_field(:virtuoso_password, :size=> 60) %> 10 + <%= labelled_form_field _('Virtuoso Admin Password:'), f.password_field(:virtuoso_password, :size=> 60, value: @settings.virtuoso_password) %>
11 <%= labelled_form_field _('Virtuoso Read-Only Username:'), f.text_field(:virtuoso_readonly_username, :size=> 60) %> 11 <%= labelled_form_field _('Virtuoso Read-Only Username:'), f.text_field(:virtuoso_readonly_username, :size=> 60) %>
12 - <%= labelled_form_field _('Virtuoso Read-Only Password:'), f.password_field(:virtuoso_readonly_password, :size=> 60) %> 12 + <%= labelled_form_field _('Virtuoso Read-Only Password:'), f.password_field(:virtuoso_readonly_password, :size=> 60, value: @settings.virtuoso_readonly_password) %>
13 </strong> 13 </strong>
14 <BR> 14 <BR>
15 <div class="dspace-servers-config-box" > 15 <div class="dspace-servers-config-box" >