hydra-collections 3.0.0.beta2 → 3.0.0.beta3

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.
@@ -1,8 +1,12 @@
1
+ require 'blacklight/catalog'
2
+
1
3
  module Hydra::Collections::SelectsCollections
4
+
5
+ extend ActiveSupport::Autoload
2
6
  extend ActiveSupport::Concern
3
7
 
4
8
  def access_levels
5
- { read: [:read, :edit], edit: [:edit] }
9
+ {read:[:read,:edit],edit:[:edit]}
6
10
  end
7
11
 
8
12
  # add one of the following methods as a before filter on any page that shows the form_for_select_collection
@@ -28,10 +32,11 @@ module Hydra::Collections::SelectsCollections
28
32
 
29
33
  # temporarily set solr_search_params_logic to collection_search_params_logic
30
34
  orig_solr_search_params_logic = self.class.solr_search_params_logic
35
+ # self.class.solr_search_params_logic += [:add_collection_filter]
31
36
  self.class.solr_search_params_logic = collection_search_params_logic
32
37
  logger.debug "Collection Search logic: "+ self.class.solr_search_params_logic.inspect
33
38
  # run the solr query to find the collections
34
- (resp, doc_list) = get_search_results({q: ''}, {rows: 100})
39
+ (resp, doc_list) = get_search_results({:q => ''}, {:rows=>100})
35
40
 
36
41
  #reset to original solr logic
37
42
  self.class.send(:define_method, "discovery_permissions") { original_permissions } unless access_level.blank?
@@ -43,7 +48,7 @@ module Hydra::Collections::SelectsCollections
43
48
 
44
49
  def add_collection_filter(solr_parameters, user_parameters)
45
50
  solr_parameters[:fq] ||= []
46
- solr_parameters[:fq] << "#{Solrizer.solr_name("has_model", :symbol)}:Collection"
51
+ solr_parameters[:fq] << "#{Solrizer.solr_name("has_model", :symbol)}:\"info:fedora/afmodel:Collection\""
47
52
  end
48
53
 
49
54
  # Defines which solr_search_params_logic should be used when searching for Collections
@@ -1,3 +1,18 @@
1
+ # Copyright © 2012 The Pennsylvania State University
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ # -*- encoding : utf-8 -*-
1
16
  module Hydra
2
17
  module Collections
3
18
  module SolrDocumentBehavior
@@ -1,5 +1,5 @@
1
1
  module Hydra
2
2
  module Collections
3
- VERSION = "3.0.0.beta2"
3
+ VERSION = "3.0.0.beta3"
4
4
  end
5
5
  end
@@ -1,26 +1,40 @@
1
+ # Copyright © 2012 The Pennsylvania State University
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
1
15
  require 'spec_helper'
2
16
 
3
17
  include Rails.application.routes.url_helpers
4
18
 
5
19
  describe CatalogController, :type => :controller do
6
-
7
20
  before do
8
21
  allow(controller).to receive(:has_access?).and_return(true)
9
22
  @user = FactoryGirl.find_or_create(:user)
10
- @collection = Collection.new title: "Test"
23
+ @collection = Collection.new title:"Test"
11
24
  @collection.apply_depositor_metadata(@user.user_key)
12
25
  @collection.read_groups = ["public"]
13
- @collection.save!
26
+ @collection.save
14
27
  end
15
28
 
16
29
  after do
17
- @collection.destroy
30
+ @user.delete
31
+ @collection.delete
18
32
  end
19
33
 
20
- routes { Rails.application.routes }
21
34
 
22
35
  describe '#index' do
23
36
  it 'should assign @user_collections' do
37
+ @routes = Rails.application.routes
24
38
  get :index
25
39
  expect(assigns(:user_collections)).to be_kind_of(Array)
26
40
  expect(assigns(:user_collections).index{|d| d.id == @collection.id}).not_to be_nil
@@ -1,42 +1,33 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe CollectionsController, :type => :controller do
4
- let(:collections) { Hydra::Collections::Engine.routes.url_helpers }
5
-
6
4
  before(:all) do
7
5
  CollectionsController.configure_blacklight do |config|
8
6
  config.default_solr_params = {:qf => 'label_tesim'}
9
7
  end
10
8
 
9
+ @user = FactoryGirl.find_or_create(:user)
10
+
11
11
  class GenericFile < ActiveFedora::Base
12
12
  include Hydra::Collections::Collectible
13
13
 
14
- property :title, predicate: ::RDF::DC.title
15
-
16
- # Hack until https://github.com/no-reply/ActiveTriples/pull/37 is merged
17
- def title_with_first
18
- title_without_first.first
19
- end
20
- alias_method_chain :title, :first
21
-
22
- # use this until https://github.com/projecthydra/active_fedora/issues/457 is resolved
23
- def to_param
24
- id
25
- end
26
14
 
15
+ attr_accessor :title
27
16
  def to_solr(solr_doc={})
28
- super.tap do |solr_doc|
29
- solr_doc = index_collection_ids(solr_doc)
30
- solr_doc["label_tesim"] = self.title
31
- end
17
+ super
18
+ solr_doc = index_collection_pids(solr_doc)
19
+ solr_doc["label_tesim"] = self.title
20
+ solr_doc
32
21
  end
33
22
  end
34
23
  end
35
-
36
24
  after(:all) do
25
+ @user.destroy
26
+ GenericFile.destroy_all
27
+ Collection.destroy_all
37
28
  Object.send(:remove_const, :GenericFile)
38
29
  end
39
-
30
+
40
31
  before do
41
32
  allow(controller).to receive(:has_access?).and_return(true)
42
33
 
@@ -51,17 +42,22 @@ describe CollectionsController, :type => :controller do
51
42
  get :new
52
43
  expect(assigns(:collection)).to be_kind_of(Collection)
53
44
  end
45
+ it "should pass through batch ids if provided and stick them in the form" do
46
+ skip "Couldn't get have_selector working before I had to move on. - MZ"
47
+ get :new, batch_document_ids: ["test2", "test88"]
48
+ expect(response).to have_selector("p[class='foo']")
49
+ end
54
50
  end
55
-
51
+
56
52
  describe '#create' do
57
53
  it "should create a Collection" do
58
- expect {
59
- post :create, collection: {title: "My First Collection ", description: "The Description\r\n\r\nand more"}
60
- }.to change { Collection.count }.by(1)
54
+ old_count = Collection.count
55
+ post :create, collection: {title: "My First Collection ", description: "The Description\r\n\r\nand more"}
56
+ expect(Collection.count).to eq(old_count+1)
61
57
  expect(assigns[:collection].title).to eq("My First Collection ")
62
58
  expect(assigns[:collection].description).to eq("The Description\r\n\r\nand more")
63
59
  expect(assigns[:collection].depositor).to eq(@user.user_key)
64
- expect(response).to redirect_to collections.collection_path(assigns[:collection])
60
+ expect(response).to redirect_to Hydra::Collections::Engine.routes.url_helpers.collection_path(assigns[:collection].id)
65
61
  end
66
62
  it "should add docs to collection if batch ids provided" do
67
63
  @asset1 = ActiveFedora::Base.create!
@@ -77,12 +73,12 @@ describe CollectionsController, :type => :controller do
77
73
  it "should add one doc to collection if batch ids provided and add the collection id to the document in the colledction" do
78
74
  @asset1 = GenericFile.create!
79
75
  post :create, batch_document_ids: [@asset1], collection: {title: "My Secong Collection ", description: "The Description\r\n\r\nand more"}
80
- expect(assigns[:collection].members).to eq [@asset1]
81
- asset_results = blacklight_solr.get "select", params:{fq:["id:\"#{@asset1.id}\""],fl:['id',Solrizer.solr_name(:collection)]}
76
+ expect(assigns[:collection].members).to eq([@asset1])
77
+ asset_results = blacklight_solr.get "select", params:{fq:["id:\"#{@asset1.pid}\""],fl:['id',Solrizer.solr_name(:collection)]}
82
78
  expect(asset_results["response"]["numFound"]).to eq(1)
83
79
  doc = asset_results["response"]["docs"].first
84
- expect(doc["id"]).to eq(@asset1.id)
85
- afterupdate = GenericFile.find(@asset1.id)
80
+ expect(doc["id"]).to eq(@asset1.pid)
81
+ afterupdate = GenericFile.find(@asset1.pid)
86
82
  expect(doc[Solrizer.solr_name(:collection)]).to eq(afterupdate.to_solr[Solrizer.solr_name(:collection)])
87
83
  end
88
84
  it "should add docs to collection if batch ids provided and add the collection id to the documents int he colledction" do
@@ -90,11 +86,11 @@ describe CollectionsController, :type => :controller do
90
86
  @asset2 = GenericFile.create!
91
87
  post :create, batch_document_ids: [@asset1,@asset2], collection: {title: "My Secong Collection ", description: "The Description\r\n\r\nand more"}
92
88
  expect(assigns[:collection].members).to eq([@asset1,@asset2])
93
- asset_results = blacklight_solr.get "select", params:{fq:["id:\"#{@asset1.id}\""],fl:['id',Solrizer.solr_name(:collection)]}
89
+ asset_results = blacklight_solr.get "select", params:{fq:["id:\"#{@asset1.pid}\""],fl:['id',Solrizer.solr_name(:collection)]}
94
90
  expect(asset_results["response"]["numFound"]).to eq(1)
95
91
  doc = asset_results["response"]["docs"].first
96
- expect(doc["id"]).to eq(@asset1.id)
97
- afterupdate = GenericFile.find(@asset1.id)
92
+ expect(doc["id"]).to eq(@asset1.pid)
93
+ afterupdate = GenericFile.find(@asset1.pid)
98
94
  expect(doc[Solrizer.solr_name(:collection)]).to eq(afterupdate.to_solr[Solrizer.solr_name(:collection)])
99
95
  end
100
96
  end
@@ -110,91 +106,86 @@ describe CollectionsController, :type => :controller do
110
106
  allow(controller).to receive(:authorize!).and_return(true)
111
107
  expect(controller).to receive(:authorize!).at_least(:once)
112
108
  end
113
-
114
109
  it "should update collection metadata" do
115
- put :update, id: @collection.id, collection: { title: "New Title", description: "New Description" }
116
- expect(response).to redirect_to collections.collection_path(@collection)
110
+ put :update, id: @collection.id, collection: {title: "New Title", description: "New Description"}
111
+ expect(response).to redirect_to Hydra::Collections::Engine.routes.url_helpers.collection_path(@collection.id)
117
112
  expect(assigns[:collection].title).to eq("New Title")
118
113
  expect(assigns[:collection].description).to eq("New Description")
119
114
  end
120
115
 
121
116
  it "should call after_update" do
122
117
  expect(controller).to receive(:after_update).and_call_original
123
- put :update, id: @collection.id, collection: { title: "New Title", description: "New Description" }
118
+ put :update, id: @collection.id, collection: {title: "New Title", description: "New Description"}
124
119
  end
125
-
126
- context "when there are existing members in the collection" do
127
- it "should support adding batches of members" do
128
- @collection.members << @asset1
129
- @collection.save
130
- put :update, id: @collection.id, collection: { members:"add" }, batch_document_ids: [@asset2, @asset3]
131
- expect(response).to redirect_to collections.collection_path(@collection)
132
- expect(assigns[:collection].members).to match_array [@asset2, @asset3, @asset1]
133
- end
134
-
135
- it "should support removing batches of members" do
136
- @collection.members = [@asset1, @asset2, @asset3]
137
- @collection.save
138
- put :update, id: @collection.id, collection: { members: "remove" }, batch_document_ids: [@asset1, @asset3]
139
- expect(response).to redirect_to collections.collection_path(@collection)
140
- expect(assigns[:collection].members).to eq([@asset2])
141
- end
120
+ it "should support adding batches of members" do
121
+ @collection.members << @asset1
122
+ @collection.save
123
+ put :update, id: @collection.id, collection: {members:"add"}, batch_document_ids:[@asset2, @asset3]
124
+ expect(response).to redirect_to Hydra::Collections::Engine.routes.url_helpers.collection_path(@collection.id)
125
+ expect(assigns[:collection].members.sort! { |a,b| a.pid <=> b.pid }).to eq([@asset2, @asset3, @asset1].sort! { |a,b| a.pid <=> b.pid })
126
+ end
127
+ it "should support removing batches of members" do
128
+ @collection.members = [@asset1, @asset2, @asset3]
129
+ @collection.save
130
+ put :update, id: @collection.id, collection: {members:"remove"}, batch_document_ids:[@asset1, @asset3]
131
+ expect(response).to redirect_to Hydra::Collections::Engine.routes.url_helpers.collection_path(@collection.id)
132
+ expect(assigns[:collection].members).to eq([@asset2])
142
133
  end
