Commit 8ae986e8935acb068a78767ed8db109d54a26389
1 parent
e174607d
Exists in
theme-brasil-digital-from-staging
and in
9 other branches
virtuoso: handle errors when rendering templates
Showing
3 changed files
with
41 additions
and
3 deletions
Show diff stats
plugins/virtuoso/lib/virtuoso_plugin.rb
| @@ -20,4 +20,8 @@ class VirtuosoPlugin < Noosfero::Plugin | @@ -20,4 +20,8 @@ class VirtuosoPlugin < Noosfero::Plugin | ||
| 20 | @virtuoso_client ||= RDF::Virtuoso::Repository.new("#{settings.virtuoso_uri}/sparql", :update_uri => "#{settings.virtuoso_uri}/sparql-auth", :username => settings.virtuoso_username, :password => settings.virtuoso_password, :auth_method => 'digest', :timeout => 30) | 20 | @virtuoso_client ||= RDF::Virtuoso::Repository.new("#{settings.virtuoso_uri}/sparql", :update_uri => "#{settings.virtuoso_uri}/sparql-auth", :username => settings.virtuoso_username, :password => settings.virtuoso_password, :auth_method => 'digest', :timeout => 30) |
| 21 | end | 21 | end |
| 22 | 22 | ||
| 23 | + def stylesheet? | ||
| 24 | + true | ||
| 25 | + end | ||
| 26 | + | ||
| 23 | end | 27 | end |
plugins/virtuoso/lib/virtuoso_plugin/triples_template.rb
| @@ -25,9 +25,14 @@ class VirtuosoPlugin::TriplesTemplate < Article | @@ -25,9 +25,14 @@ class VirtuosoPlugin::TriplesTemplate < Article | ||
| 25 | end | 25 | end |
| 26 | 26 | ||
| 27 | def template_content | 27 | def template_content |
| 28 | - results = plugin.virtuoso_client.query(query) | ||
| 29 | - liquid_template = Liquid::Template.parse("{% for row in results %}#{template}{% endfor %}") | ||
| 30 | - liquid_template.render('results' => results) | 28 | + begin |
| 29 | + results = plugin.virtuoso_client.query(query) | ||
| 30 | + liquid_template = Liquid::Template.parse("{% for row in results %}#{template}{% endfor %}") | ||
| 31 | + liquid_template.render('results' => results) | ||
| 32 | + rescue => ex | ||
| 33 | + logger.info ex.to_s | ||
| 34 | + "Failed to process the template" | ||
| 35 | + end | ||
| 31 | end | 36 | end |
| 32 | 37 | ||
| 33 | end | 38 | end |
| @@ -0,0 +1,29 @@ | @@ -0,0 +1,29 @@ | ||
| 1 | +require File.dirname(__FILE__) + '/../test_helper' | ||
| 2 | + | ||
| 3 | +class TriplesTemplateTest < ActiveSupport::TestCase | ||
| 4 | + | ||
| 5 | + def setup | ||
| 6 | + @article = VirtuosoPlugin::TriplesTemplate.new | ||
| 7 | + end | ||
| 8 | + | ||
| 9 | + attr_reader :article | ||
| 10 | + | ||
| 11 | + should 'evaluate template using query results' do | ||
| 12 | + article.stubs(:plugin).returns(mock) | ||
| 13 | + article.plugin.expects(:virtuoso_client).at_least_once.returns(mock) | ||
| 14 | + article.plugin.virtuoso_client.expects(:query).returns([{'var' => 'Hello '}, {'var' => 'World'}]) | ||
| 15 | + article.template = "{{row.var}}" | ||
| 16 | + | ||
| 17 | + assert_equal 'Hello World', article.template_content | ||
| 18 | + end | ||
| 19 | + | ||
| 20 | + should 'display error message when failed to execute the query' do | ||
| 21 | + article.stubs(:plugin).returns(mock) | ||
| 22 | + article.plugin.expects(:virtuoso_client).at_least_once.returns(mock) | ||
| 23 | + article.plugin.virtuoso_client.expects(:query).raises(RuntimeError.new) | ||
| 24 | + article.template = "{{row.var}}" | ||
| 25 | + | ||
| 26 | + assert_equal "Failed to process the template", article.template_content | ||
| 27 | + end | ||
| 28 | + | ||
| 29 | +end |