diff --git a/app/views/sources/_test_resource_error.html.erb b/app/views/sources/_test_resource_error.html.erb new file mode 100644 index 000000000..29ca25bf7 --- /dev/null +++ b/app/views/sources/_test_resource_error.html.erb @@ -0,0 +1,9 @@ +
+

<%= "#{t('sources.testing.error.title')} (#{resource_type})" %>

+

+

<%= t('sources.testing.error.input_data') %>
+
<%= JSON.pretty_generate(resource_params) %>
+
<%= "#{t('sources.testing.error.message')} #{exception.message}" %>
+
<%= exception.backtrace.first(3).join('
').html_safe %>
+

+
diff --git a/app/views/sources/_test_results.html.erb b/app/views/sources/_test_results.html.erb index b3c0eb54d..3e22d5011 100644 --- a/app/views/sources/_test_results.html.erb +++ b/app/views/sources/_test_results.html.erb @@ -28,9 +28,17 @@ Showing <%= pluralize(sample.count, 'sample') %> <% end %> <% sample.each do |resource_params| %> - <% resource = Source.get_test_resource(type, resource_params, user: User.get_default_user, - content_provider: @content_provider) %> - <%= render partial: 'sources/test_resource', locals: { resource: resource, resource_params: resource_params } %> + <% begin %> + <% resource = Source.get_test_resource(type, resource_params, user: User.get_default_user, + content_provider: @content_provider) %> + <%= render partial: 'sources/test_resource', locals: { resource: resource, + resource_params: resource_params } %> + <% rescue StandardError => e %> + <%= render partial: 'sources/test_resource_error', + locals: { resource_params: resource_params, + resource_type: type, + exception: e } %> + <% end %> <% end %> <% end %> <% end %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 727d7ca70..fa871b1f6 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -818,6 +818,11 @@ en: filters: Filters allow_list: Allow List block_list: Block List + testing: + error: + title: "Error rendering test ingestion!" + input_data: "Input data:" + message: "Error message:" prompts: default_language: 'Select a default language...' scraper: