worthwhile 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +2 -3
- data/README.md +2 -0
- data/app/assets/stylesheets/worthwhile/_worthwhile.css.scss +2 -0
- data/app/helpers/curate/collections_helper.rb +17 -117
- data/app/helpers/worthwhile/collections_helper.rb +15 -4
- data/app/views/catalog/_action_menu_partials/_default.html.erb +1 -1
- data/app/views/catalog/index.html.erb +5 -6
- data/app/views/collections/_form.html.erb +1 -1
- data/app/views/collections/_form_representative_image.html.erb +13 -0
- data/app/views/collections/edit.html.erb +7 -12
- data/app/views/collections/new.html.erb +9 -11
- data/app/views/curate/collections/_add_to_collection_modal.html.erb +2 -2
- data/app/views/curation_concern/base/_form_descriptive_fields.erb +1 -13
- data/app/views/curation_concern/base/_form_editors.html.erb +15 -0
- data/app/views/curation_concern/base/edit.html.erb +10 -12
- data/app/views/curation_concern/base/new.html.erb +9 -11
- data/app/views/curation_concern/base/show.html.erb +15 -19
- data/app/views/curation_concern/generic_files/edit.html.erb +2 -2
- data/app/views/curation_concern/generic_files/show.html.erb +3 -3
- data/app/views/curation_concern/linked_resources/edit.html.erb +2 -2
- data/app/views/curation_concern/linked_resources/new.html.erb +2 -2
- data/app/views/embargoes/edit.html.erb +1 -1
- data/app/views/layouts/curate_nd/1_column.html.erb +1 -12
- data/app/views/layouts/curate_nd/catalog.html.erb +1 -2
- data/app/views/layouts/curate_nd.html.erb +2 -13
- data/app/views/leases/edit.html.erb +1 -1
- data/app/views/worthwhile/classify_concerns/new.html.erb +3 -5
- data/config/locales/sufia.en.yml +2 -2
- data/lib/generators/worthwhile/install_generator.rb +6 -1
- data/lib/generators/worthwhile/templates/worthwhile.css.scss +0 -2
- data/lib/worthwhile/rails/routes.rb +4 -5
- data/lib/worthwhile/version.rb +1 -1
- data/spec/controllers/collections_controller_spec.rb +1 -1
- data/spec/controllers/curation_concern/permissions_controller_spec.rb +3 -3
- data/spec/controllers/downloads_controller_spec.rb +2 -2
- data/spec/controllers/worthwhile/classify_concerns_controller_spec.rb +19 -11
- data/spec/features/collection_spec.rb +48 -48
- data/spec/helpers/worthwhile/collections_helper_spec.rb +19 -0
- data/spec/matchers/metadata_field_matchers.rb +3 -3
- data/spec/models/collection_spec.rb +23 -23
- data/spec/models/curation_concern/collection_model_spec.rb +2 -2
- data/spec/models/worthwhile/content_version_spec.rb +2 -2
- data/spec/models/worthwhile/linked_resource_spec.rb +8 -8
- data/spec/routing/worthwhile/routes_spec.rb +2 -3
- data/spec/spec_helper.rb +5 -11
- data/spec/views/collections/_form_representative_image.html.erb_spec.rb +20 -0
- data/spec/views/curation_concern/base/_attributes.html.erb_spec.rb +3 -3
- data/spec/views/curation_concern/base/show.html.erb_spec.rb +13 -9
- metadata +8 -7
- data/app/assets/stylesheets/worthwhile.css.scss +0 -23
- data/app/views/curate/collections/add_member_form.html.erb +0 -6
- data/app/views/layouts/common_objects.html.erb +0 -36
- data/app/views/layouts/curate_nd/2_column.html.erb +0 -26
- data/app/views/layouts/curate_nd/dashboard.html.erb +0 -22
data/config/locales/sufia.en.yml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
en:
|
2
2
|
sufia:
|
3
|
-
product_name: "
|
3
|
+
product_name: "Repository"
|
4
4
|
institution_name: "Your Institution"
|
5
5
|
institution_homepage_url: "#"
|
6
6
|
division_name: "Your Division at Institution"
|
@@ -8,7 +8,7 @@ en:
|
|
8
8
|
search:
|
9
9
|
form:
|
10
10
|
q:
|
11
|
-
label: "Search
|
11
|
+
label: "Search Repository"
|
12
12
|
placeholder: "Type keywords in here"
|
13
13
|
search_facets:
|
14
14
|
label: "View:"
|
@@ -20,13 +20,18 @@ module Worthwhile
|
|
20
20
|
say_status("warning", "Removing Blacklight's generated CatalogController...", :yellow)
|
21
21
|
remove_file('app/controllers/catalog_controller.rb')
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
def inject_application_controller_behavior
|
25
25
|
inject_into_file 'app/controllers/application_controller.rb', :after => /Blacklight::Controller\s*\n/ do
|
26
26
|
" include Worthwhile::ApplicationControllerBehavior\n"
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
+
def replace_blacklight_layout
|
31
|
+
gsub_file 'app/controllers/application_controller.rb', /layout 'blacklight'/,
|
32
|
+
"include Worthwhile::ThemedLayoutController\n with_themed_layout '1_column'\n"
|
33
|
+
end
|
34
|
+
|
30
35
|
def inject_routes
|
31
36
|
inject_into_file 'config/routes.rb', :after => /devise_for :users\s*\n/ do
|
32
37
|
" mount Hydra::Collections::Engine => '/'\n"\
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module ActionDispatch::Routing
|
2
2
|
class Mapper
|
3
|
-
|
4
|
-
def worthwhile_curation_concerns
|
3
|
+
|
4
|
+
def worthwhile_curation_concerns
|
5
5
|
resources :downloads, only: :show
|
6
6
|
namespace :curation_concern, path: :concern do
|
7
7
|
Worthwhile.configuration.registered_curation_concern_types.map(&:tableize).each do |curation_concern_name|
|
@@ -37,7 +37,6 @@ module ActionDispatch::Routing
|
|
37
37
|
get 'facet/:id', action: :facet, as: :dashboard_facet
|
38
38
|
end
|
39
39
|
collection do
|
40
|
-
get :add_member_form
|
41
40
|
put '', action: :update
|
42
41
|
put :remove_member
|
43
42
|
end
|
@@ -56,7 +55,7 @@ module ActionDispatch::Routing
|
|
56
55
|
end
|
57
56
|
end
|
58
57
|
end
|
59
|
-
|
58
|
+
|
60
59
|
private
|
61
60
|
# Namespaces routes appropriately
|
62
61
|
# @example route_namespaced_target("worthwhile/generic_work") is equivalent to
|
@@ -67,7 +66,7 @@ module ActionDispatch::Routing
|
|
67
66
|
if target.include?("/")
|
68
67
|
the_namespace = target[0..target.index("/")-1]
|
69
68
|
new_target = target[target.index("/")+1..-1]
|
70
|
-
namespace the_namespace do
|
69
|
+
namespace the_namespace do
|
71
70
|
namespaced_resources(new_target, opts)
|
72
71
|
end
|
73
72
|
else
|
data/lib/worthwhile/version.rb
CHANGED
@@ -119,7 +119,7 @@ describe CollectionsController do
|
|
119
119
|
end
|
120
120
|
it "should remove members and update all of the relevant solr documents" do
|
121
121
|
# BUG: This is returning inaccurate information
|
122
|
-
# collection.reload.members.
|
122
|
+
# expect(collection.reload.members).to include public_asset_not_mine
|
123
123
|
solr_doc_before_remove = ActiveFedora::SolrInstanceLoader.new(ActiveFedora::Base, public_asset_not_mine.pid).send(:solr_doc)
|
124
124
|
expect(solr_doc_before_remove[Solrizer.solr_name(:collection)]).to eq [collection.pid]
|
125
125
|
put :update, id: collection.id, collection: {members:"remove"}, batch_document_ids:[public_asset_not_mine.pid]
|
@@ -15,11 +15,11 @@ describe CurationConcern::PermissionsController do
|
|
15
15
|
|
16
16
|
describe "#copy" do
|
17
17
|
let(:generic_work) { FactoryGirl.create(:generic_work, user: user) }
|
18
|
+
let(:worker) { double }
|
18
19
|
|
19
20
|
it "should add a worker to the queue" do
|
20
|
-
worker
|
21
|
-
|
22
|
-
Sufia.queue.should_receive(:push).with(worker)
|
21
|
+
expect(VisibilityCopyWorker).to receive(:new).with(generic_work.pid).and_return(worker)
|
22
|
+
expect(Sufia.queue).to receive(:push).with(worker)
|
23
23
|
post :copy, id: generic_work
|
24
24
|
expect(response).to redirect_to controller.polymorphic_path([:curation_concern, generic_work])
|
25
25
|
expect(flash[:notice]).to eq 'Updating file permissions. This may take a few minutes. You may want to refresh your browser or return to this record later to see the updated file permissions.'
|
@@ -39,7 +39,7 @@ describe DownloadsController do
|
|
39
39
|
generic_file
|
40
40
|
sign_in user
|
41
41
|
get :show, id: generic_file.to_param
|
42
|
-
response.body.
|
42
|
+
expect(response.body).to eq generic_file.content.content
|
43
43
|
end
|
44
44
|
|
45
45
|
it 'sends requested datastream content' do
|
@@ -47,7 +47,7 @@ describe DownloadsController do
|
|
47
47
|
generic_file.save!
|
48
48
|
sign_in user
|
49
49
|
get :show, id: generic_file.to_param, datastream_id: 'thumbnail'
|
50
|
-
response.body.
|
50
|
+
expect(response.body).to eq generic_file.thumbnail.content
|
51
51
|
end
|
52
52
|
end
|
53
53
|
end
|
@@ -17,19 +17,27 @@ describe Worthwhile::ClassifyConcernsController do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
describe '#create' do
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
context 'without logging in' do
|
21
|
+
it 'redirect to login page if user is not logged in' do
|
22
|
+
post :create, classify: { curation_concern_type: 'GenericWork' }
|
23
|
+
expect(response).to redirect_to(main_app.user_session_path)
|
24
|
+
end
|
23
25
|
end
|
24
26
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
27
|
+
context 'when logged in' do
|
28
|
+
before do
|
29
|
+
sign_in(user)
|
30
|
+
# Had to stub the actual handling of curation_concern paths since those paths live outside the engine while the path to this controller lives inside the engine.
|
31
|
+
expect(subject).to receive(:new_polymorphic_path).with([:curation_concern, GenericWork]).and_return(new_curation_concern_generic_work_path)
|
32
|
+
end
|
33
|
+
|
34
|
+
let(:new_curation_concern_generic_work_path) { "/stub/path" }
|
35
|
+
|
36
|
+
it 'requires authentication' do
|
37
|
+
post :create, classify_concern: { curation_concern_type: 'GenericWork' }
|
38
|
+
expect(response).to redirect_to(new_curation_concern_generic_work_path)
|
39
|
+
end
|
40
|
+
end
|
33
41
|
|
34
42
|
end
|
35
43
|
end
|
@@ -84,12 +84,12 @@ describe 'collection' do
|
|
84
84
|
end
|
85
85
|
|
86
86
|
it "should delete a collection" do
|
87
|
-
page.
|
87
|
+
expect(page).to have_content(@collection.title)
|
88
88
|
within("#document_#{@collection.noid}") do
|
89
89
|
first(".itemtrash").click
|
90
90
|
end
|
91
|
-
page.
|
92
|
-
page.
|
91
|
+
expect(page).to_not have_content(@collection.title)
|
92
|
+
expect(page).to have_content("Collection was successfully deleted.")
|
93
93
|
end
|
94
94
|
end
|
95
95
|
|
@@ -105,16 +105,16 @@ describe 'collection' do
|
|
105
105
|
end
|
106
106
|
|
107
107
|
it "should show a collection with a listing of Descriptive Metadata and catalog-style search results" do
|
108
|
-
page.
|
108
|
+
expect(page).to have_content(@collection.title)
|
109
109
|
within('#document_'+@collection.noid) do
|
110
110
|
click_link("collection title")
|
111
111
|
end
|
112
|
-
page.
|
113
|
-
page.
|
112
|
+
expect(page).to have_content(@collection.title)
|
113
|
+
expect(page).to have_content(@collection.description)
|
114
114
|
# Should have search results / contents listing
|
115
|
-
page.
|
116
|
-
page.
|
117
|
-
page.
|
115
|
+
expect(page).to have_content(@gw1.title.first)
|
116
|
+
expect(page).to have_content(@gw2.title.first)
|
117
|
+
expect(page).to_not have_css(".pager")
|
118
118
|
|
119
119
|
#click_link "Gallery"
|
120
120
|
#expect(page).to have_content(@gw1.title)
|
@@ -122,25 +122,25 @@ describe 'collection' do
|
|
122
122
|
end
|
123
123
|
|
124
124
|
it "should hide collection descriptive metadata when searching a collection" do
|
125
|
-
page.
|
125
|
+
expect(page).to have_content(@collection.title)
|
126
126
|
within("#document_#{@collection.noid}") do
|
127
127
|
click_link("collection title")
|
128
128
|
end
|
129
|
-
page.
|
130
|
-
page.
|
131
|
-
page.
|
132
|
-
page.
|
129
|
+
expect(page).to have_content(@collection.title)
|
130
|
+
expect(page).to have_content(@collection.description)
|
131
|
+
expect(page).to have_content(@gw1.title.first)
|
132
|
+
expect(page).to have_content(@gw2.title.first)
|
133
133
|
fill_in('collection_search', with: @gw1.title.first)
|
134
134
|
click_button('collection_submit')
|
135
135
|
# Should not have Collection Descriptive metadata table
|
136
|
-
page.
|
137
|
-
page.
|
138
|
-
page.
|
136
|
+
expect(page).to_not have_content("Descriptions")
|
137
|
+
expect(page).to have_content(@collection.title)
|
138
|
+
expect(page).to have_content(@collection.description)
|
139
139
|
# Should have search results / contents listing
|
140
|
-
page.
|
141
|
-
page.
|
140
|
+
expect(page).to have_content(@gw1.title.first)
|
141
|
+
expect(page).to_not have_content(@gw2.title.first)
|
142
142
|
# Should not have Dashboard content in contents listing
|
143
|
-
page.
|
143
|
+
expect(page).to_not have_content("Visibility")
|
144
144
|
end
|
145
145
|
end
|
146
146
|
|
@@ -156,12 +156,12 @@ describe 'collection' do
|
|
156
156
|
end
|
157
157
|
|
158
158
|
it "should edit and update collection metadata" do
|
159
|
-
page.
|
159
|
+
expect(page).to have_content(@collection.title)
|
160
160
|
within("#document_#{@collection.noid}") do
|
161
161
|
click_link('Edit Collection')
|
162
162
|
end
|
163
|
-
page.
|
164
|
-
page.
|
163
|
+
expect(page).to have_field('collection_title', with: @collection.title)
|
164
|
+
expect(page).to have_field('collection_description', with: @collection.description)
|
165
165
|
new_title = "Altered Title"
|
166
166
|
new_description = "Completely new Description text."
|
167
167
|
creators = ["Dorje Trollo", "Vajrayogini"]
|
@@ -171,48 +171,48 @@ describe 'collection' do
|
|
171
171
|
#within('.form-actions') do
|
172
172
|
click_button('Update Collection')
|
173
173
|
#end
|
174
|
-
page.
|
175
|
-
page.
|
176
|
-
page.
|
177
|
-
page.
|
178
|
-
page.
|
174
|
+
expect(page).to_not have_content(@collection.title)
|
175
|
+
expect(page).to_not have_content(@collection.description)
|
176
|
+
expect(page).to have_content(new_title)
|
177
|
+
expect(page).to have_content(new_description)
|
178
|
+
expect(page).to have_content(creators.first)
|
179
179
|
end
|
180
180
|
|
181
181
|
it "should remove a work from a collection" do
|
182
182
|
skip "BUG removing works from a collection"
|
183
|
-
page.
|
183
|
+
expect(page).to have_content(@collection.title)
|
184
184
|
within("#document_#{@collection.noid}") do
|
185
185
|
click_link('Edit Collection')
|
186
186
|
end
|
187
|
-
page.
|
188
|
-
page.
|
189
|
-
page.
|
190
|
-
page.
|
187
|
+
expect(page).to have_field('collection_title', with: @collection.title)
|
188
|
+
expect(page).to have_field('collection_description', with: @collection.description)
|
189
|
+
expect(page).to have_content(@gw1.title)
|
190
|
+
expect(page).to have_content(@gw2.title)
|
191
191
|
within("#document_#{@gw1.noid}") do
|
192
192
|
click_button('Remove From Collection')
|
193
193
|
end
|
194
|
-
page.
|
195
|
-
page.
|
196
|
-
page.
|
197
|
-
page.
|
194
|
+
expect(page).to have_content(@collection.title)
|
195
|
+
expect(page).to have_content(@collection.description)
|
196
|
+
expect(page).to_not have_content(@gw1.title)
|
197
|
+
expect(page).to have_content(@gw2.title)
|
198
198
|
end
|
199
199
|
|
200
200
|
it "should remove all works from a collection" do
|
201
201
|
skip "batch collection operations (add/remove)"
|
202
|
-
page.
|
202
|
+
expect(page).to have_content(@collection.title)
|
203
203
|
within('#document_'+@collection.noid) do
|
204
204
|
click_link('Edit Collection')
|
205
205
|
end
|
206
|
-
page.
|
207
|
-
page.
|
208
|
-
page.
|
209
|
-
page.
|
206
|
+
expect(page).to have_field('collection_title', with: @collection.title)
|
207
|
+
expect(page).to have_field('collection_description', with: @collection.description)
|
208
|
+
expect(page).to have_content(@gw1.title)
|
209
|
+
expect(page).to have_content(@gw2.title)
|
210
210
|
first('input#check_all').click
|
211
211
|
click_button('Remove From Collection')
|
212
|
-
page.
|
213
|
-
page.
|
214
|
-
page.
|
215
|
-
page.
|
212
|
+
expect(page).to have_content(@collection.title)
|
213
|
+
expect(page).to have_content(@collection.description)
|
214
|
+
expect(page).to_not have_content(@gw1.title)
|
215
|
+
expect(page).to_not have_content(@gw2.title)
|
216
216
|
end
|
217
217
|
end
|
218
218
|
|
@@ -228,11 +228,11 @@ describe 'collection' do
|
|
228
228
|
end
|
229
229
|
|
230
230
|
it "should show a collection with a listing of Descriptive Metadata and catalog-style search results" do
|
231
|
-
page.
|
231
|
+
expect(page).to have_content(@collection.title)
|
232
232
|
within('#document_'+@collection.noid) do
|
233
233
|
click_link("collection title")
|
234
234
|
end
|
235
|
-
page.
|
235
|
+
expect(page).to have_css(".pager")
|
236
236
|
end
|
237
237
|
end
|
238
238
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Worthwhile::CollectionsHelper do
|
4
|
+
describe "#link_to_remove_from_collection" do
|
5
|
+
let(:collection) { double(id: '123') }
|
6
|
+
let(:collectible) { double(id: '456') }
|
7
|
+
before do
|
8
|
+
assign(:collection, collection)
|
9
|
+
end
|
10
|
+
subject { helper.link_to_remove_from_collection(collectible) }
|
11
|
+
|
12
|
+
it "should have a form that routes to remove the collectible" do
|
13
|
+
expect(subject).to have_selector 'a[data-method=put]'
|
14
|
+
expect(subject).to have_link 'Remove From Collection',
|
15
|
+
href: collections.collection_path('123', collection: { members: 'remove'},
|
16
|
+
batch_document_ids: [ '456' ])
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
RSpec::Matchers.define :have_unique_field do |expected_field_name|
|
4
4
|
match do |subject|
|
5
|
-
subject.
|
5
|
+
expect(subject).to respond_to(expected_field_name)
|
6
6
|
field_value = subject.send(expected_field_name)
|
7
7
|
field_value.nil? || !field_value.kind_of?(Array)
|
8
8
|
end
|
@@ -18,8 +18,8 @@ end
|
|
18
18
|
|
19
19
|
RSpec::Matchers.define :have_multivalue_field do |expected_field_name|
|
20
20
|
match do |subject|
|
21
|
-
subject.
|
22
|
-
subject.send(expected_field_name).
|
21
|
+
expect(subject).to respond_to(expected_field_name)
|
22
|
+
expect(subject.send(expected_field_name)).to be_instance_of Array
|
23
23
|
end
|
24
24
|
|
25
25
|
description do
|
@@ -14,41 +14,41 @@ describe Collection do
|
|
14
14
|
it 'can contain another collection' do
|
15
15
|
another_collection = FactoryGirl.create(:collection)
|
16
16
|
subject.members << another_collection
|
17
|
-
subject.members.
|
17
|
+
expect(subject.members).to eq [another_collection]
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'updates solr with pids of its parent collections' do
|
21
21
|
another_collection = FactoryGirl.create(:collection)
|
22
22
|
another_collection.members << subject
|
23
23
|
another_collection.save
|
24
|
-
subject.reload.to_solr[Solrizer.solr_name(:collection)].
|
24
|
+
expect(subject.reload.to_solr[Solrizer.solr_name(:collection)]).to eq [another_collection.pid]
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'cannot contain itself' do
|
28
28
|
subject.members << subject
|
29
29
|
subject.save
|
30
|
-
reloaded_subject.members.
|
30
|
+
expect(reloaded_subject.members).to eq []
|
31
31
|
end
|
32
32
|
|
33
33
|
describe "when visibility is private" do
|
34
34
|
it "should not be open_access?" do
|
35
|
-
subject.
|
35
|
+
expect(subject).to_not be_open_access
|
36
36
|
end
|
37
37
|
it "should not be authenticated_only_access?" do
|
38
|
-
subject.
|
38
|
+
expect(subject).to_not be_authenticated_only_access
|
39
39
|
end
|
40
40
|
it "should not be private_access?" do
|
41
|
-
subject.
|
41
|
+
expect(subject).to be_private_access
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
45
|
describe "visibility" do
|
46
46
|
it "should have visibility accessor" do
|
47
|
-
subject.visibility.
|
47
|
+
expect(subject.visibility).to eq Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PRIVATE
|
48
48
|
end
|
49
49
|
it "should have visibility writer" do
|
50
50
|
subject.visibility = Hydra::AccessControls::AccessRight::VISIBILITY_TEXT_VALUE_PUBLIC
|
51
|
-
subject.
|
51
|
+
expect(subject).to be_open_access
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
@@ -68,19 +68,19 @@ describe Collection do
|
|
68
68
|
|
69
69
|
describe '#human_readable_type' do
|
70
70
|
it "indicates collection" do
|
71
|
-
subject.human_readable_type.
|
71
|
+
expect(subject.human_readable_type).to eq 'Collection'
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
75
75
|
describe '#add_member' do
|
76
76
|
it 'adds the member to the collection and returns true' do
|
77
77
|
work = FactoryGirl.create(:generic_work)
|
78
|
-
subject.add_member(work).
|
79
|
-
reloaded_subject.members.
|
78
|
+
expect(subject.add_member(work)).to be true
|
79
|
+
expect(reloaded_subject.members).to eq [work]
|
80
80
|
|
81
81
|
work.reload
|
82
|
-
work.collections.
|
83
|
-
work.to_solr["collection_sim"].
|
82
|
+
expect(work.collections).to eq [subject]
|
83
|
+
expect(work.to_solr["collection_sim"]).to eq [subject.pid]
|
84
84
|
end
|
85
85
|
|
86
86
|
it 'returns nil if there is nothing to add' do
|
@@ -92,7 +92,7 @@ describe Collection do
|
|
92
92
|
work = FactoryGirl.create(:generic_work)
|
93
93
|
allow(subject).to receive(:save).and_return(false)
|
94
94
|
expect(subject.add_member(work)).to be false
|
95
|
-
reloaded_subject.members.
|
95
|
+
expect(reloaded_subject.members).to eq []
|
96
96
|
end
|
97
97
|
end
|
98
98
|
|
@@ -100,26 +100,26 @@ describe Collection do
|
|
100
100
|
it 'removes the member from the collection and returns true' do
|
101
101
|
work = FactoryGirl.create(:generic_work)
|
102
102
|
subject.members << work
|
103
|
-
subject.members.
|
103
|
+
expect(subject.members).to eq [work]
|
104
104
|
subject.save
|
105
105
|
|
106
106
|
work.reload
|
107
|
-
work.collections.
|
108
|
-
work.to_solr["collection_tesim"].
|
107
|
+
expect(work.collections).to eq [subject]
|
108
|
+
expect(work.to_solr["collection_tesim"]).to eq [subject.pid]
|
109
109
|
solr_doc = ActiveFedora::SolrInstanceLoader.new(ActiveFedora::Base, work.pid).send(:solr_doc)
|
110
|
-
solr_doc["collection_tesim"].
|
110
|
+
expect(solr_doc["collection_tesim"]).to eq [subject.pid]
|
111
111
|
|
112
|
-
subject.members.delete(work).
|
112
|
+
expect(subject.members.delete(work)).to eq [work]
|
113
113
|
subject.save!
|
114
|
-
reloaded_subject.members.
|
114
|
+
expect(reloaded_subject.members).to eq []
|
115
115
|
|
116
116
|
solr_doc = ActiveFedora::SolrInstanceLoader.new(ActiveFedora::Base, work.pid).send(:solr_doc)
|
117
|
-
solr_doc["collection_tesim"].
|
117
|
+
expect(solr_doc["collection_tesim"]).to be_nil
|
118
118
|
|
119
119
|
|
120
120
|
work.reload
|
121
|
-
work.collections.
|
122
|
-
work.to_solr["collection_tesim"].
|
121
|
+
expect(work.collections).to eq []
|
122
|
+
expect(work.to_solr["collection_tesim"]).to eq []
|
123
123
|
end
|
124
124
|
end
|
125
125
|
|
@@ -17,8 +17,8 @@ describe CurationConcern::CollectionModel do
|
|
17
17
|
let(:proposed_collectible) { double(collections: []) }
|
18
18
|
subject { EssentialCollection.new }
|
19
19
|
before(:each) {
|
20
|
-
proposed_collectible.
|
21
|
-
proposed_collectible.
|
20
|
+
allow(proposed_collectible).to receive(:can_be_member_of_collection?).with(subject).and_return(collectible?)
|
21
|
+
allow(proposed_collectible).to receive(:save).and_return(true)
|
22
22
|
}
|
23
23
|
|
24
24
|
context 'with itself' do
|
@@ -9,8 +9,8 @@ module Worthwhile
|
|
9
9
|
let(:raw_version) { double(dsCreateDate: created_on, versionID: version_id) }
|
10
10
|
subject { described_class.new(content, raw_version) }
|
11
11
|
|
12
|
-
before
|
13
|
-
content.
|
12
|
+
before do
|
13
|
+
expect(content).to receive(:version_committer).with(raw_version).and_return(committer_name)
|
14
14
|
end
|
15
15
|
its(:created_on) { should eq(created_on) }
|
16
16
|
its(:committer_name) { should eq(committer_name) }
|
@@ -6,27 +6,27 @@ describe Worthwhile::LinkedResource do
|
|
6
6
|
it { should respond_to(:human_readable_type) }
|
7
7
|
|
8
8
|
it 'has a #human_readable_short_description' do
|
9
|
-
subject.human_readable_short_description.length.
|
9
|
+
expect(subject.human_readable_short_description.length).to_not eq 0
|
10
10
|
end
|
11
11
|
|
12
12
|
it 'has a .human_readable_short_description' do
|
13
|
-
subject.class.human_readable_short_description.length.
|
13
|
+
expect(subject.class.human_readable_short_description.length).to_not eq 0
|
14
14
|
end
|
15
15
|
|
16
16
|
it 'uses #noid for #to_param' do
|
17
|
-
subject.
|
18
|
-
subject.to_param.
|
17
|
+
allow(subject).to receive(:persisted?).and_return(true)
|
18
|
+
expect(subject.to_param).to eq subject.noid
|
19
19
|
end
|
20
20
|
|
21
21
|
it 'has no url to display' do
|
22
|
-
subject.to_s.
|
22
|
+
expect(subject.to_s).to eq nil
|
23
23
|
end
|
24
24
|
|
25
25
|
describe "validating" do
|
26
26
|
subject {Worthwhile::LinkedResource.new}
|
27
27
|
it "should not validate and have an error" do
|
28
|
-
subject.
|
29
|
-
subject.errors[:url].
|
28
|
+
expect(subject).to_not be_valid
|
29
|
+
expect(subject.errors[:url]).to eq ["can't be blank"]
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
@@ -34,7 +34,7 @@ describe Worthwhile::LinkedResource do
|
|
34
34
|
context "javascript uri" do
|
35
35
|
subject { FactoryGirl.build(:linked_resource, url: "javascript:void(alert('Hello'));") }
|
36
36
|
it "should be cleared" do
|
37
|
-
subject.url.
|
37
|
+
expect(subject.url).to be_nil
|
38
38
|
end
|
39
39
|
end
|
40
40
|
context "http uri" do
|
@@ -2,13 +2,12 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
module Worthwhile
|
4
4
|
describe "routing" do
|
5
|
-
|
6
5
|
|
7
6
|
describe "Classify concerns" do
|
8
7
|
routes { Worthwhile::Engine.routes }
|
9
8
|
it "routes to #new" do
|
10
9
|
expect(new_classify_concern_path).to eq '/classify_concerns/new'
|
11
|
-
get("/classify_concerns/new").
|
10
|
+
expect(get("/classify_concerns/new")).to route_to("worthwhile/classify_concerns#new")
|
12
11
|
end
|
13
12
|
end
|
14
13
|
|
@@ -16,7 +15,7 @@ module Worthwhile
|
|
16
15
|
routes { Rails.application.routes }
|
17
16
|
it 'routes to #new' do
|
18
17
|
expect(new_curation_concern_generic_work_path).to eq '/concern/generic_works/new'
|
19
|
-
get("/concern/generic_works/new").
|
18
|
+
expect(get("/concern/generic_works/new")).to route_to("curation_concern/generic_works#new")
|
20
19
|
end
|
21
20
|
end
|
22
21
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -15,22 +15,15 @@ require 'capybara/rspec'
|
|
15
15
|
require 'capybara/rails'
|
16
16
|
|
17
17
|
|
18
|
-
if ENV['COVERAGE']
|
18
|
+
if ENV['COVERAGE'] || ENV['CI']
|
19
19
|
require 'simplecov'
|
20
|
+
require 'coveralls'
|
20
21
|
|
21
22
|
ENGINE_ROOT = File.expand_path('../..', __FILE__)
|
22
|
-
|
23
|
-
|
24
|
-
# After all that was where Rails was pointed at.
|
25
|
-
SimpleCov.root(ENGINE_ROOT)
|
26
|
-
SimpleCov.start 'rails' do
|
27
|
-
filters.clear
|
28
|
-
add_filter do |src|
|
29
|
-
src.filename !~ /^#{ENGINE_ROOT}/
|
30
|
-
end
|
23
|
+
SimpleCov.formatter = Coveralls::SimpleCov::Formatter if ENV["CI"]
|
24
|
+
SimpleCov.start do
|
31
25
|
add_filter '/spec/'
|
32
26
|
end
|
33
|
-
SimpleCov.command_name "spec"
|
34
27
|
end
|
35
28
|
|
36
29
|
require 'worthwhile'
|
@@ -59,6 +52,7 @@ RSpec.configure do |config|
|
|
59
52
|
DatabaseCleaner.clean
|
60
53
|
end
|
61
54
|
|
55
|
+
config.include FactoryGirl::Syntax::Methods
|
62
56
|
config.include Devise::TestHelpers, type: :controller
|
63
57
|
config.include Devise::TestHelpers, type: :view
|
64
58
|
config.include Warden::Test::Helpers, type: :feature
|