sufia 7.0.0.beta3 → 7.0.0.beta4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +10 -0
- data/.rubocop_todo.yml +66 -7
- data/app/controllers/concerns/sufia/batch_uploads_controller_behavior.rb +0 -1
- data/app/controllers/concerns/sufia/collections_controller_behavior.rb +0 -1
- data/app/controllers/concerns/sufia/contact_form_controller_behavior.rb +6 -3
- data/app/controllers/concerns/sufia/controller.rb +0 -7
- data/app/controllers/concerns/sufia/file_sets_controller_behavior.rb +1 -1
- data/app/controllers/concerns/sufia/uploads_controller_behavior.rb +18 -0
- data/app/controllers/concerns/sufia/users_controller_behavior.rb +1 -25
- data/app/controllers/concerns/sufia/works_controller_behavior.rb +31 -32
- data/app/controllers/curation_concerns/audits_controller.rb +0 -1
- data/app/controllers/sufia/resource_sync_controller.rb +41 -0
- data/app/controllers/sufia/trophies_controller.rb +17 -0
- data/app/controllers/sufia/uploads_controller.rb +1 -12
- data/app/helpers/sufia/sufia_helper_behavior.rb +15 -3
- data/app/helpers/trophy_helper.rb +1 -1
- data/app/models/concerns/sufia/user.rb +0 -12
- data/app/models/contact_form.rb +2 -2
- data/app/models/local_authority.rb +5 -2
- data/app/presenters/sufia/user_profile_presenter.rb +29 -0
- data/app/services/sufia/query_service.rb +1 -1
- data/app/views/collections/_edit_actions.html.erb +2 -1
- data/app/views/collections/_show_actions.html.erb +2 -1
- data/app/views/collections/_work_action_menu.html.erb +1 -1
- data/app/views/contact_form/new.html.erb +1 -1
- data/app/views/curation_concerns/base/_form_progress.html.erb +1 -1
- data/app/views/dashboard/_index_partials/_contents.html.erb +1 -1
- data/app/views/dashboard/_index_partials/_proxy_rights.html.erb +2 -2
- data/app/views/layouts/_head_tag_content.html.erb +1 -0
- data/app/views/my/_work_action_menu.html.erb +1 -1
- data/app/views/sufia/homepage/_featured_fields.html.erb +1 -5
- data/app/views/sufia/homepage/_home_header.html.erb +1 -1
- data/app/views/transfers/new.html.erb +1 -1
- data/app/views/users/_activity.html.erb +1 -1
- data/app/views/users/_contributions.html.erb +5 -5
- data/app/views/users/_edit_primary.html.erb +2 -2
- data/app/views/users/_profile_actions.html.erb +1 -1
- data/app/views/users/_profile_tabs.html.erb +2 -2
- data/app/views/users/show.html.erb +2 -5
- data/config/locales/sufia.en.yml +1 -1
- data/config/routes.rb +7 -8
- data/{lib/generators/sufia/templates/migrations/acts_as_follower_migration.rb → db/migrate/20160328222155_acts_as_follower_migration.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/add_social_to_users.rb → db/migrate/20160328222156_add_social_to_users.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/add_ldap_attrs_to_user.rb → db/migrate/20160328222157_add_ldap_attrs_to_user.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/add_avatars_to_users.rb → db/migrate/20160328222158_add_avatars_to_users.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/create_local_authorities.rb → db/migrate/20160328222160_create_local_authorities.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/create_trophies.rb → db/migrate/20160328222161_create_trophies.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/add_linkedin_to_users.rb → db/migrate/20160328222162_add_linkedin_to_users.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/create_tinymce_assets.rb → db/migrate/20160328222163_create_tinymce_assets.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/create_content_blocks.rb → db/migrate/20160328222164_create_content_blocks.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/create_featured_works.rb → db/migrate/20160328222165_create_featured_works.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/add_external_key_to_content_blocks.rb → db/migrate/20160328222166_add_external_key_to_content_blocks.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/create_proxy_deposit_rights.rb → db/migrate/20160328222226_create_proxy_deposit_rights.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/create_proxy_deposit_requests.rb → db/migrate/20160328222227_create_proxy_deposit_requests.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/create_file_view_stats.rb → db/migrate/20160328222228_create_file_view_stats.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/create_file_download_stats.rb → db/migrate/20160328222229_create_file_download_stats.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/add_orcid_to_users.rb → db/migrate/20160328222230_add_orcid_to_users.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/create_user_stats.rb → db/migrate/20160328222231_create_user_stats.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/create_work_view_stats.rb → db/migrate/20160328222232_create_work_view_stats.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/add_works_to_user_stats.rb → db/migrate/20160328222233_add_works_to_user_stats.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/change_trophy_generic_file_id_to_work_id.rb → db/migrate/20160328222236_change_trophy_generic_file_id_to_work_id.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/change_proxy_deposit_generic_file_id_to_work_id.rb → db/migrate/20160328222237_change_proxy_deposit_generic_file_id_to_work_id.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/change_audit_log_generic_file_id_to_file_set_id.rb → db/migrate/20160328222238_change_audit_log_generic_file_id_to_file_set_id.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/change_proxy_deposit_request_generic_file_id_to_work_id.rb → db/migrate/20160328222239_change_proxy_deposit_request_generic_file_id_to_work_id.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/create_uploaded_files.rb → db/migrate/20160401142419_create_uploaded_files.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/change_featured_work_generic_file_id_to_work_id.rb → db/migrate/20160510000007_change_featured_work_generic_file_id_to_work_id.rb} +0 -0
- data/{lib/generators/sufia/templates/migrations/add_arkivo_to_users.rb → db/migrate/20160516190435_add_arkivo_to_users.rb} +0 -0
- data/lib/generators/sufia/arkivo_api_generator.rb +1 -8
- data/lib/generators/sufia/config_generator.rb +3 -11
- data/lib/generators/sufia/install_generator.rb +12 -46
- data/lib/generators/sufia/templates/catalog_controller.rb +10 -10
- data/lib/generators/sufia/templates/config/sufia.rb +11 -14
- data/lib/generators/sufia/upgrade700_generator.rb +1 -16
- data/lib/sufia.rb +4 -8
- data/lib/sufia/configuration.rb +132 -0
- data/lib/sufia/engine.rb +6 -46
- data/lib/sufia/resource_sync.rb +11 -0
- data/lib/sufia/resource_sync/capability_list_writer.rb +31 -0
- data/lib/sufia/resource_sync/resource_list_writer.rb +77 -0
- data/lib/sufia/resource_sync/source_description_writer.rb +30 -0
- data/lib/sufia/version.rb +1 -1
- data/spec/actors/{create_with_files_actor_spec.rb → sufia/create_with_files_actor_spec.rb} +0 -0
- data/spec/controllers/{admin_stats_controller_spec.rb → admin/stats_controller_spec.rb} +0 -0
- data/spec/controllers/batch_edits_controller_spec.rb +5 -9
- data/spec/controllers/contact_form_controller_spec.rb +88 -0
- data/spec/controllers/{file_sets_controller_spec.rb → curation_concerns/file_sets_controller_spec.rb} +1 -2
- data/spec/controllers/{generic_works_controller_spec.rb → curation_concerns/generic_works_controller_spec.rb} +1 -1
- data/spec/controllers/depositors_controller_spec.rb +1 -1
- data/spec/controllers/featured_works_controller_spec.rb +1 -1
- data/spec/controllers/mailbox_controller_spec.rb +1 -1
- data/spec/controllers/my/highlights_controller_spec.rb +15 -11
- data/spec/controllers/stats_controller_spec.rb +1 -1
- data/spec/controllers/{homepage_controller_spec.rb → sufia/homepage_controller_spec.rb} +1 -1
- data/spec/controllers/sufia/resource_sync_controller_spec.rb +52 -0
- data/spec/controllers/sufia/trophies_controller_spec.rb +27 -0
- data/spec/controllers/transfers_controller_spec.rb +7 -7
- data/spec/controllers/users_controller_spec.rb +22 -60
- data/spec/features/browse_catalog_spec.rb +1 -1
- data/spec/features/collection_spec.rb +6 -7
- data/spec/features/contact_form_spec.rb +2 -89
- data/spec/features/search_spec.rb +7 -7
- data/spec/features/users_spec.rb +1 -1
- data/spec/forms/curation_concerns/{work_form_spec.rb → generic_work_form_spec.rb} +0 -0
- data/spec/forms/sufia/{batch_edit_form_spec.rb → forms/batch_edit_form_spec.rb} +0 -0
- data/spec/forms/sufia/{batch_upload_form_spec.rb → forms/batch_upload_form_spec.rb} +0 -0
- data/spec/forms/sufia/{collection_form_spec.rb → forms/collection_form_spec.rb} +0 -0
- data/spec/helpers/blacklight_helper_spec.rb +91 -0
- data/spec/helpers/dashboard_helper_spec.rb +2 -2
- data/spec/helpers/sufia_helper_spec.rb +7 -12
- data/spec/helpers/trophy_helper_spec.rb +1 -1
- data/spec/javascripts/jasmine_spec.rb +1 -1
- data/spec/lib/sufia/resource_sync/capability_list_writer_spec.rb +26 -0
- data/spec/lib/sufia/resource_sync/resource_list_writer_spec.rb +24 -0
- data/spec/lib/sufia/resource_sync/source_description_writer_spec.rb +21 -0
- data/spec/models/featured_work_spec.rb +1 -1
- data/spec/models/generic_work_spec.rb +7 -10
- data/spec/models/local_authority_spec.rb +3 -11
- data/spec/models/{ability_spec.rb → sufia/ability_spec.rb} +0 -0
- data/spec/models/sufia/download_spec.rb +13 -0
- data/spec/models/sufia/pageview_spec.rb +13 -0
- data/spec/models/sufia/uploaded_file_spec.rb +1 -1
- data/spec/models/{user_usage_stats_spec.rb → sufia/user_usage_stats_spec.rb} +0 -0
- data/spec/models/trophy_spec.rb +5 -7
- data/spec/models/user_spec.rb +12 -12
- data/spec/presenters/{file_usage_spec.rb → sufia/file_usage_spec.rb} +4 -4
- data/spec/presenters/{presenter_renderer_spec.rb → sufia/presenter_renderer_spec.rb} +0 -0
- data/spec/presenters/sufia/user_profile_presenter_spec.rb +23 -0
- data/spec/presenters/{work_usage_spec.rb → sufia/work_usage_spec.rb} +4 -4
- data/spec/requests/legacy_routing_spec.rb +1 -1
- data/spec/routing/ownership_transfers_route_spec.rb +2 -2
- data/spec/routing/route_spec.rb +19 -16
- data/spec/services/{collection_member_service_spec.rb → sufia/collection_member_service_spec.rb} +0 -0
- data/spec/services/{collection_size_service_spec.rb → sufia/collection_size_service_spec.rb} +0 -0
- data/spec/services/{file_set_csv_service_spec.rb → sufia/file_set_csv_service_spec.rb} +0 -0
- data/spec/services/{repository_audit_service_spec.rb → sufia/repository_audit_service_spec.rb} +0 -0
- data/spec/services/{statistics → sufia/statistics}/collections/over_time_spec.rb +0 -0
- data/spec/services/{statistics → sufia/statistics}/depositors/summary_spec.rb +0 -0
- data/spec/services/{statistics → sufia/statistics}/file_sets/by_format_spec.rb +0 -0
- data/spec/services/{statistics → sufia/statistics}/system_stats_spec.rb +0 -0
- data/spec/services/{statistics → sufia/statistics}/works/by_depositor_spec.rb +0 -0
- data/spec/services/{statistics → sufia/statistics}/works/by_resource_type_spec.rb +0 -0
- data/spec/services/{statistics → sufia/statistics}/works/count_spec.rb +0 -0
- data/spec/services/{statistics → sufia/statistics}/works/over_time_spec.rb +0 -0
- data/spec/spec_helper.rb +12 -15
- data/spec/tasks/rake_spec.rb +0 -28
- data/spec/views/_toolbar.html.erb_spec.rb +1 -1
- data/spec/views/admin/stats/index.html.erb_spec.rb +2 -4
- data/spec/views/batch_edits/edit.html.erb_spec.rb +1 -2
- data/spec/views/catalog/_index_list_default.html.erb_spec.rb +14 -19
- data/spec/views/catalog/index.html.erb_spec.rb +1 -1
- data/spec/views/catalog/sort_and_per_page.html.erb_spec.rb +9 -10
- data/spec/views/collections/_form.html.erb_spec.rb +2 -2
- data/spec/views/collections/_form_for_select_collection.html.erb_spec.rb +1 -2
- data/spec/views/collections/edit.html.erb_spec.rb +1 -1
- data/spec/views/collections/show.html.erb_spec.rb +1 -1
- data/spec/views/curation_concerns/base/_form.html.erb_spec.rb +11 -33
- data/spec/views/curation_concerns/base/_form_progress.html.erb_spec.rb +3 -3
- data/spec/views/curation_concerns/base/_relationships.html.erb_spec.rb +1 -1
- data/spec/views/curation_concerns/base/edit.html.erb_spec.rb +1 -1
- data/spec/views/curation_concerns/file_sets/_versioning.html.erb_spec.rb +1 -3
- data/spec/views/curation_concerns/permissions/confirm.html.erb_spec.rb +1 -1
- data/spec/views/dashboard/index_spec.rb +2 -4
- data/spec/views/homepage/_announcement.html.erb_spec.rb +1 -2
- data/spec/views/homepage/_featured_works.html.erb_spec.rb +9 -2
- data/spec/views/homepage/_home_header.html.erb_spec.rb +1 -1
- data/spec/views/my/_list_collections.html.erb_spec.rb +1 -1
- data/spec/views/my/_list_works.html.erb_spec.rb +1 -1
- data/spec/views/sufia/batch_uploads/_form.html.erb_spec.rb +4 -4
- data/spec/views/users/edit.html.erb_spec.rb +0 -3
- data/spec/views/users/show.html.erb_spec.rb +9 -7
- data/sufia.gemspec +1 -0
- metadata +124 -96
- data/app/controllers/directory_controller.rb +0 -30
- data/lib/generators/sufia/abstract_migration_generator.rb +0 -31
- data/lib/generators/sufia/cached_stats_generator.rb +0 -24
- data/lib/generators/sufia/cached_work_stats_generator.rb +0 -24
- data/lib/generators/sufia/citation_config_generator.rb +0 -22
- data/lib/generators/sufia/minimagick_config_generator.rb +0 -18
- data/lib/generators/sufia/orcid_field_generator.rb +0 -19
- data/lib/generators/sufia/proxies_generator.rb +0 -24
- data/lib/generators/sufia/usagestats_generator.rb +0 -18
- data/lib/generators/sufia/user_stats_generator.rb +0 -31
- data/spec/models/download_spec.rb +0 -17
- data/spec/models/pageview_spec.rb +0 -17
- data/tasks/migrate.rake +0 -20
@@ -0,0 +1,31 @@
|
|
1
|
+
module Sufia
|
2
|
+
module ResourceSync
|
3
|
+
class CapabilityListWriter
|
4
|
+
attr_reader :resource_list_url, :description_url
|
5
|
+
def initialize(resource_list_url:, description_url:)
|
6
|
+
@resource_list_url = resource_list_url
|
7
|
+
@description_url = description_url
|
8
|
+
end
|
9
|
+
|
10
|
+
def write
|
11
|
+
builder.to_xml
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def builder
|
17
|
+
Nokogiri::XML::Builder.new do |xml|
|
18
|
+
xml.urlset('xmlns' => 'http://www.sitemaps.org/schemas/sitemap/0.9',
|
19
|
+
'xmlns:rs' => 'http://www.openarchives.org/rs/terms/') do
|
20
|
+
xml['rs'].ln(rel: "up", href: description_url)
|
21
|
+
xml['rs'].md(capability: "capabilitylist")
|
22
|
+
xml.url do
|
23
|
+
xml.loc resource_list_url
|
24
|
+
xml['rs'].md(capability: 'resourcelist')
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
module Sufia
|
2
|
+
module ResourceSync
|
3
|
+
# TODO: the big assumption I'm making here is that the repository has fewer
|
4
|
+
# than 50,000 resources to list. The Sitemap protocol is limited at 50,000
|
5
|
+
# items, so if we require more than that, we must have multiple Resource
|
6
|
+
# lists and add a Resource List Index to point to all of them.
|
7
|
+
class ResourceListWriter
|
8
|
+
attr_reader :resource_host, :capability_list_url
|
9
|
+
|
10
|
+
def initialize(resource_host:, capability_list_url:)
|
11
|
+
@resource_host = resource_host
|
12
|
+
@capability_list_url = capability_list_url
|
13
|
+
end
|
14
|
+
|
15
|
+
def write
|
16
|
+
builder.to_xml
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def builder(capability_list_url: 'http://example.com/dataset1/capabilitylist.xml')
|
22
|
+
Nokogiri::XML::Builder.new do |xml|
|
23
|
+
xml.urlset('xmlns' => 'http://www.sitemaps.org/schemas/sitemap/0.9',
|
24
|
+
'xmlns:rs' => 'http://www.openarchives.org/rs/terms/') do
|
25
|
+
xml['rs'].ln(rel: "up", href: capability_list_url)
|
26
|
+
xml['rs'].md(capability: "resourcelist", at: Time.now.utc.iso8601)
|
27
|
+
build_collections(xml)
|
28
|
+
build_works(xml)
|
29
|
+
build_files(xml)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def build_collections(xml)
|
35
|
+
Collection.search_in_batches(public_access) do |doc_set|
|
36
|
+
build_resources(xml, doc_set)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def build_works(xml)
|
41
|
+
CurationConcerns::WorkRelation.new.search_in_batches(public_access) do |doc_set|
|
42
|
+
build_resources(xml, doc_set)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def build_files(xml)
|
47
|
+
FileSet.search_in_batches(public_access) do |doc_set|
|
48
|
+
build_resources(xml, doc_set)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def build_resources(xml, doc_set)
|
53
|
+
doc_set.each do |doc|
|
54
|
+
build_resource(xml, doc)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def build_resource(xml, doc)
|
59
|
+
xml.url do
|
60
|
+
key = doc.fetch('has_model_ssim', []).first.constantize.model_name.singular_route_key
|
61
|
+
xml.loc routes.send(key + "_url", doc['id'], host: resource_host)
|
62
|
+
xml.lastmod doc['system_modified_dtsi']
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def routes
|
67
|
+
Rails.application.routes.url_helpers
|
68
|
+
end
|
69
|
+
|
70
|
+
delegate :collection_url, to: :routes
|
71
|
+
|
72
|
+
def public_access
|
73
|
+
{ Hydra.config.permissions.read.group => 'public' }
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Sufia
|
2
|
+
module ResourceSync
|
3
|
+
class SourceDescriptionWriter
|
4
|
+
attr_reader :capability_list_url
|
5
|
+
def initialize(capability_list_url: 'http://example.com/dataset1/capabilitylist.xml')
|
6
|
+
@capability_list_url = capability_list_url
|
7
|
+
end
|
8
|
+
|
9
|
+
def write
|
10
|
+
builder.to_xml
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def builder
|
16
|
+
Nokogiri::XML::Builder.new do |xml|
|
17
|
+
xml.urlset('xmlns' => 'http://www.sitemaps.org/schemas/sitemap/0.9',
|
18
|
+
'xmlns:rs' => 'http://www.openarchives.org/rs/terms/') do
|
19
|
+
xml['rs'].ln(rel: "up", href: capability_list_url)
|
20
|
+
xml['rs'].md(capability: "description")
|
21
|
+
xml.url do
|
22
|
+
xml.loc capability_list_url
|
23
|
+
xml['rs'].md(capability: 'capabilitylist')
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/sufia/version.rb
CHANGED
File without changes
|
File without changes
|
@@ -9,16 +9,12 @@ describe BatchEditsController, type: :controller do
|
|
9
9
|
routes { Internal::Application.routes }
|
10
10
|
|
11
11
|
describe "#edit" do
|
12
|
+
let(:one) { create(:work, creator: ["Fred"], title: ["abc"], language: ['en']) }
|
13
|
+
let(:two) { create(:work, creator: ["Wilma"], title: ["abc2"], publisher: ['Rand McNally'], language: ['en'], resource_type: ['bar']) }
|
12
14
|
before do
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
@two.apply_depositor_metadata('mjg36')
|
17
|
-
@one.save!
|
18
|
-
@two.save!
|
19
|
-
controller.batch = [@one.id, @two.id]
|
20
|
-
expect(controller).to receive(:can?).with(:edit, @one.id).and_return(true)
|
21
|
-
expect(controller).to receive(:can?).with(:edit, @two.id).and_return(true)
|
15
|
+
controller.batch = [one.id, two.id]
|
16
|
+
expect(controller).to receive(:can?).with(:edit, one.id).and_return(true)
|
17
|
+
expect(controller).to receive(:can?).with(:edit, two.id).and_return(true)
|
22
18
|
end
|
23
19
|
|
24
20
|
it "is successful" do
|
@@ -0,0 +1,88 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ContactFormController do
|
4
|
+
let(:user) { create(:user) }
|
5
|
+
let(:required_params) do
|
6
|
+
{
|
7
|
+
category: "Depositing content",
|
8
|
+
name: "Rose Tyler",
|
9
|
+
email: "rose@timetraveler.org",
|
10
|
+
subject: "The Doctor",
|
11
|
+
message: "Run."
|
12
|
+
}
|
13
|
+
end
|
14
|
+
|
15
|
+
before { sign_in(user) }
|
16
|
+
|
17
|
+
describe "#new" do
|
18
|
+
subject { response }
|
19
|
+
before { get :new }
|
20
|
+
it { is_expected.to be_success }
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "#create" do
|
24
|
+
subject { flash }
|
25
|
+
before { post :create, contact_form: params }
|
26
|
+
context "with the required parameters" do
|
27
|
+
let(:params) { required_params }
|
28
|
+
its(:notice) { is_expected.to eq("Thank you for your message!") }
|
29
|
+
end
|
30
|
+
|
31
|
+
context "without a category" do
|
32
|
+
let(:params) { required_params.except(:category) }
|
33
|
+
its([:error]) { is_expected.to eq("Sorry, this message was not sent successfully. Category can't be blank") }
|
34
|
+
end
|
35
|
+
|
36
|
+
context "without a name" do
|
37
|
+
let(:params) { required_params.except(:name) }
|
38
|
+
its([:error]) { is_expected.to eq("Sorry, this message was not sent successfully. Name can't be blank") }
|
39
|
+
end
|
40
|
+
|
41
|
+
context "without an email" do
|
42
|
+
let(:params) { required_params.except(:email) }
|
43
|
+
its([:error]) { is_expected.to eq("Sorry, this message was not sent successfully. Email can't be blank") }
|
44
|
+
end
|
45
|
+
|
46
|
+
context "without a subject" do
|
47
|
+
let(:params) { required_params.except(:subject) }
|
48
|
+
its([:error]) { is_expected.to eq("Sorry, this message was not sent successfully. Subject can't be blank") }
|
49
|
+
end
|
50
|
+
|
51
|
+
context "without a message" do
|
52
|
+
let(:params) { required_params.except(:message) }
|
53
|
+
its([:error]) { is_expected.to eq("Sorry, this message was not sent successfully. Message can't be blank") }
|
54
|
+
end
|
55
|
+
|
56
|
+
context "with an invalid email" do
|
57
|
+
let(:params) { required_params.merge(email: "bad-wolf") }
|
58
|
+
its([:error]) { is_expected.to eq("Sorry, this message was not sent successfully. Email is invalid") }
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe "#after_deliver" do
|
63
|
+
context "with a successful email" do
|
64
|
+
it "calls #after_deliver" do
|
65
|
+
expect(controller).to receive(:after_deliver)
|
66
|
+
post :create, contact_form: required_params
|
67
|
+
end
|
68
|
+
end
|
69
|
+
context "with an unsuccessful email" do
|
70
|
+
it "does not call #after_deliver" do
|
71
|
+
expect(controller).not_to receive(:after_deliver)
|
72
|
+
post :create, contact_form: required_params.except(:email)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
context "when encoutering a RuntimeError" do
|
78
|
+
let(:logger) { double }
|
79
|
+
before do
|
80
|
+
allow(controller).to receive(:logger).and_return(logger)
|
81
|
+
allow(ContactForm).to receive(:new).and_raise(RuntimeError)
|
82
|
+
end
|
83
|
+
it "is logged via Rails" do
|
84
|
+
expect(logger).to receive(:error).with("Contact form failed to send: #<RuntimeError: RuntimeError>")
|
85
|
+
post :create, contact_form: required_params
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -2,7 +2,6 @@ describe CurationConcerns::FileSetsController do
|
|
2
2
|
routes { Rails.application.routes }
|
3
3
|
let(:user) { create(:user) }
|
4
4
|
before do
|
5
|
-
allow(controller).to receive(:has_access?).and_return(true)
|
6
5
|
sign_in user
|
7
6
|
allow_any_instance_of(User).to receive(:groups).and_return([])
|
8
7
|
# prevents characterization and derivative creation
|
@@ -250,7 +249,7 @@ describe CurationConcerns::FileSetsController do
|
|
250
249
|
it "shows me the breadcrumbs" do
|
251
250
|
expect(controller).to receive(:add_breadcrumb).with('My Dashboard', Sufia::Engine.routes.url_helpers.dashboard_index_path)
|
252
251
|
expect(controller).to receive(:add_breadcrumb).with('My Works', Sufia::Engine.routes.url_helpers.dashboard_works_path)
|
253
|
-
expect(controller).to receive(:add_breadcrumb).with('test title',
|
252
|
+
expect(controller).to receive(:add_breadcrumb).with('test title', main_app.curation_concerns_generic_work_path(work.id))
|
254
253
|
expect(controller).to receive(:add_breadcrumb).with('test file', main_app.curation_concerns_file_set_path(file_set))
|
255
254
|
get :show, id: file_set
|
256
255
|
expect(response).to be_successful
|
@@ -83,7 +83,7 @@ describe CurationConcerns::GenericWorksController do
|
|
83
83
|
it "sets breadcrumbs" do
|
84
84
|
expect(controller).to receive(:add_breadcrumb).with('My Dashboard', Sufia::Engine.routes.url_helpers.dashboard_index_path)
|
85
85
|
expect(controller).to receive(:add_breadcrumb).with('My Works', Sufia::Engine.routes.url_helpers.dashboard_works_path)
|
86
|
-
expect(controller).to receive(:add_breadcrumb).with('test title',
|
86
|
+
expect(controller).to receive(:add_breadcrumb).with('test title', main_app.curation_concerns_generic_work_path(work.id))
|
87
87
|
get :show, id: work
|
88
88
|
expect(response).to be_successful
|
89
89
|
end
|
@@ -36,7 +36,7 @@ describe DepositorsController do
|
|
36
36
|
end
|
37
37
|
|
38
38
|
it 'does not send a message to the user' do
|
39
|
-
expect { redundant_request_to_grant_proxy }.
|
39
|
+
expect { redundant_request_to_grant_proxy }.not_to change { user.mailbox.inbox.count }
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
@@ -23,7 +23,7 @@ describe FeaturedWorksController, type: :controller do
|
|
23
23
|
it "does not create another" do
|
24
24
|
expect {
|
25
25
|
post :create, id: '1234abcd', format: :json
|
26
|
-
}.
|
26
|
+
}.not_to change { FeaturedWork.count }
|
27
27
|
expect(response.status).to eq 422
|
28
28
|
end
|
29
29
|
end
|
@@ -26,7 +26,7 @@ describe MailboxController, type: :controller do
|
|
26
26
|
it "deletes message" do
|
27
27
|
expect(mock_box).to receive(:destroy).with("4")
|
28
28
|
delete :destroy, id: "4"
|
29
|
-
expect(response).to redirect_to(
|
29
|
+
expect(response).to redirect_to(routes.url_helpers.notifications_path)
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
describe My::HighlightsController, type: :controller do
|
3
2
|
describe "logged in user" do
|
4
3
|
let(:user) { create(:user) }
|
@@ -8,16 +7,21 @@ describe My::HighlightsController, type: :controller do
|
|
8
7
|
before do
|
9
8
|
GenericWork.destroy_all
|
10
9
|
Collection.destroy_all
|
11
|
-
|
12
|
-
user.trophies.create(work_id: @highlighted_work.id)
|
10
|
+
end
|
13
11
|
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
let(:other_user) { create(:user) }
|
13
|
+
let(:highlighted_work) { create(:generic_work, user: user) }
|
14
|
+
let!(:normal_work) { create(:generic_work, user: user) }
|
15
|
+
let(:unrelated_highlighted_work) do
|
16
|
+
create(:generic_work, user: other_user).tap do |r|
|
17
17
|
r.edit_users += [user.user_key]
|
18
18
|
r.save!
|
19
19
|
end
|
20
|
-
|
20
|
+
end
|
21
|
+
|
22
|
+
before do
|
23
|
+
user.trophies.create(work_id: highlighted_work.id)
|
24
|
+
other_user.trophies.create(work_id: unrelated_highlighted_work.id)
|
21
25
|
end
|
22
26
|
|
23
27
|
it "paginates" do
|
@@ -35,17 +39,17 @@ describe My::HighlightsController, type: :controller do
|
|
35
39
|
get :index
|
36
40
|
expect(response).to be_successful
|
37
41
|
# shows documents I've highlighted
|
38
|
-
expect(assigns[:document_list].map(&:id)).to include(
|
42
|
+
expect(assigns[:document_list].map(&:id)).to include(highlighted_work.id)
|
39
43
|
# doesn't show non-highlighted files
|
40
|
-
expect(assigns[:document_list].map(&:id)).
|
44
|
+
expect(assigns[:document_list].map(&:id)).not_to include(normal_work.id)
|
41
45
|
# doesn't show other users' highlighted files
|
42
|
-
expect(assigns[:document_list].map(&:id)).
|
46
|
+
expect(assigns[:document_list].map(&:id)).not_to include(unrelated_highlighted_work.id)
|
43
47
|
end
|
44
48
|
end
|
45
49
|
|
46
50
|
describe "when user has no highlights" do
|
47
51
|
it "skips the call to Solr" do
|
48
|
-
expect(controller).
|
52
|
+
expect(controller).not_to receive(:search_results)
|
49
53
|
get :index
|
50
54
|
end
|
51
55
|
end
|
@@ -59,7 +59,7 @@ describe StatsController do
|
|
59
59
|
expect(WorkUsage).to receive(:new).with(work.id).and_return(usage)
|
60
60
|
expect(controller).to receive(:add_breadcrumb).with(I18n.t('sufia.dashboard.my.works'), Sufia::Engine.routes.url_helpers.dashboard_works_path)
|
61
61
|
expect(controller).to receive(:add_breadcrumb).with(I18n.t('sufia.dashboard.title'), Sufia::Engine.routes.url_helpers.dashboard_index_path)
|
62
|
-
expect(controller).to receive(:add_breadcrumb).with(I18n.t('sufia.work.browse_view'), curation_concerns_generic_work_path(work))
|
62
|
+
expect(controller).to receive(:add_breadcrumb).with(I18n.t('sufia.work.browse_view'), main_app.curation_concerns_generic_work_path(work))
|
63
63
|
get :work, id: work
|
64
64
|
expect(response).to be_success
|
65
65
|
expect(response).to render_template('stats/work')
|
@@ -44,7 +44,7 @@ describe Sufia::HomepageController, type: :controller do
|
|
44
44
|
get :index
|
45
45
|
expect(response).to be_success
|
46
46
|
titles = assigns(:recent_documents).map { |d| d['title_tesim'][0] }
|
47
|
-
expect(titles).
|
47
|
+
expect(titles).not_to include('Test Private Document')
|
48
48
|
end
|
49
49
|
|
50
50
|
it "includes only GenericWork objects in recent documents" do
|
@@ -0,0 +1,52 @@
|
|
1
|
+
RSpec.describe Sufia::ResourceSyncController do
|
2
|
+
before do
|
3
|
+
Rails.cache.clear
|
4
|
+
end
|
5
|
+
|
6
|
+
describe "source_description" do
|
7
|
+
let(:writer) { double }
|
8
|
+
let(:document) { '<xml>' }
|
9
|
+
let(:capability_list) { Sufia::Engine.routes.url_helpers.capability_list_url(host: 'test.host') }
|
10
|
+
|
11
|
+
it "is successful" do
|
12
|
+
allow(Sufia::ResourceSync::SourceDescriptionWriter).to receive(:new).with(capability_list_url: capability_list).and_return(writer)
|
13
|
+
expect(writer).to receive(:write).and_return(document)
|
14
|
+
get :source_description
|
15
|
+
expect(response.content_type).to eq 'application/xml'
|
16
|
+
expect(response.body).to eq document
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "capability_list" do
|
21
|
+
let(:writer) { double }
|
22
|
+
let(:document) { '<xml>' }
|
23
|
+
let(:capability_list) { Sufia::Engine.routes.url_helpers.capability_list_url(host: 'test.host') }
|
24
|
+
|
25
|
+
it "is successful" do
|
26
|
+
allow(Sufia::ResourceSync::CapabilityListWriter).to receive(:new).with(resource_list_url: "http://test.host/resourcelist",
|
27
|
+
description_url: "http://test.host/.well-known/resourcesync").and_return(writer)
|
28
|
+
expect(writer).to receive(:write).and_return(document)
|
29
|
+
get :capability_list
|
30
|
+
expect(response.content_type).to eq 'application/xml'
|
31
|
+
expect(response.body).to eq document
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "resource_list" do
|
36
|
+
before do
|
37
|
+
Rails.cache.clear
|
38
|
+
end
|
39
|
+
|
40
|
+
let(:writer) { double }
|
41
|
+
let(:document) { '<xml>' }
|
42
|
+
let(:capability_list) { Sufia::Engine.routes.url_helpers.capability_list_url(host: 'test.host') }
|
43
|
+
|
44
|
+
it "is successful" do
|
45
|
+
allow(Sufia::ResourceSync::ResourceListWriter).to receive(:new).with(capability_list_url: capability_list, resource_host: "test.host").and_return(writer)
|
46
|
+
expect(writer).to receive(:write).and_return(document)
|
47
|
+
get :resource_list
|
48
|
+
expect(response.content_type).to eq 'application/xml'
|
49
|
+
expect(response.body).to eq document
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|