143
-
144
134
  it "should support setting members array" do
145
- put :update, id: @collection.id, collection: { members: "add" }, batch_document_ids: [@asset2, @asset3, @asset1]
146
- expect(response).to redirect_to collections.collection_path(@collection)
147
- expect(assigns[:collection].members).to match_array [@asset2, @asset3, @asset1]
135
+ put :update, id: @collection.id, collection: {members:"add"}, batch_document_ids:[@asset2, @asset3, @asset1]
136
+ expect(response).to redirect_to Hydra::Collections::Engine.routes.url_helpers.collection_path(@collection.id)
137
+ expect(assigns[:collection].members.sort! { |a,b| a.pid <=> b.pid }).to eq([@asset2, @asset3, @asset1].sort! { |a,b| a.pid <=> b.pid })
138
+ end
139
+ it "should support setting members array" do
140
+ put :update, id: @collection.id, collection: {members:"add"}, batch_document_ids:[@asset2, @asset3, @asset1]
141
+ expect(response).to redirect_to Hydra::Collections::Engine.routes.url_helpers.collection_path(@collection.id)
142
+ expect(assigns[:collection].members.sort! { |a,b| a.pid <=> b.pid }).to eq([@asset2, @asset3, @asset1].sort! { |a,b| a.pid <=> b.pid })
148
143
  end
149
-
150
144
  it "should set/un-set collection on members" do
151
145
  # Add to collection (sets collection on members)
152
- put :update, id: @collection.id, collection: { members: "add"}, batch_document_ids: [@asset2, @asset3]
153
- expect(assigns[:collection].members).to match_array [@asset2, @asset3]
154
-
146
+ solr_doc_before_add = ActiveFedora::SolrInstanceLoader.new(ActiveFedora::Base, @asset2.pid).send(:solr_doc)
147
+ expect(solr_doc_before_add[Solrizer.solr_name(:collection)]).to be_nil
148
+ put :update, id: @collection.id, collection: {members:"add"}, batch_document_ids:[@asset2, @asset3]
149
+ expect(assigns[:collection].members.sort! { |a,b| a.pid <=> b.pid }).to eq([@asset2, @asset3].sort! { |a,b| a.pid <=> b.pid })
155
150
  ## Check that member lists collection in its solr doc
156
151
  @asset2.reload
157
- expect(@asset2.to_solr[Solrizer.solr_name(:collection)]).to eq [@collection.id]
152
+ expect(@asset2.to_solr[Solrizer.solr_name(:collection)]).to eq([@collection.pid])
158
153
  ## Check that member was re-indexed with collection info
159
- asset_results = blacklight_solr.get "select", params:{fq:["id:\"#{@asset2.id}\""],fl:['id',Solrizer.solr_name(:collection)]}
154
+ asset_results = blacklight_solr.get "select", params:{fq:["id:\"#{@asset2.pid}\""],fl:['id',Solrizer.solr_name(:collection)]}
160
155
  doc = asset_results["response"]["docs"].first
161
- expect(doc["id"]).to eq(@asset2.id)
162
- expect(doc[Solrizer.solr_name(:collection)]).to eq [@collection.id]
156
+ expect(doc["id"]).to eq(@asset2.pid)
157
+ expect(doc[Solrizer.solr_name(:collection)]).to eq([@collection.pid])
158
+ solr_doc_after_add = ActiveFedora::SolrInstanceLoader.new(ActiveFedora::Base, @asset2.pid).send(:solr_doc)
159
+ expect(solr_doc_after_add[Solrizer.solr_name(:collection)]).to eq([@collection.pid])
163
160
 
