blacklight-spotlight 0.12.1 → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/spotlight/_exhibits_index.scss +16 -0
- data/app/assets/stylesheets/spotlight/_nestable.scss +10 -10
- data/app/controllers/spotlight/catalog_controller.rb +10 -7
- data/app/controllers/spotlight/concerns/catalog_search_context.rb +15 -2
- data/app/controllers/spotlight/exhibits_controller.rb +1 -0
- data/app/helpers/spotlight/application_helper.rb +1 -1
- data/app/models/concerns/spotlight/solr_document.rb +20 -20
- data/app/models/concerns/spotlight/user.rb +1 -0
- data/app/models/spotlight/blacklight_configuration.rb +10 -4
- data/app/models/spotlight/custom_field.rb +5 -1
- data/app/models/spotlight/exhibit.rb +1 -1
- data/app/models/spotlight/resource.rb +1 -1
- data/app/models/spotlight/search.rb +1 -1
- data/app/models/spotlight/solr_document_sidecar.rb +1 -1
- data/app/views/layouts/spotlight/spotlight.html.erb +1 -1
- data/app/views/spotlight/exhibits/_exhibit_card.html.erb +3 -0
- data/app/views/spotlight/exhibits/index.html.erb +40 -15
- data/config/locales/spotlight.en.yml +4 -1
- data/lib/spotlight/catalog.rb +14 -11
- data/lib/spotlight/catalog/access_controls_enforcement.rb +2 -1
- data/lib/spotlight/engine.rb +5 -0
- data/lib/spotlight/version.rb +1 -1
- data/spec/controllers/spotlight/about_pages_controller_spec.rb +1 -1
- data/spec/controllers/spotlight/appearances_controller_spec.rb +10 -8
- data/spec/controllers/spotlight/browse_controller_spec.rb +3 -3
- data/spec/controllers/spotlight/catalog_controller_spec.rb +88 -7
- data/spec/controllers/spotlight/confirmations_controller_spec.rb +7 -4
- data/spec/controllers/spotlight/contact_forms_controller_spec.rb +1 -1
- data/spec/controllers/spotlight/exhibits_controller_spec.rb +25 -21
- data/spec/controllers/spotlight/home_pages_controller_spec.rb +23 -24
- data/spec/controllers/spotlight/metadata_configurations_controller_spec.rb +17 -13
- data/spec/controllers/spotlight/resources/upload_controller_spec.rb +1 -1
- data/spec/controllers/spotlight/resources_controller_spec.rb +3 -3
- data/spec/controllers/spotlight/roles_controller_spec.rb +5 -3
- data/spec/controllers/spotlight/search_configurations_controller_spec.rb +10 -8
- data/spec/controllers/spotlight/searches_controller_spec.rb +12 -8
- data/spec/controllers/spotlight/solr_controller_spec.rb +34 -29
- data/spec/controllers/spotlight/versions_controller_spec.rb +2 -2
- data/spec/controllers/spotlight/view_configurations_controller_spec.rb +7 -5
- data/spec/helpers/spotlight/application_helper_spec.rb +1 -1
- data/spec/helpers/spotlight/pages_helper_spec.rb +2 -2
- data/spec/models/solr_document_spec.rb +5 -5
- data/spec/models/spotlight/custom_field_spec.rb +8 -9
- data/spec/models/spotlight/resources/open_graph_spec.rb +1 -1
- data/spec/models/spotlight/search_spec.rb +10 -0
- data/spec/models/spotlight/sitemap_spec.rb +1 -1
- data/spec/models/spotlight/solr_document/atomic_updates_spec.rb +1 -1
- data/spec/models/spotlight/solr_document/uploaded_resource_spec.rb +6 -6
- data/spec/views/spotlight/exhibits/index.html.erb_spec.rb +35 -6
- data/spec/views/spotlight/sir_trevor/blocks/_solr_documents_block.html.erb_spec.rb +1 -1
- data/spec/views/spotlight/sir_trevor/blocks/_solr_documents_carousel_block.html.erb_spec.rb +5 -1
- data/spec/views/spotlight/sir_trevor/blocks/_solr_documents_embed_block.html.erb_spec.rb +1 -1
- data/spec/views/spotlight/sir_trevor/blocks/_solr_documents_features_block.html.erb_spec.rb +3 -3
- data/spec/views/spotlight/sir_trevor/blocks/_solr_documents_grid_block.html.erb_spec.rb +5 -1
- metadata +2 -5
- data/app/views/shared/_flash_messages.html.erb +0 -7
- data/app/views/spotlight/exhibits/_exhibit_list.html.erb +0 -3
- data/db/migrate/20151210073829_create_spotlight_configuration.rb +0 -7
@@ -311,7 +311,9 @@ en:
|
|
311
311
|
exhibits:
|
312
312
|
breadcrumb: Home
|
313
313
|
index:
|
314
|
-
|
314
|
+
published: Published exhibits
|
315
|
+
user: Your exhibits
|
316
|
+
unpublished: Unpublished exhibits
|
315
317
|
delete:
|
316
318
|
heading: Delete exhibit
|
317
319
|
warning_html: >
|
@@ -337,6 +339,7 @@ en:
|
|
337
339
|
label: URL slug
|
338
340
|
help_block: A hyphenated name to be displayed in the URL for the exhibit (e.g., "maps-of-africa").
|
339
341
|
exhibit_card:
|
342
|
+
unpublished: Unpublished
|
340
343
|
visit_exhibit: "Visit exhibit"
|
341
344
|
new:
|
342
345
|
header: Create a new exhibit
|
data/lib/spotlight/catalog.rb
CHANGED
@@ -11,17 +11,20 @@ module Spotlight
|
|
11
11
|
include Spotlight::Catalog::AccessControlsEnforcement
|
12
12
|
|
13
13
|
included do
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
14
|
+
before_action :add_facet_visibility_field
|
15
|
+
end
|
16
|
+
|
17
|
+
# Adds a facet to display document visibility for the current exhibit
|
18
|
+
# if the user is a curator
|
19
|
+
def add_facet_visibility_field
|
20
|
+
return unless current_exhibit && can?(:curate, current_exhibit)
|
21
|
+
blacklight_config.add_facet_field 'exhibit_visibility',
|
22
|
+
label: I18n.t(:'spotlight.catalog.facets.exhibit_visibility.label'),
|
23
|
+
query: {
|
24
|
+
private: {
|
25
|
+
label: I18n.t(:'spotlight.catalog.facets.exhibit_visibility.private'),
|
26
|
+
fq: "#{blacklight_config.document_model.visibility_field(current_exhibit)}:false" }
|
27
|
+
}
|
25
28
|
end
|
26
29
|
end
|
27
30
|
end
|
@@ -18,11 +18,12 @@ module Spotlight
|
|
18
18
|
self.default_processor_chain += [:apply_permissive_visibility_filter, :apply_exhibit_resources_filter]
|
19
19
|
end
|
20
20
|
|
21
|
+
# Adds a filter that excludes resources that have been marked as not-visible
|
21
22
|
def apply_permissive_visibility_filter(solr_params)
|
22
23
|
return unless current_exhibit
|
23
24
|
return if scope.respond_to?(:can?) && scope.can?(:curate, current_exhibit) && !blacklight_params[:public]
|
24
25
|
|
25
|
-
solr_params.append_filter_query "-#{
|
26
|
+
solr_params.append_filter_query "-#{blacklight_config.document_model.visibility_field(current_exhibit)}:false"
|
26
27
|
end
|
27
28
|
|
28
29
|
def apply_exhibit_resources_filter(solr_params)
|
data/lib/spotlight/engine.rb
CHANGED
@@ -83,6 +83,11 @@ module Spotlight
|
|
83
83
|
Spotlight::Engine.config.solr_fields.string_suffix = '_ssim'.freeze
|
84
84
|
Spotlight::Engine.config.solr_fields.text_suffix = '_tesim'.freeze
|
85
85
|
|
86
|
+
# A lambda expression that filters the solr index per exhibit
|
87
|
+
config.exhibit_filter = lambda do |exhibit|
|
88
|
+
{ :"#{config.solr_fields.prefix}spotlight_exhibit_slug_#{exhibit.slug}#{config.solr_fields.boolean_suffix}" => true }
|
89
|
+
end
|
90
|
+
|
86
91
|
Spotlight::Engine.config.resource_global_id_field = :"#{config.solr_fields.prefix}spotlight_resource_id#{config.solr_fields.string_suffix}"
|
87
92
|
|
88
93
|
# The solr field that original (largest) images will be stored.
|
data/lib/spotlight/version.rb
CHANGED
@@ -9,7 +9,7 @@ describe Spotlight::AboutPagesController, type: :controller do
|
|
9
9
|
describe 'when not logged in' do
|
10
10
|
describe 'POST update_all' do
|
11
11
|
let(:exhibit) { FactoryGirl.create(:exhibit) }
|
12
|
-
it '
|
12
|
+
it 'is not allowed' do
|
13
13
|
post :update_all, exhibit_id: exhibit
|
14
14
|
expect(response).to redirect_to main_app.new_user_session_path
|
15
15
|
end
|
@@ -8,16 +8,18 @@ describe Spotlight::AppearancesController, type: :controller do
|
|
8
8
|
sign_in FactoryGirl.create(:exhibit_visitor)
|
9
9
|
end
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
describe 'GET edit' do
|
12
|
+
it 'denies access' do
|
13
|
+
get :edit, exhibit_id: exhibit
|
14
|
+
expect(response).to redirect_to main_app.root_path
|
15
|
+
expect(flash[:alert]).to be_present
|
16
|
+
end
|
15
17
|
end
|
16
18
|
end
|
17
19
|
|
18
20
|
describe 'when not logged in' do
|
19
|
-
describe '
|
20
|
-
it '
|
21
|
+
describe 'PATCH update' do
|
22
|
+
it 'is not allowed' do
|
21
23
|
patch :update, exhibit_id: exhibit
|
22
24
|
expect(response).to redirect_to main_app.new_user_session_path
|
23
25
|
end
|
@@ -28,7 +30,7 @@ describe Spotlight::AppearancesController, type: :controller do
|
|
28
30
|
let(:user) { FactoryGirl.create(:exhibit_admin, exhibit: exhibit) }
|
29
31
|
before { sign_in user }
|
30
32
|
|
31
|
-
describe '
|
33
|
+
describe 'GET edit' do
|
32
34
|
it 'is successful' do
|
33
35
|
expect(controller).to receive(:add_breadcrumb).with('Home', exhibit)
|
34
36
|
expect(controller).to receive(:add_breadcrumb).with('Configuration', exhibit_dashboard_path(exhibit))
|
@@ -39,7 +41,7 @@ describe Spotlight::AppearancesController, type: :controller do
|
|
39
41
|
end
|
40
42
|
end
|
41
43
|
|
42
|
-
describe '
|
44
|
+
describe 'PATCH update' do
|
43
45
|
it 'updates the navigation' do
|
44
46
|
first_nav = exhibit.main_navigations.first
|
45
47
|
last_nav = exhibit.main_navigations.last
|
@@ -11,7 +11,7 @@ describe Spotlight::BrowseController, type: :controller do
|
|
11
11
|
|
12
12
|
describe 'when authenticated as an admin' do
|
13
13
|
before { sign_in admin }
|
14
|
-
describe '
|
14
|
+
describe 'GET index' do
|
15
15
|
it 'does not show unpublished categories' do
|
16
16
|
expect(controller).to receive(:add_breadcrumb).with('Home', exhibit)
|
17
17
|
expect(controller).to receive(:add_breadcrumb).with('Browse', exhibit_browse_index_path(exhibit))
|
@@ -26,7 +26,7 @@ describe Spotlight::BrowseController, type: :controller do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
describe 'when unauthenticated' do
|
29
|
-
describe '
|
29
|
+
describe 'GET index' do
|
30
30
|
it 'shows the list of browse categories' do
|
31
31
|
expect(controller).to receive(:add_breadcrumb).with('Home', exhibit)
|
32
32
|
expect(controller).to receive(:add_breadcrumb).with('Browse', exhibit_browse_index_path(exhibit))
|
@@ -39,7 +39,7 @@ describe Spotlight::BrowseController, type: :controller do
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
-
describe '
|
42
|
+
describe 'GET show' do
|
43
43
|
let(:mock_response) { double }
|
44
44
|
let(:document_list) { double }
|
45
45
|
before do
|
@@ -17,7 +17,7 @@ describe Spotlight::CatalogController, type: :controller do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
describe 'GET edit' do
|
20
|
-
it '
|
20
|
+
it 'is not allowed' do
|
21
21
|
get :edit, exhibit_id: exhibit, id: 'dq287tq6352'
|
22
22
|
expect(response).to redirect_to main_app.new_user_session_path
|
23
23
|
end
|
@@ -135,7 +135,7 @@ describe Spotlight::CatalogController, type: :controller do
|
|
135
135
|
end
|
136
136
|
|
137
137
|
describe 'GET edit' do
|
138
|
-
it '
|
138
|
+
it 'is not allowed' do
|
139
139
|
get :edit, exhibit_id: exhibit, id: 'dq287tq6352'
|
140
140
|
expect(response).to redirect_to main_app.root_path
|
141
141
|
expect(flash[:alert]).to eq 'You are not authorized to access this page.'
|
@@ -143,7 +143,7 @@ describe Spotlight::CatalogController, type: :controller do
|
|
143
143
|
end
|
144
144
|
|
145
145
|
describe 'GET show with private item' do
|
146
|
-
it '
|
146
|
+
it 'is not allowed' do
|
147
147
|
allow_any_instance_of(::SolrDocument).to receive(:private?).and_return(true)
|
148
148
|
get :show, exhibit_id: exhibit, id: 'dq287tq6352'
|
149
149
|
expect(response).to redirect_to main_app.root_path
|
@@ -152,7 +152,7 @@ describe Spotlight::CatalogController, type: :controller do
|
|
152
152
|
end
|
153
153
|
|
154
154
|
describe 'PUT make_public' do
|
155
|
-
it '
|
155
|
+
it 'is not allowed' do
|
156
156
|
put :make_public, exhibit_id: exhibit, catalog_id: 'dq287tq6352'
|
157
157
|
expect(response).to redirect_to main_app.root_path
|
158
158
|
expect(flash[:alert]).to eq 'You are not authorized to access this page.'
|
@@ -160,7 +160,7 @@ describe Spotlight::CatalogController, type: :controller do
|
|
160
160
|
end
|
161
161
|
|
162
162
|
describe 'DELETE make_private' do
|
163
|
-
it '
|
163
|
+
it 'is not allowed' do
|
164
164
|
delete :make_private, exhibit_id: exhibit, catalog_id: 'dq287tq6352'
|
165
165
|
expect(response).to redirect_to main_app.root_path
|
166
166
|
expect(flash[:alert]).to eq 'You are not authorized to access this page.'
|
@@ -249,14 +249,14 @@ describe Spotlight::CatalogController, type: :controller do
|
|
249
249
|
describe 'when the user is a site admin' do
|
250
250
|
before { sign_in FactoryGirl.create(:site_admin, exhibit: exhibit) }
|
251
251
|
|
252
|
-
describe 'show' do
|
252
|
+
describe 'GET show' do
|
253
253
|
it 'has a solr_json serialization' do
|
254
254
|
get :show, exhibit_id: exhibit, id: 'dq287tq6352', format: :solr_json
|
255
255
|
expect(response).to be_successful
|
256
256
|
data = JSON.parse(response.body).with_indifferent_access
|
257
257
|
expect(data).to include id: 'dq287tq6352'
|
258
258
|
expect(data).to include exhibit.solr_data
|
259
|
-
expect(data).to include
|
259
|
+
expect(data).to include ::SolrDocument.solr_field_for_tagger(exhibit)
|
260
260
|
end
|
261
261
|
end
|
262
262
|
end
|
@@ -292,4 +292,85 @@ describe Spotlight::CatalogController, type: :controller do
|
|
292
292
|
end
|
293
293
|
end
|
294
294
|
end
|
295
|
+
|
296
|
+
describe 'next and previous documents' do
|
297
|
+
before do
|
298
|
+
exhibit.searches.first.update(published: true)
|
299
|
+
allow(controller).to receive(:current_search_session).and_return(search)
|
300
|
+
allow(controller).to receive(:search_session).and_return(search_session)
|
301
|
+
end
|
302
|
+
|
303
|
+
let(:search_session) { { 'counter' => 2 } }
|
304
|
+
|
305
|
+
let(:response) { double(total: 5, documents: [first_doc, nil, last_doc]) }
|
306
|
+
let(:first_doc) { double }
|
307
|
+
let(:last_doc) { double }
|
308
|
+
|
309
|
+
context 'when arriving from a browse page' do
|
310
|
+
let(:search) do
|
311
|
+
Search.new(query_params: { action: 'show', controller: 'spotlight/browse', id: exhibit.searches.first.id }.with_indifferent_access)
|
312
|
+
end
|
313
|
+
|
314
|
+
context 'when published' do
|
315
|
+
before do
|
316
|
+
exhibit.searches.first.update(published: true)
|
317
|
+
allow(controller).to receive(:get_previous_and_next_documents_for_search).with(1, exhibit.searches.first.query_params).and_return(response)
|
318
|
+
end
|
319
|
+
|
320
|
+
it 'uses the saved search context' do
|
321
|
+
get :show, exhibit_id: exhibit, id: 'dq287tq6352'
|
322
|
+
|
323
|
+
expect(assigns(:previous_document)).to eq first_doc
|
324
|
+
expect(assigns(:next_document)).to eq last_doc
|
325
|
+
end
|
326
|
+
end
|
327
|
+
|
328
|
+
context 'when arriving from a private browse page' do
|
329
|
+
before do
|
330
|
+
exhibit.searches.first.update(published: false)
|
331
|
+
end
|
332
|
+
|
333
|
+
it 'ignores the search context' do
|
334
|
+
get :show, exhibit_id: exhibit, id: 'dq287tq6352'
|
335
|
+
|
336
|
+
expect(assigns(:previous_document)).to be_nil
|
337
|
+
expect(assigns(:next_document)).to be_nil
|
338
|
+
end
|
339
|
+
end
|
340
|
+
end
|
341
|
+
|
342
|
+
context 'when arriving from a feature page' do
|
343
|
+
let(:page) { FactoryGirl.create(:feature_page, exhibit: exhibit) }
|
344
|
+
let(:search) do
|
345
|
+
Search.new(query_params: { action: 'show', controller: 'spotlight/feature_pages', id: page.id }.with_indifferent_access)
|
346
|
+
end
|
347
|
+
|
348
|
+
context 'when published' do
|
349
|
+
before do
|
350
|
+
page.update(published: true)
|
351
|
+
end
|
352
|
+
|
353
|
+
it 'uses the page context' do
|
354
|
+
pending 'Waiting to figure out how to construct previous/next documents'
|
355
|
+
get :show, exhibit_id: exhibit, id: 'dq287tq6352'
|
356
|
+
|
357
|
+
expect(assigns(:previous_document)).to be_a_kind_of SolrDocument
|
358
|
+
expect(assigns(:next_document)).to be_a_kind_of SolrDocument
|
359
|
+
end
|
360
|
+
end
|
361
|
+
|
362
|
+
context 'when unpublished' do
|
363
|
+
before do
|
364
|
+
page.update(published: false)
|
365
|
+
end
|
366
|
+
|
367
|
+
it 'ignores the search context' do
|
368
|
+
get :show, exhibit_id: exhibit, id: 'dq287tq6352'
|
369
|
+
|
370
|
+
expect(assigns(:previous_document)).to be_nil
|
371
|
+
expect(assigns(:next_document)).to be_nil
|
372
|
+
end
|
373
|
+
end
|
374
|
+
end
|
375
|
+
end
|
295
376
|
end
|
@@ -7,12 +7,15 @@ describe Spotlight::ConfirmationsController, type: :controller do
|
|
7
7
|
@request.env['devise.mapping'] = Devise.mappings[:contact_email]
|
8
8
|
# rubocop:enable RSpec/InstanceVariable
|
9
9
|
end
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
|
11
|
+
describe 'GET new' do
|
12
|
+
it 'exists' do
|
13
|
+
get :new
|
14
|
+
expect(response).to be_successful
|
15
|
+
end
|
13
16
|
end
|
14
17
|
|
15
|
-
describe '
|
18
|
+
describe 'GET show' do
|
16
19
|
let(:exhibit) { FactoryGirl.create(:exhibit) }
|
17
20
|
let(:contact_email) { Spotlight::ContactEmail.create!(email: 'justin@example.com', exhibit: exhibit) }
|
18
21
|
let(:raw_token) { contact_email.instance_variable_get(:@raw_confirmation_token) }
|
@@ -15,7 +15,7 @@ describe Spotlight::ContactFormsController, type: :controller do
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
18
|
-
describe '
|
18
|
+
describe 'POST create' do
|
19
19
|
it 'redirects back' do
|
20
20
|
post :create, exhibit_id: exhibit.id, contact_form: { name: 'Joe Doe', email: 'jdoe@example.com' }
|
21
21
|
expect(response).to redirect_to :back
|
@@ -13,51 +13,53 @@ describe Spotlight::ExhibitsController, type: :controller do
|
|
13
13
|
sign_in FactoryGirl.create(:exhibit_visitor)
|
14
14
|
end
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
describe 'GET edit' do
|
17
|
+
it 'denies access' do
|
18
|
+
get :edit, id: exhibit
|
19
|
+
expect(response).to redirect_to main_app.root_path
|
20
|
+
expect(flash[:alert]).to be_present
|
21
|
+
end
|
20
22
|
end
|
21
23
|
end
|
22
24
|
|
23
25
|
describe 'when not logged in' do
|
24
|
-
describe '
|
26
|
+
describe 'GET index' do
|
25
27
|
it 'is allowed' do
|
26
28
|
get :index
|
27
29
|
expect(response).to be_success
|
28
30
|
end
|
29
31
|
end
|
30
32
|
|
31
|
-
describe '
|
32
|
-
it '
|
33
|
+
describe 'GET new' do
|
34
|
+
it 'is not allowed' do
|
33
35
|
get :new, id: exhibit
|
34
36
|
expect(response).to redirect_to main_app.new_user_session_path
|
35
37
|
end
|
36
38
|
end
|
37
39
|
|
38
|
-
describe '
|
39
|
-
it '
|
40
|
+
describe 'GET edit' do
|
41
|
+
it 'is not allowed' do
|
40
42
|
get :edit, id: exhibit
|
41
43
|
expect(response).to redirect_to main_app.new_user_session_path
|
42
44
|
end
|
43
45
|
end
|
44
46
|
|
45
|
-
describe '
|
46
|
-
it '
|
47
|
+
describe 'PATCH update' do
|
48
|
+
it 'is not allowed' do
|
47
49
|
patch :update, id: exhibit
|
48
50
|
expect(response).to redirect_to main_app.new_user_session_path
|
49
51
|
end
|
50
52
|
end
|
51
53
|
|
52
|
-
describe '
|
53
|
-
it '
|
54
|
+
describe 'PATCH process_import' do
|
55
|
+
it 'is not allowed' do
|
54
56
|
patch :process_import, id: exhibit
|
55
57
|
expect(response).to redirect_to main_app.new_user_session_path
|
56
58
|
end
|
57
59
|
end
|
58
60
|
|
59
|
-
describe '
|
60
|
-
it '
|
61
|
+
describe 'DELETE destroy' do
|
62
|
+
it 'is not allowed' do
|
61
63
|
delete :destroy, id: exhibit
|
62
64
|
expect(response).to redirect_to main_app.new_user_session_path
|
63
65
|
end
|
@@ -68,14 +70,14 @@ describe Spotlight::ExhibitsController, type: :controller do
|
|
68
70
|
let(:user) { FactoryGirl.create(:site_admin) }
|
69
71
|
before { sign_in user }
|
70
72
|
|
71
|
-
describe '
|
73
|
+
describe 'GET new' do
|
72
74
|
it 'is successful' do
|
73
75
|
get :new
|
74
76
|
expect(response).to be_successful
|
75
77
|
end
|
76
78
|
end
|
77
79
|
|
78
|
-
describe '
|
80
|
+
describe 'POST create' do
|
79
81
|
before do
|
80
82
|
# decouple this test from needing solr running
|
81
83
|
allow_any_instance_of(Spotlight::Search).to receive(:set_default_featured_image)
|
@@ -91,6 +93,8 @@ describe Spotlight::ExhibitsController, type: :controller do
|
|
91
93
|
|
92
94
|
expect(exhibit.title).to eq 'Some Title'
|
93
95
|
expect(exhibit.slug).to eq 'custom-slug'
|
96
|
+
|
97
|
+
expect(user.exhibits).to include exhibit
|
94
98
|
end
|
95
99
|
end
|
96
100
|
end
|
@@ -99,14 +103,14 @@ describe Spotlight::ExhibitsController, type: :controller do
|
|
99
103
|
let(:user) { FactoryGirl.create(:exhibit_admin, exhibit: exhibit) }
|
100
104
|
before { sign_in user }
|
101
105
|
|
102
|
-
describe '
|
103
|
-
it '
|
106
|
+
describe 'GET new' do
|
107
|
+
it 'is not allowed' do
|
104
108
|
get :new
|
105
109
|
expect(response).to_not be_successful
|
106
110
|
end
|
107
111
|
end
|
108
112
|
|
109
|
-
describe '
|
113
|
+
describe 'PATCH process_import' do
|
110
114
|
it 'is successful' do
|
111
115
|
expect_any_instance_of(Spotlight::Exhibit).to receive(:reindex_later).and_return(true)
|
112
116
|
f = Tempfile.new('foo')
|
@@ -127,7 +131,7 @@ describe Spotlight::ExhibitsController, type: :controller do
|
|
127
131
|
end
|
128
132
|
end
|
129
133
|
|
130
|
-
describe '
|
134
|
+
describe 'GET edit' do
|
131
135
|
it 'is successful' do
|
132
136
|
expect(controller).to receive(:add_breadcrumb).with('Home', exhibit)
|
133
137
|
expect(controller).to receive(:add_breadcrumb).with('Configuration', exhibit_dashboard_path(exhibit))
|