sufia 3.5.0 → 3.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +0 -3
- data/.travis.yml +4 -4
- data/README.md +1 -10
- data/SUFIA_VERSION +1 -1
- data/app/assets/images/audio.png +0 -0
- data/app/assets/javascripts/sufia/trophy.js +11 -5
- data/app/controllers/single_use_links_controller.rb +11 -1
- data/app/helpers/facets_helper.rb +3 -0
- data/app/helpers/sufia/facets_helper_behavior.rb +23 -0
- data/app/helpers/sufia_helper.rb +3 -21
- data/app/views/dashboard/_facet_limit.html.erb +2 -20
- data/app/views/dashboard/_index_partials/_thumbnail_display.html.erb +4 -2
- data/app/views/generic_files/_descriptions.html.erb +2 -18
- data/app/views/generic_files/_field_form.html.erb +7 -2
- data/app/views/generic_files/_media_display.html.erb +0 -16
- data/app/views/generic_files/_permission.html.erb +1 -17
- data/app/views/generic_files/_permission_form.html.erb +1 -1
- data/app/views/generic_files/_show_actions.html.erb +1 -8
- data/app/views/generic_files/_versioning.html.erb +1 -17
- data/app/views/generic_files/edit.html.erb +1 -17
- data/app/views/mailbox/index.html.erb +5 -3
- data/app/views/users/_activity.html.erb +3 -0
- data/app/views/users/_activity_log.html.erb +1 -17
- data/app/views/users/_contributions.html.erb +29 -0
- data/app/views/users/_follower_modal.html.erb +26 -0
- data/app/views/users/_following_modal.html.erb +26 -0
- data/app/views/users/_left_sidebar.html.erb +12 -0
- data/app/views/users/_notify_number.html.erb +0 -16
- data/app/views/users/_profile.html.erb +7 -0
- data/app/views/users/_profile_actions.html.erb +11 -0
- data/app/views/users/_profile_tabs.html.erb +11 -0
- data/app/views/users/_search_form.html.erb +1 -17
- data/app/views/users/_social_media_info.html.erb +20 -0
- data/app/views/users/_user_info.html.erb +0 -16
- data/app/views/users/_vitals.html.erb +4 -0
- data/app/views/users/edit.html.erb +1 -17
- data/app/views/users/index.html.erb +0 -16
- data/app/views/users/notifications_number.js.erb +0 -16
- data/app/views/users/show.html.erb +21 -58
- data/lib/sufia.rb +1 -3
- data/lib/sufia/controller.rb +0 -6
- data/lib/sufia/version.rb +1 -1
- data/spec/controllers/batch_edits_controller_spec.rb +8 -2
- data/spec/controllers/generic_files_controller_spec.rb +8 -28
- data/spec/controllers/single_use_links_controller_spec.rb +26 -2
- data/spec/factories/generic_files.rb +46 -0
- data/spec/factories/users.rb +6 -2
- data/spec/features/browse_dashboard_files_spec.rb +39 -0
- data/spec/features/browse_files_spec.rb +30 -0
- data/spec/features/{contact_form.rb → contact_form_spec.rb} +1 -1
- data/spec/features/{display_dashboard.rb → display_dashboard_spec.rb} +1 -7
- data/spec/features/{ingest_upload_files.rb → ingest_upload_files_spec.rb} +2 -2
- data/spec/features/notifications_spec.rb +20 -0
- data/spec/features/users_spec.rb +12 -0
- data/spec/helpers/sufia_helper_spec.rb +23 -0
- data/spec/lib/sufia/id_service_spec.rb +0 -38
- data/spec/support/features.rb +2 -0
- data/spec/support/features/session_helpers.rb +9 -1
- data/spec/support/fixture_helpers.rb +10 -0
- data/spec/views/dashboard/facet_limit.html.erb_spec.rb +15 -0
- data/spec/views/dashboard/index_partials/_thumbnail_display.html.erb_spec.rb +22 -0
- data/spec/views/generic_file/edit.html.erb_spec.rb +24 -0
- data/spec/views/users/show.html.erb_spec.rb +31 -0
- data/sufia-models/app/models/concerns/sufia/user.rb +2 -2
- data/sufia-models/lib/generators/sufia/models/install_generator.rb +2 -1
- data/sufia-models/lib/generators/sufia/models/templates/migrations/add_linkedin_to_users.rb +5 -0
- data/sufia-models/lib/sufia/models/generic_file/actions.rb +0 -1
- data/sufia-models/lib/sufia/models/version.rb +1 -1
- data/sufia-models/sufia-models.gemspec +3 -5
- data/tasks/sufia-dev.rake +0 -10
- metadata +43 -69
- data/app/views/generic_files/edit_fields/_type.html.erb +0 -12
- data/lib/tasks/fixtures.rake +0 -231
- data/spec/features/browse_dashboard_files.rb +0 -21
- data/spec/features/browse_files.rb +0 -31
- data/spec/fixtures/empty_file.txt +0 -0
- data/spec/fixtures/fits_datastream.xml +0 -42
- data/spec/fixtures/sufia/bg_header.jpg +0 -0
- data/spec/fixtures/sufia/sufia_test1.descMeta.txt +0 -12
- data/spec/fixtures/sufia/sufia_test1.foxml.erb +0 -89
- data/spec/fixtures/sufia/sufia_test1.txt +0 -1
- data/spec/fixtures/sufia/sufia_test2.descMeta.txt +0 -12
- data/spec/fixtures/sufia/sufia_test2.docx +0 -0
- data/spec/fixtures/sufia/sufia_test2.foxml.erb +0 -88
- data/spec/fixtures/sufia/sufia_test3.descMeta.txt +0 -12
- data/spec/fixtures/sufia/sufia_test3.foxml.erb +0 -91
- data/spec/fixtures/sufia/sufia_test3.xls +0 -0
- data/spec/fixtures/sufia/sufia_test4.descMeta.txt +0 -12
- data/spec/fixtures/sufia/sufia_test4.foxml.erb +0 -91
- data/spec/fixtures/sufia/sufia_test5.descMeta.txt +0 -19
- data/spec/fixtures/sufia/sufia_test5.foxml.erb +0 -90
- data/spec/fixtures/sufia/sufia_test5.txt +0 -1
- data/spec/fixtures/sufia/sufia_test6.descMeta.txt +0 -12
- data/spec/fixtures/sufia/sufia_test6.foxml.erb +0 -89
- data/spec/fixtures/sufia/sufia_test6.jp2 +0 -0
- data/spec/fixtures/sufia/sufia_test6.txt +0 -1
- data/spec/fixtures/sufia_generic_stub.descMeta.txt +0 -12
- data/spec/fixtures/sufia_generic_stub.foxml.erb +0 -79
- data/spec/models/unzip_job_spec.rb +0 -47
- data/spec/rake/sufia_fixtures_spec.rb +0 -74
- data/sufia-models/lib/sufia/models/jobs/unzip_job.rb +0 -38
- data/tasks/sufia-fixtures.rake +0 -232
data/lib/sufia/version.rb
CHANGED
@@ -50,8 +50,14 @@ describe BatchEditsController do
|
|
50
50
|
it "should be successful" do
|
51
51
|
put :update , update_type:"delete_all"
|
52
52
|
response.should be_redirect
|
53
|
-
expect {
|
54
|
-
expect {
|
53
|
+
expect {GenericFile.find(@one.id)}.to raise_error(ActiveFedora::ObjectNotFoundError)
|
54
|
+
expect {GenericFile.find(@two.id)}.to raise_error(ActiveFedora::ObjectNotFoundError)
|
55
|
+
end
|
56
|
+
it "should update the records" do
|
57
|
+
put :update , update_type:"update", "generic_file"=>{"subject"=>["zzz"]}
|
58
|
+
response.should be_redirect
|
59
|
+
GenericFile.find(@one.id).subject.should == ["zzz"]
|
60
|
+
GenericFile.find(@two.id).subject.should == ["zzz"]
|
55
61
|
end
|
56
62
|
end
|
57
63
|
|
@@ -27,8 +27,6 @@ describe GenericFilesController do
|
|
27
27
|
JSON.parse(response.body).first['error'].should match(/no file for upload/i)
|
28
28
|
end
|
29
29
|
|
30
|
-
|
31
|
-
|
32
30
|
it "should spawn a content deposit event job" do
|
33
31
|
file = fixture_file_upload('/world.png','image/png')
|
34
32
|
s1 = double('one')
|
@@ -50,23 +48,6 @@ describe GenericFilesController do
|
|
50
48
|
flash[:error].should include('A virus was found')
|
51
49
|
end
|
52
50
|
|
53
|
-
it "should expand zip files" do
|
54
|
-
file = fixture_file_upload('/icons.zip','application/zip')
|
55
|
-
s1 = double('one')
|
56
|
-
ContentDepositEventJob.should_receive(:new).with('test:123', 'jilluser@example.com').and_return(s1)
|
57
|
-
Sufia.queue.should_receive(:push).with(s1).once
|
58
|
-
|
59
|
-
s2 = double('one')
|
60
|
-
CharacterizeJob.should_receive(:new).with('test:123').and_return(s2)
|
61
|
-
Sufia.queue.should_receive(:push).with(s2).once
|
62
|
-
|
63
|
-
s3 = double('one')
|
64
|
-
UnzipJob.should_receive(:new).with('test:123').and_return(s3)
|
65
|
-
Sufia.queue.should_receive(:push).with(s3).once
|
66
|
-
|
67
|
-
xhr :post, :create, :files=>[file], :Filename=>"The world", :batch_id => "sample:batch_id", :permission=>{"group"=>{"public"=>"read"} }, :terms_of_service => '1'
|
68
|
-
end
|
69
|
-
|
70
51
|
it "should create and save a file asset from the given params" do
|
71
52
|
date_today = Date.today
|
72
53
|
Date.stub(:today).and_return(date_today)
|
@@ -127,16 +108,16 @@ describe GenericFilesController do
|
|
127
108
|
saved_file.to_solr.keys.should include('depositor_tesim')
|
128
109
|
saved_file.to_solr['depositor_tesim'].should == ['jilluser@example.com']
|
129
110
|
end
|
130
|
-
|
111
|
+
|
131
112
|
it "should error out of create and save after on continuos rsolr error" do
|
132
|
-
GenericFile.any_instance.stub(:save).and_raise(RSolr::Error::Http.new({},{}))
|
133
|
-
|
113
|
+
GenericFile.any_instance.stub(:save).and_raise(RSolr::Error::Http.new({},{}))
|
114
|
+
|
134
115
|
file = fixture_file_upload('/world.png','image/png')
|
135
116
|
xhr :post, :create, :files=>[file], :Filename=>"The world", :batch_id => "sample:batch_id", :permission=>{"group"=>{"public"=>"read"} }, :terms_of_service=>"1"
|
136
117
|
response.body.should include("Error occurred while creating generic file.")
|
137
118
|
end
|
138
119
|
end
|
139
|
-
|
120
|
+
|
140
121
|
describe "#create with local_file" do
|
141
122
|
let (:mock_url) {"http://example.com"}
|
142
123
|
before do
|
@@ -144,7 +125,7 @@ describe GenericFilesController do
|
|
144
125
|
GenericFile.delete_all
|
145
126
|
@mock_upload_directory = 'spec/mock_upload_directory'
|
146
127
|
# Dir.mkdir @mock_upload_directory unless File.exists? @mock_upload_directory
|
147
|
-
FileUtils.mkdir_p([File.join(@mock_upload_directory, "import/files"),File.join(@mock_upload_directory, "import/metadata")])
|
128
|
+
FileUtils.mkdir_p([File.join(@mock_upload_directory, "import/files"),File.join(@mock_upload_directory, "import/metadata")])
|
148
129
|
FileUtils.copy(File.expand_path('../../fixtures/world.png', __FILE__), @mock_upload_directory)
|
149
130
|
FileUtils.copy(File.expand_path('../../fixtures/image.jpg', __FILE__), @mock_upload_directory)
|
150
131
|
FileUtils.copy(File.expand_path('../../fixtures/dublin_core_rdf_descMetadata.nt', __FILE__), File.join(@mock_upload_directory, "import/metadata"))
|
@@ -157,7 +138,7 @@ describe GenericFilesController do
|
|
157
138
|
GenericFile.destroy_all
|
158
139
|
end
|
159
140
|
context "when User model defines a directory path" do
|
160
|
-
before do
|
141
|
+
before do
|
161
142
|
if $in_travis
|
162
143
|
# In order to avoid an invalid derivative creation, just stub out the derivatives.
|
163
144
|
GenericFile.any_instance.stub(:create_derivatives)
|
@@ -271,7 +252,7 @@ describe GenericFilesController do
|
|
271
252
|
@user = FactoryGirl.find_or_create(:user)
|
272
253
|
sign_in @user
|
273
254
|
post :update, :id=>@generic_file.pid, :generic_file=>{:title=>'new_title', :tag=>[''], :permissions=>{:new_user_name=>{'archivist1'=>'edit'}}}
|
274
|
-
@user.delete
|
255
|
+
@user.delete
|
275
256
|
end
|
276
257
|
|
277
258
|
it "should spawn a content new version event job" do
|
@@ -319,7 +300,6 @@ describe GenericFilesController do
|
|
319
300
|
@user.delete
|
320
301
|
end
|
321
302
|
|
322
|
-
|
323
303
|
it "should record what user added a new version" do
|
324
304
|
@user = FactoryGirl.find_or_create(:user)
|
325
305
|
sign_in @user
|
@@ -407,7 +387,7 @@ describe GenericFilesController do
|
|
407
387
|
it "should go back to edit on an error" do
|
408
388
|
GenericFile.any_instance.should_receive(:valid?).and_return(false)
|
409
389
|
post :update, :id=>@generic_file.pid, :generic_file=>{:tag=>['']}
|
410
|
-
response.should be_successful
|
390
|
+
response.should be_successful
|
411
391
|
response.should render_template('edit')
|
412
392
|
assigns[:generic_file].should == @generic_file
|
413
393
|
end
|
@@ -21,9 +21,8 @@ describe SingleUseLinksController do
|
|
21
21
|
controller.stub(:has_access?).and_return(true)
|
22
22
|
controller.stub(:clear_session_user) ## Don't clear out the authenticated session
|
23
23
|
end
|
24
|
-
describe "logged in user" do
|
24
|
+
describe "logged in user with edit permission" do
|
25
25
|
before do
|
26
|
-
@user = FactoryGirl.find_or_create(:user)
|
27
26
|
sign_in @user
|
28
27
|
@now = DateTime.now
|
29
28
|
DateTime.stub(:now).and_return(@now)
|
@@ -50,6 +49,31 @@ describe SingleUseLinksController do
|
|
50
49
|
end
|
51
50
|
end
|
52
51
|
|
52
|
+
describe "logged in user without edit permission" do
|
53
|
+
before do
|
54
|
+
@other_user = FactoryGirl.find_or_create(:archivist)
|
55
|
+
@file.read_users << @other_user
|
56
|
+
@file.save
|
57
|
+
sign_in @other_user
|
58
|
+
end
|
59
|
+
|
60
|
+
describe "GET 'download'" do
|
61
|
+
it "and_return http success" do
|
62
|
+
get 'new_download', id:@file.pid
|
63
|
+
response.should_not be_success
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
describe "GET 'show'" do
|
69
|
+
it "and_return http success" do
|
70
|
+
get 'new_show', id:@file.pid
|
71
|
+
response.should_not be_success
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
53
77
|
describe "unkown user" do
|
54
78
|
describe "GET 'download'" do
|
55
79
|
it "and_return http failure" do
|
@@ -0,0 +1,46 @@
|
|
1
|
+
FactoryGirl.define do
|
2
|
+
|
3
|
+
factory :fixture, :class => GenericFile do
|
4
|
+
factory :public_pdf do
|
5
|
+
ignore do
|
6
|
+
pid "sufia:fixture-pdf"
|
7
|
+
end
|
8
|
+
initialize_with { new(pid: pid) }
|
9
|
+
read_groups ["public"]
|
10
|
+
resource_type "Dissertation"
|
11
|
+
subject %w"lorem ipsum dolor sit amet"
|
12
|
+
before(:create) do |gf|
|
13
|
+
gf.apply_depositor_metadata "archivist1@example.com"
|
14
|
+
gf.title = "Fake Document Title"
|
15
|
+
gf.label = "fake_document.pdf"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
factory :public_mp3 do
|
19
|
+
ignore do
|
20
|
+
pid "sufia:fixture-mp3"
|
21
|
+
end
|
22
|
+
initialize_with { new(pid: pid) }
|
23
|
+
subject %w"consectetur adipisicing elit"
|
24
|
+
before(:create) do |gf|
|
25
|
+
gf.apply_depositor_metadata "archivist1@example.com"
|
26
|
+
gf.inner_object.pid = "sufia:fixture-mp3"
|
27
|
+
gf.label = "Test Document MP3.mp3"
|
28
|
+
end
|
29
|
+
read_groups ["public"]
|
30
|
+
end
|
31
|
+
factory :public_wav do
|
32
|
+
ignore do
|
33
|
+
pid "sufia:fixture-wav"
|
34
|
+
end
|
35
|
+
initialize_with { new(pid: pid) }
|
36
|
+
resource_type ["Audio", "Dataset"]
|
37
|
+
read_groups ["public"]
|
38
|
+
subject %w"sed do eiusmod tempor incididunt ut labore"
|
39
|
+
before(:create) do |gf|
|
40
|
+
gf.apply_depositor_metadata "archivist1@example.com"
|
41
|
+
gf.label = "Fake Wav File.wav"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
data/spec/factories/users.rb
CHANGED
@@ -4,14 +4,18 @@ FactoryGirl.define do
|
|
4
4
|
password 'password'
|
5
5
|
end
|
6
6
|
|
7
|
-
factory :archivist, :class => User do |u|
|
7
|
+
factory :archivist, aliases: [:user_with_fixtures], :class => User do |u|
|
8
8
|
email 'archivist1@example.com'
|
9
9
|
password 'password'
|
10
10
|
end
|
11
11
|
|
12
|
-
factory :
|
12
|
+
factory :user_with_mail, :class => User do |u|
|
13
13
|
email 'archivist2@example.com'
|
14
14
|
password 'password'
|
15
|
+
after(:create) do |user|
|
16
|
+
message = '<span class="batchid ui-helper-hidden">fake_batch_noid</span>You\'ve got mail.'
|
17
|
+
User.batchuser().send_message(user, message, "Sample notification.")
|
18
|
+
end
|
15
19
|
end
|
16
20
|
|
17
21
|
factory :curator, :class => User do |u|
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Browse Dashboard files" do
|
4
|
+
|
5
|
+
before do
|
6
|
+
find_or_create_file_fixtures
|
7
|
+
sign_in :user_with_fixtures
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should show me some files (from the fixtures)" do
|
11
|
+
click_link "dashboard"
|
12
|
+
page.should have_content "Edit File"
|
13
|
+
page.should have_content "Download File"
|
14
|
+
fill_in "dashboard_search", with: "PDF"
|
15
|
+
click_button "dashboard_submit"
|
16
|
+
page.should have_content "Fake Document Title"
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should allow you to browse facets" do
|
20
|
+
# TODO: fix more facets link!
|
21
|
+
pending "Until more facets link is fixed..."
|
22
|
+
visit '/'
|
23
|
+
click_link "more Subjects"
|
24
|
+
click_link "consectetur"
|
25
|
+
#page.should have_content "1 - 5 of 5"
|
26
|
+
click_link "Test Document MP3.mp3"
|
27
|
+
page.should have_content "Download"
|
28
|
+
page.should_not have_content "Edit"
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should allow me to edit files (from the fixtures)" do
|
32
|
+
click_link "dashboard"
|
33
|
+
fill_in "dashboard_search", with: "Wav"
|
34
|
+
click_button "dashboard_submit"
|
35
|
+
click_link "Edit File"
|
36
|
+
page.should have_content "Edit Fake Wav File.wav"
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Browse files" do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
find_or_create_file_fixtures
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "when not logged in" do
|
10
|
+
it "should let us browse some of the fixtures" do
|
11
|
+
visit '/'
|
12
|
+
#click_link "more Keywords"
|
13
|
+
#click_link "test"
|
14
|
+
#page.should have_content "1 - 5 of 5"
|
15
|
+
click_link "Fake Document Title"
|
16
|
+
page.should have_content "Download"
|
17
|
+
page.should_not have_content "Edit"
|
18
|
+
end
|
19
|
+
it "should allow you to browse facets" do
|
20
|
+
# TODO: fix more facets link!
|
21
|
+
pending "Until more facets link is fixed..."
|
22
|
+
visit '/'
|
23
|
+
click_link "more Subjects"
|
24
|
+
click_link "consectetur"
|
25
|
+
click_link "Test Document MP3.mp3"
|
26
|
+
page.should have_content "Download"
|
27
|
+
page.should_not have_content "Edit"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -94,6 +94,6 @@ describe "Sending an email via the contact form" do
|
|
94
94
|
fill_in "contact_form_message", with: "I am contacting you regarding ScholarSphere."
|
95
95
|
select "Depositing content", from: "contact_form_category"
|
96
96
|
click_button "Send"
|
97
|
-
page.should have_content "Sorry, this message was not
|
97
|
+
page.should have_content "Sorry, this message was not sent successfully"
|
98
98
|
end
|
99
99
|
end
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe "Display Dashboard files" do
|
4
4
|
|
5
5
|
before do
|
6
|
-
sign_in :
|
6
|
+
sign_in :user_with_fixtures
|
7
7
|
end
|
8
8
|
|
9
9
|
it "should display the dashboard and have search" do
|
@@ -21,12 +21,6 @@ describe "Display Dashboard files" do
|
|
21
21
|
page.should have_content "Upload"
|
22
22
|
end
|
23
23
|
|
24
|
-
it "should display the dashboard and want to upload files" do
|
25
|
-
click_link 'dashboard'
|
26
|
-
click_link 'Upload File(s)'
|
27
|
-
page.should have_content "Upload"
|
28
|
-
end
|
29
|
-
|
30
24
|
it "should display the dashboard and want to search the whole system" do
|
31
25
|
fill_in "search-field-header", with: "system search"
|
32
26
|
click_button "search-submit-header"
|
@@ -16,8 +16,8 @@ describe "Uploading files via web form" do
|
|
16
16
|
|
17
17
|
it "should require checking the terms of service" do
|
18
18
|
click_link "upload"
|
19
|
-
attach_file("files[]", "spec/fixtures/image.jp2")
|
20
|
-
attach_file("files[]", "spec/fixtures/jp2_fits.xml")
|
19
|
+
attach_file("files[]", File.dirname(__FILE__)+"/../../spec/fixtures/image.jp2")
|
20
|
+
attach_file("files[]", File.dirname(__FILE__)+"/../../spec/fixtures/jp2_fits.xml")
|
21
21
|
click_button 'Start upload'
|
22
22
|
page.should have_content "You must accept the terms of service!"
|
23
23
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "Notifications page" do
|
4
|
+
|
5
|
+
before do
|
6
|
+
sign_in :user_with_mail
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should list notifications with date, subject and message" do
|
10
|
+
visit "/notifications"
|
11
|
+
page.should have_content "User Notifications"
|
12
|
+
page.find(:xpath, '//thead/tr').should have_content "Date"
|
13
|
+
page.find(:xpath, '//thead/tr').should have_content "Subject"
|
14
|
+
page.find(:xpath, '//thead/tr').should have_content "Message"
|
15
|
+
page.should have_content "Sample notification."
|
16
|
+
page.should have_content "less than a minute ago"
|
17
|
+
page.should have_content "You've got mail."
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
data/spec/features/users_spec.rb
CHANGED
@@ -25,4 +25,16 @@ describe "User Profile" do
|
|
25
25
|
click_link "View Users"
|
26
26
|
page.should have_xpath("//td/a[@href='/users/curator1@example-dot-com']")
|
27
27
|
end
|
28
|
+
|
29
|
+
it "should be searchable" do
|
30
|
+
@archivist = FactoryGirl.find_or_create(:archivist)
|
31
|
+
click_link "curator1@example.com"
|
32
|
+
click_link "View Users"
|
33
|
+
page.should have_xpath("//td/a[@href='/users/curator1@example-dot-com']")
|
34
|
+
page.should have_xpath("//td/a[@href='/users/archivist1@example-dot-com']")
|
35
|
+
fill_in 'user_search', with: 'archivist1@example.com'
|
36
|
+
click_button "user_submit"
|
37
|
+
page.should_not have_xpath("//td/a[@href='/users/curator1@example-dot-com']")
|
38
|
+
page.should have_xpath("//td/a[@href='/users/archivist1@example-dot-com']")
|
39
|
+
end
|
28
40
|
end
|
@@ -10,6 +10,29 @@ describe SufiaHelper do
|
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
+
describe "number_of_deposits" do
|
14
|
+
let(:conn) { ActiveFedora::SolrService.instance.conn }
|
15
|
+
before do
|
16
|
+
# More than 10 times, because the pagination threshold is 10
|
17
|
+
12.times do |t|
|
18
|
+
conn.add :id => "199#{t}", Solrizer.solr_name('depositor', :stored_searchable) => user.user_key
|
19
|
+
end
|
20
|
+
conn.commit
|
21
|
+
end
|
22
|
+
after do
|
23
|
+
12.times do |t|
|
24
|
+
conn.delete_by_id "199#{t}"
|
25
|
+
end
|
26
|
+
conn.commit
|
27
|
+
end
|
28
|
+
|
29
|
+
let(:user) { double(user_key: 'justin') }
|
30
|
+
|
31
|
+
it "should return the correct number" do
|
32
|
+
expect(number_of_deposits(user)).to eq 12
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
13
36
|
describe "selected facet" do
|
14
37
|
let(:blacklight_config) { Blacklight::Configuration.new }
|
15
38
|
|
@@ -11,44 +11,6 @@ describe Sufia::IdService do
|
|
11
11
|
it "should not mint the same id twice in a row" do
|
12
12
|
other_id = Sufia::IdService.mint
|
13
13
|
other_id.should_not == @id
|
14
|
-
end
|
15
|
-
it "should create many unique ids" do
|
16
|
-
a = []
|
17
|
-
threads = (1..10).map do
|
18
|
-
Thread.new do
|
19
|
-
100.times do
|
20
|
-
a << Sufia::IdService.mint
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
threads.each(&:join)
|
25
|
-
a.uniq.count.should == a.count
|
26
|
-
end
|
27
|
-
it "should create many unique ids when hit by multiple processes " do
|
28
|
-
rd, wr = IO.pipe
|
29
|
-
2.times do
|
30
|
-
pid = fork do
|
31
|
-
rd.close
|
32
|
-
threads = (1..10).map do
|
33
|
-
Thread.new do
|
34
|
-
20.times do
|
35
|
-
wr.write Sufia::IdService.mint
|
36
|
-
wr.write " "
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
threads.each(&:join)
|
41
|
-
wr.close
|
42
|
-
end
|
43
|
-
end
|
44
|
-
wr.close
|
45
|
-
2.times do
|
46
|
-
Process.wait
|
47
|
-
end
|
48
|
-
s = rd.read
|
49
|
-
rd.close
|
50
|
-
a = s.split(" ")
|
51
|
-
a.uniq.count.should == a.count
|
52
14
|
end
|
53
15
|
end
|
54
16
|
end
|