164
161
  # Remove from collection (un-sets collection on members)
165
- put :update, id: @collection, collection: { members:"remove" }, batch_document_ids: [@asset2]
166
- expect(assigns[:collection].members).to_not include(@asset2)
167
-
162
+ solr_doc_before_remove = ActiveFedora::SolrInstanceLoader.new(ActiveFedora::Base, @asset2.pid).send(:solr_doc)
163
+ expect(solr_doc_before_remove[Solrizer.solr_name(:collection)]).to eq([@collection.pid])
164
+ put :update, id: @collection.id, collection: {members:"remove"}, batch_document_ids:[@asset2]
165
+ expect(assigns[:collection].members).not_to include(@asset2)
168
166
  ## Check that member no longer lists collection in its solr doc
169
167
  @asset2.reload
170
168
  expect(@asset2.to_solr[Solrizer.solr_name(:collection)]).to eq([])
171
-
172
169
  ## Check that member was re-indexed without collection info
173
- asset_results = blacklight_solr.get "select", params:{fq:["id:\"#{@asset2.id}\""],fl:['id',Solrizer.solr_name(:collection)]}
170
+ asset_results = blacklight_solr.get "select", params:{fq:["id:\"#{@asset2.pid}\""],fl:['id',Solrizer.solr_name(:collection)]}
174
171
  doc = asset_results["response"]["docs"].first
175
- expect(doc["id"]).to eq(@asset2.id)
172
+ expect(doc["id"]).to eq(@asset2.pid)
176
173
  expect(doc[Solrizer.solr_name(:collection)]).to be_nil
174
+ solr_doc_after_remove = ActiveFedora::SolrInstanceLoader.new(ActiveFedora::Base, @asset2.pid).send(:solr_doc)
175
+ expect(solr_doc_after_remove[Solrizer.solr_name(:collection)]).to be_nil
177
176
  end
178
-
179
- context "when moving members between collections" do
180
- before do
181
- @collection.members = [@asset1, @asset2, @asset3]
182
- @collection.save
183
- end
184
- let(:collection2) do
185
- Collection.new.tap do |col|
186
- col.apply_depositor_metadata(@user.user_key)
187
- col.save
188
- end
189
- end
190
-
191
- it "moves the members" do
192
- put :update, id: @collection, collection: {members: "move"},
193
- destination_collection_id: collection2, batch_document_ids: [@asset2, @asset3]
194
- expect(@collection.reload.members).to eq [@asset1]
195
- expect(collection2.reload.members).to match_array [@asset2, @asset3]
196
- end
177
+
178
+ it "should allow moving members between collections" do
179
+ @collection.members = [@asset1, @asset2, @asset3]
180
+ @collection.save
181
+ @collection2 = Collection.new
182
+ @collection2.apply_depositor_metadata(@user.user_key)
183
+ @collection2.save
184
+ put :update, id: @collection.id, collection: {members:"move"}, destination_collection_id:@collection2.pid, batch_document_ids:[@asset2, @asset3]
185
+ expect(::Collection.find(@collection.pid).members).to eq([@asset1])
186
+ expect(::Collection.find(@collection2.pid).members).to eq([@asset2, @asset3])
197
187
  end
188
+
198
189
  end
199
190
 
200
191
  describe "#destroy" do
@@ -220,15 +211,15 @@ describe CollectionsController, :type => :controller do
220
211
  @collection.save
221
212
  @asset1 = @asset1.reload
222
213
  @asset1.update_index
223
- expect(@asset1.collections).to eq [@collection]
224
- asset_results = blacklight_solr.get "select", params:{fq:["id:\"#{@asset1.id}\""],fl:['id',Solrizer.solr_name(:collection)]}
214
+ expect(@asset1.collections).to eq([@collection])
215
+ asset_results = blacklight_solr.get "select", params:{fq:["id:\"#{@asset1.pid}\""],fl:['id',Solrizer.solr_name(:collection)]}
225
216
  expect(asset_results["response"]["numFound"]).to eq(1)
