sufia 6.0.0.beta1 → 6.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +12 -2
- data/Gemfile +10 -1
- data/History.md +21 -0
- data/SUFIA_VERSION +1 -1
- data/app/assets/images/orcid.png +0 -0
- data/app/assets/javascripts/sufia.js +1 -1
- data/app/assets/javascripts/sufia/batch_edit.js +36 -54
- data/app/assets/javascripts/sufia/edit_metadata.js +10 -11
- data/app/assets/javascripts/sufia/permissions.js +2 -26
- data/app/assets/stylesheets/sufia.css.scss +10 -2
- data/app/assets/stylesheets/sufia/_batch-edit.scss +8 -6
- data/app/assets/stylesheets/sufia/_dashboard.scss +10 -0
- data/app/assets/stylesheets/sufia/_settings.scss +1 -0
- data/app/assets/stylesheets/sufia/_styles.scss +5 -3
- data/app/controllers/batch_controller.rb +9 -6
- data/app/controllers/batch_edits_controller.rb +2 -2
- data/app/controllers/collections_controller.rb +19 -3
- data/app/controllers/concerns/sufia/batch_edits_controller_behavior.rb +30 -29
- data/app/controllers/concerns/sufia/breadcrumbs.rb +8 -3
- data/app/controllers/concerns/sufia/files_controller_behavior.rb +19 -7
- data/app/controllers/concerns/sufia/users_controller_behavior.rb +14 -2
- data/app/controllers/single_use_links_viewer_controller.rb +5 -1
- data/app/forms/sufia/forms/batch_edit_form.rb +6 -0
- data/app/forms/sufia/forms/collection_edit_form.rb +17 -0
- data/app/forms/sufia/forms/generic_file_edit_form.rb +16 -0
- data/app/helpers/generic_file_helper.rb +3 -47
- data/app/helpers/sufia/permissions_helper.rb +29 -0
- data/app/helpers/sufia/sufia_helper_behavior.rb +11 -0
- data/app/inputs/multi_value_with_help_input.rb +8 -0
- data/app/inputs/select_with_help_input.rb +3 -0
- data/app/inputs/select_with_modal_help_input.rb +36 -0
- data/app/inputs/with_help_icon.rb +32 -0
- data/app/models/concerns/sufia/solr_document_behavior.rb +1 -1
- data/app/presenters/sufia/collection_presenter.rb +29 -0
- data/app/presenters/sufia/generic_file_presenter.rb +14 -0
- data/app/presenters/sufia/presenter_renderer.rb +53 -0
- data/app/views/batch/_metadata.html.erb +10 -44
- data/app/views/batch/_more_metadata.html.erb +3 -2
- data/app/views/batch/edit.html.erb +2 -2
- data/app/views/batch_edits/edit.html.erb +13 -17
- data/app/views/collections/_form.html.erb +5 -5
- data/app/views/collections/_show_descriptions.html.erb +8 -10
- data/app/views/collections/edit.html.erb +8 -9
- data/app/views/collections/edit_fields/_description.html.erb +1 -2
- data/app/views/dashboard/_index_partials/_stats.html.erb +3 -3
- data/app/views/generic_files/_descriptions.html.erb +5 -8
- data/app/views/generic_files/_permission_form.html.erb +8 -17
- data/app/views/generic_files/_show_descriptions.html.erb +3 -4
- data/app/views/generic_files/edit.html.erb +1 -2
- data/app/views/generic_files/jq_upload.json.jbuilder +8 -0
- data/app/views/records/edit_fields/_default.html.erb +5 -10
- data/app/views/records/edit_fields/_description.html.erb +5 -10
- data/app/views/records/edit_fields/_resource_type.html.erb +2 -5
- data/app/views/records/edit_fields/_rights.html.erb +3 -9
- data/app/views/single_use_links_viewer/show.html.erb +10 -16
- data/app/views/users/_profile.html.erb +1 -2
- data/app/views/users/_user_info.html.erb +20 -3
- data/app/views/users/edit.html.erb +11 -2
- data/app/views/users/show.html.erb +1 -1
- data/config/locales/sufia.en.yml +46 -26
- data/config/routes.rb +1 -1
- data/lib/generators/sufia/install_generator.rb +4 -0
- data/lib/sufia.rb +4 -0
- data/lib/sufia/form_builder.rb +16 -0
- data/lib/sufia/version.rb +1 -1
- data/spec/actors/generic_file/actor_spec.rb +1 -2
- data/spec/controllers/batch_controller_spec.rb +16 -48
- data/spec/controllers/batch_edits_controller_spec.rb +27 -16
- data/spec/controllers/collections_controller_spec.rb +81 -61
- data/spec/controllers/generic_files_controller_spec.rb +17 -2
- data/spec/controllers/users_controller_spec.rb +13 -3
- data/spec/features/collection_spec.rb +93 -88
- data/spec/features/users_spec.rb +1 -1
- data/spec/forms/collection_edit_form_spec.rb +20 -0
- data/spec/forms/generic_file_edit_form_spec.rb +26 -0
- data/spec/helpers/generic_file_helper_spec.rb +33 -7
- data/spec/helpers/permissions_helper_spec.rb +21 -0
- data/spec/inputs/multi_value_with_help_input_spec.rb +25 -0
- data/spec/inputs/select_with_modal_help_input_spec.rb +21 -0
- data/spec/jobs/batch_update_job_spec.rb +11 -14
- data/spec/lib/sufia/breadcrumbs_spec.rb +46 -8
- data/spec/models/generic_file_spec.rb +0 -13
- data/spec/models/user_spec.rb +23 -0
- data/spec/presenters/presenter_renderer_spec.rb +19 -0
- data/spec/presenters/sufia/generic_file_presenter_spec.rb +12 -0
- data/spec/spec_helper.rb +5 -0
- data/spec/support/input_support.rb +12 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +1 -1
- data/spec/views/batch/edit.html.erb_spec.rb +13 -23
- data/spec/views/batch_edits/edit.html.erb_spec.rb +19 -0
- data/spec/views/collections/_form.html.erb_spec.rb +26 -28
- data/spec/views/collections/_show_descriptions.html.erb_spec.rb +15 -9
- data/spec/views/dashboard/index_spec.rb +2 -2
- data/spec/views/generic_file/_permission_form.html.erb_spec.rb +23 -0
- data/spec/views/generic_file/edit.html.erb_spec.rb +5 -0
- data/spec/views/generic_file/show.html.erb_spec.rb +5 -0
- data/sufia-models/app/actors/sufia/generic_file/actor.rb +1 -1
- data/sufia-models/app/jobs/batch_update_job.rb +5 -5
- data/sufia-models/app/models/batch.rb +7 -3
- data/sufia-models/app/models/concerns/sufia/collection.rb +7 -25
- data/sufia-models/app/models/concerns/sufia/generic_file.rb +0 -1
- data/sufia-models/app/models/concerns/sufia/generic_file/export.rb +2 -2
- data/sufia-models/app/models/concerns/sufia/generic_file/indexing.rb +4 -13
- data/sufia-models/app/models/concerns/sufia/generic_file/metadata.rb +1 -1
- data/sufia-models/app/models/concerns/sufia/user.rb +24 -17
- data/sufia-models/app/models/sufia/orcid_validator.rb +8 -0
- data/sufia-models/app/services/sufia/generic_file_indexing_service.rb +13 -0
- data/sufia-models/app/services/sufia/indexing_service.rb +15 -0
- data/sufia-models/lib/generators/sufia/models/abstract_migration_generator.rb +30 -0
- data/sufia-models/lib/generators/sufia/models/cached_stats_generator.rb +3 -47
- data/sufia-models/lib/generators/sufia/models/install_generator.rb +11 -31
- data/sufia-models/lib/generators/sufia/models/orcid_field_generator.rb +19 -0
- data/sufia-models/lib/generators/sufia/models/proxies_generator.rb +2 -31
- data/sufia-models/lib/generators/sufia/models/templates/config/redis.yml +3 -0
- data/sufia-models/lib/generators/sufia/models/templates/config/sufia.rb +3 -0
- data/sufia-models/lib/generators/sufia/models/templates/migrations/add_orcid_to_users.rb +5 -0
- data/sufia-models/lib/generators/sufia/models/upgrade400_generator.rb +2 -33
- data/sufia-models/lib/generators/sufia/models/user_stats_generator.rb +31 -0
- data/sufia-models/lib/sufia/models/engine.rb +1 -0
- data/sufia-models/lib/sufia/models/version.rb +1 -1
- data/sufia-models/sufia-models.gemspec +5 -5
- data/sufia.gemspec +2 -3
- metadata +49 -39
- data/app/assets/javascripts/sufia/multiForm.js +0 -67
- data/app/helpers/records_helper.rb +0 -4
- data/app/helpers/sufia/records_helper_behavior.rb +0 -68
- data/app/views/batch_edits/update_edit.js.erb +0 -5
- data/app/views/collections/_edit_descriptions.html.erb +0 -18
- data/app/views/collections/edit_fields/_title.html.erb +0 -3
- data/app/views/generic_files/_field_form.html.erb +0 -20
- data/app/views/records/_edit_field.html.erb +0 -22
- data/app/views/records/edit_fields/_suffix.html.erb +0 -10
- data/app/views/records/edit_fields/_type.html.erb +0 -8
- data/app/views/users/_social_media_info.html.erb +0 -20
- data/spec/helpers/records_helper_spec.rb +0 -102
- data/spec/models/generic_file/web_form_spec.rb +0 -35
- data/sufia-models/app/models/concerns/sufia/generic_file/accessible_attributes.rb +0 -87
- data/sufia-models/app/models/concerns/sufia/generic_file/web_form.rb +0 -62
@@ -11,13 +11,12 @@ describe BatchController do
|
|
11
11
|
let(:batch) { Batch.create }
|
12
12
|
context "enquing a batch job" do
|
13
13
|
before do
|
14
|
-
allow(BatchUpdateJob).to receive(:new).with(user.user_key,
|
15
|
-
|
16
|
-
and_return(batch_update_message)
|
14
|
+
allow(BatchUpdateJob).to receive(:new).with(user.user_key, batch.id, {'1' => 'foo'},
|
15
|
+
{ tag: [] }, 'open').and_return(batch_update_message)
|
17
16
|
end
|
18
17
|
it "should be successful" do
|
19
18
|
expect(Sufia.queue).to receive(:push).with(batch_update_message).once
|
20
|
-
post :update, id: batch.id,
|
19
|
+
post :update, id: batch.id, title: {'1' => 'foo'}, visibility: 'open', generic_file: { tag: [""] }
|
21
20
|
expect(response).to redirect_to routes.url_helpers.dashboard_files_path
|
22
21
|
expect(flash[:notice]).to include("Your files are being processed")
|
23
22
|
end
|
@@ -25,12 +24,7 @@ describe BatchController do
|
|
25
24
|
|
26
25
|
describe "when user has edit permissions on a file" do
|
27
26
|
# TODO all these tests could move to batch_update_job_spec.rb
|
28
|
-
let!(:file)
|
29
|
-
GenericFile.new(batch: batch).tap do |f|
|
30
|
-
f.apply_depositor_metadata(user)
|
31
|
-
f.save!
|
32
|
-
end
|
33
|
-
end
|
27
|
+
let!(:file) { GenericFile.create(batch: batch) { |f| f.apply_depositor_metadata(user) } }
|
34
28
|
|
35
29
|
it "should set the groups" do
|
36
30
|
post :update, id: batch, "generic_file"=>{"permissions_attributes"=>[{"type" => "group", "name" => "public", "access" => "read"}]}
|
@@ -39,37 +33,13 @@ describe BatchController do
|
|
39
33
|
expect(response).to redirect_to routes.url_helpers.dashboard_files_path
|
40
34
|
end
|
41
35
|
|
42
|
-
it "should set the users with read access" do
|
43
|
-
post :update, id: batch, "generic_file"=>{"read_groups_string"=>"", "read_users_string"=>"archivist1, archivist2", "tag"=>[""]}
|
44
|
-
|
45
|
-
expect(file.reload.read_users).to eq ['archivist1', 'archivist2']
|
46
|
-
expect(response).to redirect_to routes.url_helpers.dashboard_files_path
|
47
|
-
end
|
48
|
-
|
49
|
-
it "should set the groups with read access" do
|
50
|
-
post :update, id: batch, "generic_file"=>{"read_groups_string"=>"group1, group2", "read_users_string"=>"", "tag"=>[""]}
|
51
|
-
expect(file.reload.read_groups).to eq ['group1', 'group2']
|
52
|
-
end
|
53
|
-
|
54
36
|
it "should set public read access" do
|
55
|
-
post :update, id: batch,
|
37
|
+
post :update, id: batch, visibility: "open", generic_file: { tag: [""] }
|
56
38
|
expect(file.reload.read_groups).to eq ['public']
|
57
39
|
end
|
58
40
|
|
59
|
-
it "should set public read access and groups at the same time" do
|
60
|
-
post :update, id: batch, "visibility"=>"open", "generic_file"=>{"read_groups_string"=>"group1, group2", "read_users_string"=>"", "tag"=>[""]}
|
61
|
-
expect(file.reload.read_groups).to eq ['group1', 'group2', 'public']
|
62
|
-
end
|
63
|
-
|
64
|
-
it "should set public discover access and groups at the same time" do
|
65
|
-
post :update, id: batch, "permission"=>{"group"=>{"public"=>"none"}}, "generic_file"=>{"read_groups_string"=>"group1, group2", "read_users_string"=>"", "tag"=>[""]}
|
66
|
-
file.reload
|
67
|
-
expect(file.read_groups).to eq ['group1', 'group2']
|
68
|
-
expect(file.discover_groups).to eq []
|
69
|
-
end
|
70
|
-
|
71
41
|
it "should set metadata like title" do
|
72
|
-
post :update, id: batch,
|
42
|
+
post :update, id: batch, generic_file: { tag: ["footag", "bartag"] }, title: { file.id => ["New Title"] }
|
73
43
|
file.reload
|
74
44
|
expect(file.title).to eq ["New Title"]
|
75
45
|
# TODO is order important?
|
@@ -77,7 +47,7 @@ describe BatchController do
|
|
77
47
|
end
|
78
48
|
|
79
49
|
it "should not set any tags" do
|
80
|
-
post :update, id: batch,
|
50
|
+
post :update, id: batch, generic_file: { tag: [""] }
|
81
51
|
expect(file.reload.tag).to be_empty
|
82
52
|
end
|
83
53
|
end
|
@@ -99,22 +69,20 @@ describe BatchController do
|
|
99
69
|
end
|
100
70
|
end
|
101
71
|
end
|
72
|
+
|
102
73
|
describe "#edit" do
|
103
74
|
before do
|
104
75
|
allow_any_instance_of(User).to receive(:display_name).and_return("Jill Z. User")
|
105
|
-
@b1 = Batch.new
|
106
|
-
@b1.save
|
107
|
-
@file = GenericFile.new(batch: @b1, label: 'f1')
|
108
|
-
@file.apply_depositor_metadata(user)
|
109
|
-
@file.save
|
110
|
-
@file2 = GenericFile.new(batch: @b1, label: 'f2')
|
111
|
-
@file2.apply_depositor_metadata(user)
|
112
|
-
@file2.save
|
113
76
|
end
|
77
|
+
let(:b1) { Batch.create }
|
78
|
+
let!(:file) { GenericFile.create(batch: b1, label: 'f1') { |f| f.apply_depositor_metadata(user) } }
|
79
|
+
let!(:file2) { GenericFile.create(batch: b1, label: 'f2') { |f| f.apply_depositor_metadata(user) } }
|
80
|
+
|
114
81
|
it "should default creator" do
|
115
|
-
get :edit, id:
|
116
|
-
expect(assigns[:
|
117
|
-
expect(assigns[:
|
82
|
+
get :edit, id: b1
|
83
|
+
expect(assigns[:form]).not_to be_persisted
|
84
|
+
expect(assigns[:form].creator[0]).to eq user.display_name
|
85
|
+
expect(assigns[:form].title[0]).to eq 'f1'
|
118
86
|
end
|
119
87
|
end
|
120
88
|
end
|
@@ -34,38 +34,49 @@ describe BatchEditsController, :type => :controller do
|
|
34
34
|
|
35
35
|
it "should set the breadcrumb trail" do
|
36
36
|
expect(controller).to receive(:add_breadcrumb).with(I18n.t('sufia.dashboard.title'), Sufia::Engine.routes.url_helpers.dashboard_index_path)
|
37
|
+
expect(controller).to receive(:add_breadcrumb).with(I18n.t('sufia.dashboard.my.files'), Sufia::Engine.routes.url_helpers.dashboard_files_path)
|
37
38
|
get :edit
|
38
39
|
end
|
39
40
|
end
|
40
41
|
|
41
42
|
describe "update" do
|
43
|
+
let!(:one) do
|
44
|
+
GenericFile.create(creator: ["Fred"], language: ['en']) do |file|
|
45
|
+
file.apply_depositor_metadata('mjg36')
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
let!(:two) do
|
50
|
+
GenericFile.create(creator: ["Fred"], language: ['en']) do |file|
|
51
|
+
file.apply_depositor_metadata('mjg36')
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
42
55
|
before do
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
@two.apply_depositor_metadata('mjg36')
|
47
|
-
@one.save!
|
48
|
-
@two.save!
|
49
|
-
controller.batch = [@one.id, @two.id]
|
50
|
-
expect(controller).to receive(:can?).with(:edit, @one.id).and_return(true)
|
51
|
-
expect(controller).to receive(:can?).with(:edit, @two.id).and_return(true)
|
56
|
+
controller.batch = [one.id, two.id]
|
57
|
+
expect(controller).to receive(:can?).with(:edit, one.id).and_return(true)
|
58
|
+
expect(controller).to receive(:can?).with(:edit, two.id).and_return(true)
|
52
59
|
end
|
60
|
+
|
53
61
|
let(:mycontroller) { "my/files" }
|
62
|
+
|
54
63
|
it "should be successful" do
|
55
|
-
put :update
|
64
|
+
put :update, update_type: "delete_all"
|
56
65
|
expect(response).to redirect_to(Sufia::Engine.routes.url_for(controller: "dashboard", only_path: true))
|
57
|
-
expect { GenericFile.find(
|
58
|
-
expect { GenericFile.find(
|
66
|
+
expect { GenericFile.find(one.id) }.to raise_error(Ldp::Gone)
|
67
|
+
expect { GenericFile.find(two.id) }.to raise_error(Ldp::Gone)
|
59
68
|
end
|
69
|
+
|
60
70
|
it "should redirect to the return controller" do
|
61
|
-
put :update
|
71
|
+
put :update, update_type: "delete_all", return_controller: mycontroller
|
62
72
|
expect(response).to redirect_to(Sufia::Engine.routes.url_for(controller: mycontroller, only_path: true))
|
63
73
|
end
|
74
|
+
|
64
75
|
it "should update the records" do
|
65
|
-
put :update
|
76
|
+
put :update, update_type: "update", generic_file: { subject: ["zzz"] }
|
66
77
|
expect(response).to be_redirect
|
67
|
-
expect(GenericFile.find(
|
68
|
-
expect(GenericFile.find(
|
78
|
+
expect(GenericFile.find(one.id).subject).to eq ["zzz"]
|
79
|
+
expect(GenericFile.find(two.id).subject).to eq ["zzz"]
|
69
80
|
end
|
70
81
|
end
|
71
82
|
|
@@ -66,92 +66,112 @@ describe CollectionsController do
|
|
66
66
|
end
|
67
67
|
|
68
68
|
describe "#update" do
|
69
|
-
before
|
70
|
-
|
69
|
+
before { sign_in user }
|
70
|
+
|
71
|
+
let(:collection) do
|
72
|
+
Collection.create(title: "Collection Title") do |collection|
|
71
73
|
collection.apply_depositor_metadata(user.user_key)
|
72
74
|
end
|
73
|
-
@asset1 = GenericFile.new(title: ["First of the Assets"])
|
74
|
-
@asset1.apply_depositor_metadata(user.user_key)
|
75
|
-
@asset1.save
|
76
|
-
@asset2 = GenericFile.new(title: ["Second of the Assets"], depositor: user.user_key)
|
77
|
-
@asset2.apply_depositor_metadata(user.user_key)
|
78
|
-
@asset2.save
|
79
|
-
@asset3 = GenericFile.new(title: ["Third of the Assets"], depositor:'abc')
|
80
|
-
@asset3.apply_depositor_metadata(user.user_key)
|
81
|
-
@asset3.save
|
82
|
-
sign_in user
|
83
75
|
end
|
84
76
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
77
|
+
context "a collections members" do
|
78
|
+
before do
|
79
|
+
@asset1 = GenericFile.new(title: ["First of the Assets"])
|
80
|
+
@asset1.apply_depositor_metadata(user.user_key)
|
81
|
+
@asset1.save
|
82
|
+
@asset2 = GenericFile.new(title: ["Second of the Assets"], depositor: user.user_key)
|
83
|
+
@asset2.apply_depositor_metadata(user.user_key)
|
84
|
+
@asset2.save
|
85
|
+
@asset3 = GenericFile.new(title: ["Third of the Assets"], depositor:'abc')
|
86
|
+
@asset3.apply_depositor_metadata(user.user_key)
|
87
|
+
@asset3.save
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should set collection on members" do
|
91
|
+
put :update, id: collection, collection: {members:"add"}, batch_document_ids: [@asset3.id, @asset1.id, @asset2.id]
|
92
|
+
expect(response).to redirect_to routes.url_helpers.collection_path(collection.noid)
|
93
|
+
expect(assigns[:collection].members).to match_array [@asset2, @asset3, @asset1]
|
94
|
+
asset_results = ActiveFedora::SolrService.instance.conn.get "select", params:{fq:["id:\"#{@asset2.id}\""],fl:['id',Solrizer.solr_name(:collection)]}
|
95
|
+
expect(asset_results["response"]["numFound"]).to eq 1
|
96
|
+
doc = asset_results["response"]["docs"].first
|
97
|
+
expect(doc["id"]).to eq @asset2.id
|
98
|
+
afterupdate = GenericFile.find(@asset2.id)
|
99
|
+
expect(doc[Solrizer.solr_name(:collection)]).to eq afterupdate.to_solr[Solrizer.solr_name(:collection)]
|
100
|
+
put :update, id: collection, collection: {members:"remove"}, batch_document_ids: [@asset2]
|
101
|
+
asset_results = ActiveFedora::SolrService.instance.conn.get "select", params:{fq:["id:\"#{@asset2.id}\""],fl:['id',Solrizer.solr_name(:collection)]}
|
102
|
+
expect(asset_results["response"]["numFound"]).to eq 1
|
103
|
+
doc = asset_results["response"]["docs"].first
|
104
|
+
expect(doc["id"]).to eq @asset2.id
|
105
|
+
afterupdate = GenericFile.find(@asset2.id)
|
106
|
+
expect(doc[Solrizer.solr_name(:collection)]).to be_nil
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
context "updating a collections metadata" do
|
111
|
+
it "should save the metadata" do
|
112
|
+
put :update, id: collection, collection: { creator: ['Emily'] }
|
113
|
+
collection.reload
|
114
|
+
expect(collection.creator).to eq ['Emily']
|
115
|
+
end
|
102
116
|
end
|
103
117
|
end
|
104
118
|
|
105
119
|
describe "#show" do
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
120
|
+
let(:asset1) do
|
121
|
+
GenericFile.new(title: ["First of the Assets"]) { |a| a.apply_depositor_metadata(user) }
|
122
|
+
end
|
123
|
+
|
124
|
+
let(:asset2) do
|
125
|
+
GenericFile.new(title: ["Second of the Assets"]) { |a| a.apply_depositor_metadata(user) }
|
126
|
+
end
|
127
|
+
|
128
|
+
let(:asset3) do
|
129
|
+
GenericFile.new(title: ["Third of the Assets"]) { |a| a.apply_depositor_metadata(user) }
|
130
|
+
end
|
131
|
+
|
132
|
+
let!(:asset4) do
|
133
|
+
GenericFile.create(title: ["Fourth of the Assets"]) { |a| a.apply_depositor_metadata(user) }
|
134
|
+
end
|
135
|
+
|
136
|
+
let(:collection) do
|
137
|
+
Collection.create(title: "My collection",
|
138
|
+
description: "My incredibly detailed description of the collection",
|
139
|
+
members: [asset1, asset2, asset3]) { |c| c.apply_depositor_metadata(user) }
|
121
140
|
end
|
141
|
+
|
122
142
|
context "when signed in" do
|
123
|
-
before
|
124
|
-
sign_in user
|
125
|
-
end
|
143
|
+
before { sign_in user }
|
126
144
|
|
127
145
|
it "should return the collection and its members" do
|
128
|
-
get :show, id: @collection
|
129
|
-
expect(response).to be_successful
|
130
|
-
expect(assigns[:collection].title).to eq @collection.title
|
131
|
-
expect(assigns[:member_docs].map(&:id)).to match_array [@asset1, @asset2, @asset3].map(&:id)
|
132
|
-
end
|
133
|
-
it "should set the breadcrumb trail" do
|
134
146
|
expect(controller).to receive(:add_breadcrumb).with(I18n.t('sufia.dashboard.title'), Sufia::Engine.routes.url_helpers.dashboard_index_path)
|
135
|
-
get :show, id:
|
147
|
+
get :show, id: collection
|
148
|
+
expect(response).to be_successful
|
149
|
+
expect(assigns[:presenter]).to be_kind_of Sufia::CollectionPresenter
|
150
|
+
expect(assigns[:collection].title).to eq collection.title
|
151
|
+
expect(assigns[:member_docs].map(&:id)).to match_array [asset1, asset2, asset3].map(&:id)
|
136
152
|
end
|
137
153
|
end
|
154
|
+
|
138
155
|
context "not signed in" do
|
139
156
|
it "should not show me files in the collection" do
|
140
|
-
get :show, id:
|
157
|
+
get :show, id: collection
|
141
158
|
expect(assigns[:member_docs].count).to eq 0
|
142
159
|
end
|
143
160
|
end
|
144
161
|
end
|
145
162
|
|
146
163
|
describe "#edit" do
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
164
|
+
let(:collection) do
|
165
|
+
Collection.create(title: "My collection",
|
166
|
+
description: "My incredibly detailed description of the collection") do |c|
|
167
|
+
c.apply_depositor_metadata(user)
|
168
|
+
end
|
152
169
|
end
|
170
|
+
|
171
|
+
before { sign_in user }
|
172
|
+
|
153
173
|
it "should not show flash" do
|
154
|
-
get :edit, id:
|
174
|
+
get :edit, id: collection
|
155
175
|
expect(flash[:notice]).to be_nil
|
156
176
|
end
|
157
177
|
end
|
@@ -40,9 +40,11 @@ describe GenericFilesController do
|
|
40
40
|
end
|
41
41
|
|
42
42
|
context "when everything is perfect" do
|
43
|
+
render_views
|
43
44
|
it "spawns a content deposit event job" do
|
44
45
|
expect_any_instance_of(Sufia::GenericFile::Actor).to receive(:create_content).with(file, 'world.png', 'content').and_return(true)
|
45
46
|
xhr :post, :create, files: [file], 'Filename' => 'The world', batch_id: batch_id, permission: {group: { public: 'read' } }, terms_of_service: '1'
|
47
|
+
expect(response.body).to eq '[{"name":null,"size":"","url":"/files/test123","thumbnail_url":"test123","delete_url":"deleteme","delete_type":"DELETE"}]'
|
46
48
|
expect(flash[:error]).to be_nil
|
47
49
|
end
|
48
50
|
|
@@ -288,6 +290,10 @@ describe GenericFilesController do
|
|
288
290
|
end
|
289
291
|
|
290
292
|
it 'renders the stats view' do
|
293
|
+
allow(controller.request).to receive(:referer).and_return('foo')
|
294
|
+
expect(controller).to receive(:add_breadcrumb).with(I18n.t('sufia.dashboard.title'), Sufia::Engine.routes.url_helpers.dashboard_index_path)
|
295
|
+
expect(controller).to receive(:add_breadcrumb).with(I18n.t('sufia.dashboard.my.files'), Sufia::Engine.routes.url_helpers.dashboard_files_path)
|
296
|
+
expect(controller).to receive(:add_breadcrumb).with(I18n.t('sufia.generic_file.browse_view'), Sufia::Engine.routes.url_helpers.generic_file_path(generic_file.noid))
|
291
297
|
get :stats, id: generic_file
|
292
298
|
expect(response).to be_success
|
293
299
|
expect(response).to render_template(:stats)
|
@@ -326,14 +332,19 @@ describe GenericFilesController do
|
|
326
332
|
end
|
327
333
|
end
|
328
334
|
|
329
|
-
it "should set the versions presenter" do
|
335
|
+
it "should set the breadcrumbs and versions presenter" do
|
336
|
+
allow(controller.request).to receive(:referer).and_return('foo')
|
337
|
+
expect(controller).to receive(:add_breadcrumb).with(I18n.t('sufia.dashboard.title'), Sufia::Engine.routes.url_helpers.dashboard_index_path)
|
338
|
+
expect(controller).to receive(:add_breadcrumb).with(I18n.t('sufia.dashboard.my.files'), Sufia::Engine.routes.url_helpers.dashboard_files_path)
|
339
|
+
expect(controller).to receive(:add_breadcrumb).with(I18n.t('sufia.generic_file.browse_view'), Sufia::Engine.routes.url_helpers.generic_file_path(generic_file.noid))
|
330
340
|
get :edit, id: generic_file
|
331
341
|
|
332
342
|
expect(response).to be_success
|
333
343
|
expect(assigns[:generic_file]).to eq generic_file
|
344
|
+
expect(assigns[:form]).to be_kind_of Sufia::Forms::GenericFileEditForm
|
334
345
|
expect(assigns[:version_list]).to be_kind_of Sufia::VersionListPresenter
|
346
|
+
expect(response).to render_template(:edit)
|
335
347
|
end
|
336
|
-
|
337
348
|
end
|
338
349
|
|
339
350
|
describe "update" do
|
@@ -521,6 +532,10 @@ describe GenericFilesController do
|
|
521
532
|
expect(assigns[:generic_file]).to eq generic_file
|
522
533
|
expect(assigns[:audit_status]).to eq 'Audits have not yet been run on this file.'
|
523
534
|
end
|
535
|
+
it 'renders an endnote file' do
|
536
|
+
get :show, id: generic_file, format: 'endnote'
|
537
|
+
expect(response).to be_successful
|
538
|
+
end
|
524
539
|
end
|
525
540
|
end
|
526
541
|
|
@@ -173,7 +173,7 @@ describe UsersController, :type => :controller do
|
|
173
173
|
s1 = double('one')
|
174
174
|
expect(UserEditProfileEventJob).to receive(:new).with(user.user_key).and_return(s1)
|
175
175
|
expect(Sufia.queue).to receive(:push).with(s1).once
|
176
|
-
post :update, id: user.user_key, user: { remove_avatar: true }
|
176
|
+
post :update, id: user.user_key, user: { remove_avatar: 'true' }
|
177
177
|
expect(response).to redirect_to(@routes.url_helpers.profile_path(user.to_param))
|
178
178
|
expect(flash[:notice]).to include("Your profile has been updated")
|
179
179
|
expect(User.find_by_user_key(user.user_key).avatar?).to be false
|
@@ -185,16 +185,18 @@ describe UsersController, :type => :controller do
|
|
185
185
|
expect(UserEditProfileEventJob).to receive(:new).with(user.user_key).and_return(s1)
|
186
186
|
expect(Sufia.queue).to receive(:push).with(s1).once
|
187
187
|
expect_any_instance_of(User).to receive(:populate_attributes).once
|
188
|
-
post :update, id: user.user_key, user: { update_directory: true }
|
188
|
+
post :update, id: user.user_key, user: { update_directory: 'true' }
|
189
189
|
expect(response).to redirect_to(@routes.url_helpers.profile_path(user.to_param))
|
190
190
|
expect(flash[:notice]).to include("Your profile has been updated")
|
191
191
|
end
|
192
|
+
|
192
193
|
it "should set an social handles" do
|
193
194
|
expect(user.twitter_handle).to be_blank
|
194
195
|
expect(user.facebook_handle).to be_blank
|
195
196
|
expect(user.googleplus_handle).to be_blank
|
196
197
|
expect(user.linkedin_handle).to be_blank
|
197
|
-
|
198
|
+
expect(user.orcid).to be_blank
|
199
|
+
post :update, id: user.user_key, user: { twitter_handle: 'twit', facebook_handle: 'face', googleplus_handle: 'goo', linkedin_handle:"link", orcid: '0000-0000-1111-2222' }
|
198
200
|
expect(response).to redirect_to(@routes.url_helpers.profile_path(user.to_param))
|
199
201
|
expect(flash[:notice]).to include("Your profile has been updated")
|
200
202
|
u = User.find_by_user_key(user.user_key)
|
@@ -202,6 +204,14 @@ describe UsersController, :type => :controller do
|
|
202
204
|
expect(u.facebook_handle).to eq 'face'
|
203
205
|
expect(u.googleplus_handle).to eq 'goo'
|
204
206
|
expect(u.linkedin_handle).to eq 'link'
|
207
|
+
expect(u.orcid).to eq 'http://orcid.org/0000-0000-1111-2222'
|
208
|
+
end
|
209
|
+
|
210
|
+
it 'displays a flash when invalid ORCID is entered' do
|
211
|
+
expect(user.orcid).to be_blank
|
212
|
+
post :update, id: user.user_key, user: { orcid: 'foobar' }
|
213
|
+
expect(response).to redirect_to(@routes.url_helpers.edit_profile_path(user.to_param))
|
214
|
+
expect(flash[:alert]).to include('Orcid must be a string of 19 characters, e.g., "0000-0000-0000-0000"')
|
205
215
|
end
|
206
216
|
|
207
217
|
context "when removing a trophy" do
|