226
217
  doc = asset_results["response"]["docs"].first
227
- expect(doc[Solrizer.solr_name(:collection)]).to eq([@collection.id])
218
+ expect(doc[Solrizer.solr_name(:collection)]).to eq([@collection.pid])
228
219
 
229
- delete :destroy, id: @collection
220
+ delete :destroy, id: @collection.id
230
221
  expect(@asset1.reload.collections).to eq([])
231
- asset_results = blacklight_solr.get "select", params:{fq:["id:\"#{@asset1.id}\""],fl:['id',Solrizer.solr_name(:collection)]}
222
+ asset_results = blacklight_solr.get "select", params:{fq:["id:\"#{@asset1.pid}\""],fl:['id',Solrizer.solr_name(:collection)]}
232
223
  expect(asset_results["response"]["numFound"]).to eq(1)
233
224
  doc = asset_results["response"]["docs"].first
234
225
  expect(doc[Solrizer.solr_name(:collection)]).to be_nil
@@ -245,40 +236,71 @@ describe CollectionsController, :type => :controller do
245
236
  @asset1 = GenericFile.create!(title: "First of the Assets")
246
237
  @asset2 = GenericFile.create!(title: "Second of the Assets")
247
238
  @asset3 = GenericFile.create!(title: "Third of the Assets")
248
- @collection = Collection.new(id:"abc123")
239
+ @collection = Collection.new(pid:"abc:123")
249
240
  @collection.title = "My collection"
250
241
  @collection.apply_depositor_metadata(@user.user_key)
251
- @collection.members = [@asset1, @asset2, @asset3]
252
- @collection.save!
253
- expect(controller).to receive(:authorize!).and_return(true)
242
+ @collection.members = [@asset1,@asset2,@asset3]
243
+ @collection.save
244
+ allow(controller).to receive(:authorize!).and_return(true)
254
245
  allow(controller).to receive(:apply_gated_search)
255
246
  end
256
-
247
+ it "should show the collections" do
248
+ get :show, id: @collection.id
249
+ expect(assigns[:collection].title).to eq(@collection.title)
250
+ ids = assigns[:member_docs].map {|d| d.id}
251
+ expect(ids).to include @asset1.pid
252
+ expect(ids).to include @asset2.pid
253
+ expect(ids).to include @asset3.pid
254
+ end
255
+ context "when items have been added and removed" do
256
+ it "should return the items that are in the collection and not return items that have been removed" do
257
+ asset4 = GenericFile.create!(title: "Fourth of the Assets")
258
+ put :update, id: @collection.id, collection: {members:"remove"}, batch_document_ids:[@asset2.pid]
259
+ controller.batch = nil
260
+ put :update, id: @collection.id, collection: {members:"add"}, batch_document_ids:[asset4.pid]
261
+ get :show, id: @collection.id
262
+ ids = assigns[:member_docs].map(&:id)
263
+ expect(ids).to include @asset1.pid, @asset3.pid, asset4.pid
264
+ expect(ids).to_not include @asset2.pid
265
+ end
266
+ end
257
267
  describe "additional collections" do
258
268
  before do
259
269
  @asset4 = GenericFile.create!(title: "#{@asset1.id}")
260
- @collection2 = Collection.new(id: "abc1234")
270
+ @collection2 = Collection.new(pid:"abc:1234")
261
271
  @collection2.title = "Other collection"
262
272
  @collection2.apply_depositor_metadata(@user.user_key)
263
273
  @collection2.members = [@asset4]
264
274
  @collection2.save
275
+ @asset4 = @asset4.reload
276
+ expect(@asset4.collections).to eq([@collection2])
265
277
  end
266
278
 
267
279
  it "should show only the collections assets" do
268
- get :show, id: @collection
269
- expect(assigns[:collection].title).to eq @collection.title
270
- expect(assigns[:member_docs].map(&:id)).to match_array [@asset1.id, @asset2.id, @asset3.id]
271
- end
280
+ get :show, id: @collection.pid
281
+ expect(assigns[:collection].title).to eq(@collection.title)
282
+ ids = assigns[:member_docs].map {|d| d.id}
283
+ expect(ids).to include @asset1.pid
284
+ expect(ids).to include @asset2.pid
285
+ expect(ids).to include @asset3.pid
286
+ expect(ids).not_to include @asset4.pid
272
287
 
288
+ end
273
289
  it "should show only the other collections assets" do
274
- get :show, id: @collection2
275
- expect(assigns[:collection].title).to eq @collection2.title
276
- expect(assigns[:member_docs].map(&:id)).to match_array [@asset4.id]
290
+
291
+ get :show, id: @collection2.pid
292
+ expect(assigns[:collection].title).to eq(@collection2.title)
293
+ ids = assigns[:member_docs].map {|d| d.id}
294
+ expect(ids).not_to include @asset1.pid
295
+ expect(ids).not_to include @asset2.pid
296
+ expect(ids).not_to include @asset3.pid
297
+ expect(ids).to include @asset4.pid
298
+
277
299
  end
278
300
  end
279
301
 
280
302
  it "when the collection is empty it should show no assets" do
281
- get :show, id: Collection.create(title: "Empty collection")
303
+ get :show, id: Collection.create(title: "Empty collection").id
282
304
  expect(assigns[:collection].title).to eq("Empty collection")
283
305
  expect(assigns[:member_docs]).to be_empty
284
306
  end
@@ -286,27 +308,34 @@ describe CollectionsController, :type => :controller do
286
308
  # NOTE: This test depends on title_tesim being in the qf in solrconfig.xml
287
309
  it "should query the collections" do
288
310
  get :show, id: @collection.id, cq:"\"#{@asset1.title}\""
289
- expect(assigns[:collection].title).to eq @collection.title
290
- expect(assigns[:member_docs].map(&:id)).to match_array [@asset1.id]
311
+ expect(assigns[:collection].title).to eq(@collection.title)
312
+ ids = assigns[:member_docs].map {|d| d.id}
313
+ expect(ids).to include @asset1.pid
314
+ expect(ids).not_to include @asset2.pid
315
+ expect(ids).not_to include @asset3.pid
291
316
  end
292
317
 
293
- context "When there are search matches that are not in the collection" do
294
- before do
295
- GenericFile.create!(title: "#{@asset1.id} #{@asset1.title}")
296
- GenericFile.create!(title: @asset1.title)
297
- end
298
- # NOTE: This test depends on title_tesim being in the qf in solrconfig.xml
299
- it "should query the collections and show only the collection assets" do
300
- get :show, id: @collection, cq: "\"#{@asset1.title}\""
301
- expect(assigns[:collection].title).to eq @collection.title
302
- expect(assigns[:member_docs].map(&:id)).to match_array [@asset1.id]
303
- end
318
+ # NOTE: This test depends on title_tesim being in the qf in solrconfig.xml
319
+ it "should query the collections and show only the collection assets" do
320
+ @asset4 = GenericFile.create!(title: "#{@asset1.id} #{@asset1.title}")
321
+ @asset5 = GenericFile.create!(title: "#{@asset1.title}")
322
+ get :show, id: @collection.id, cq:"\"#{@asset1.title}\""
323
+ expect(assigns[:collection].title).to eq(@collection.title)
324
+ ids = assigns[:member_docs].map {|d| d.id}
325
+ expect(ids).to include @asset1.pid
326
+ expect(ids).not_to include @asset2.pid
327
+ expect(ids).not_to include @asset3.pid
328
+ expect(ids).not_to include @asset4.pid
329
+ expect(ids).not_to include @asset5.pid
304
330
  end
305
331
 
306
332
  it "should query the collections with rows" do
307
- get :show, id: @collection, rows:"2"
308
- expect(assigns[:collection].title).to eq @collection.title
309
- expect(assigns[:member_docs].size).to eq 2
333
+ get :show, id: @collection.id, rows:"2"
334
+ expect(assigns[:collection].title).to eq(@collection.title)
335
+ ids = assigns[:member_docs].map {|d| d.id}
336
+ expect(ids.count).to eq(2)
310
337
  end
338
+
311
339
  end
340
+
312
341
  end