hydra-collections 3.0.0.beta3 → 4.0.0.beta1
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/.rspec +1 -0
- data/README.md +3 -3
- data/{lib → app/controllers/concerns}/hydra/collections/selects_collections.rb +3 -8
- data/app/controllers/concerns/hydra/collections_controller_behavior.rb +19 -20
- data/app/helpers/collections_search_helper.rb +2 -1
- data/app/models/concerns/hydra/collection.rb +82 -18
- data/app/views/collections/_search_form.html.erb +0 -16
- data/hydra-collections.gemspec +3 -2
- data/lib/hydra/collections/accepts_batches.rb +5 -5
- data/lib/hydra/collections/collectible.rb +15 -8
- data/lib/hydra/collections/solr_document_behavior.rb +0 -15
- data/lib/hydra/collections/version.rb +1 -1
- data/spec/controllers/catalog_controller_spec.rb +5 -19
- data/spec/controllers/collections_controller_spec.rb +125 -154
- data/spec/controllers/other_collections_controller_spec.rb +13 -15
- data/spec/controllers/selects_collections_spec.rb +39 -48
- data/spec/factories.rb +0 -14
- data/spec/factories/users.rb +0 -14
- data/spec/helpers/collections_helper_spec.rb +14 -16
- data/spec/helpers/collections_search_helper_spec.rb +4 -2
- data/spec/lib/collectible_spec.rb +7 -7
- data/spec/models/collection_spec.rb +78 -133
- data/spec/spec_helper.rb +12 -1
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +1 -0
- data/tasks/hydra-collections-dev.rake +3 -1
- metadata +20 -8
- data/app/models/datastreams/hydra/collection_rdf_datastream.rb +0 -54
- data/spec/factories/.gitkeep +0 -0
@@ -14,21 +14,21 @@ class OtherCollection < ActiveFedora::Base
|
|
14
14
|
include Hydra::Collection
|
15
15
|
include Hydra::Collections::Collectible
|
16
16
|
|
17
|
-
def to_solr(solr_doc={}
|
18
|
-
super
|
19
|
-
|
20
|
-
|
17
|
+
def to_solr(solr_doc={})
|
18
|
+
super.tap do |solr_doc|
|
19
|
+
index_collection_ids(solr_doc)
|
20
|
+
end
|
21
21
|
end
|
22
|
-
|
23
22
|
end
|
23
|
+
|
24
24
|
class Member < ActiveFedora::Base
|
25
25
|
include Hydra::Collections::Collectible
|
26
26
|
attr_accessor :title
|
27
27
|
|
28
|
-
def to_solr(solr_doc={}
|
29
|
-
super
|
30
|
-
|
31
|
-
|
28
|
+
def to_solr(solr_doc={})
|
29
|
+
super.tap do |solr_doc|
|
30
|
+
index_collection_ids(solr_doc)
|
31
|
+
end
|
32
32
|
end
|
33
33
|
|
34
34
|
end
|
@@ -75,12 +75,10 @@ describe OtherCollectionsController, :type => :controller do
|
|
75
75
|
end
|
76
76
|
it "should show the collections" do
|
77
77
|
routes.draw { resources :other_collections, except: :index }
|
78
|
-
get :show, id: collection
|
79
|
-
expect(assigns[:collection].title).to eq
|
80
|
-
ids = assigns[:member_docs].map
|
81
|
-
expect(ids).to include
|
82
|
-
expect(ids).to include asset2.pid
|
83
|
-
expect(ids).to include asset3.pid
|
78
|
+
get :show, id: collection
|
79
|
+
expect(assigns[:collection].title).to eq collection.title
|
80
|
+
ids = assigns[:member_docs].map(&:id)
|
81
|
+
expect(ids).to include(asset1.id, asset2.id, asset3.id)
|
84
82
|
end
|
85
83
|
end
|
86
84
|
|
@@ -24,7 +24,7 @@ describe SelectsCollectionsController, :type => :controller do
|
|
24
24
|
end
|
25
25
|
|
26
26
|
describe "Select Collections" do
|
27
|
-
before
|
27
|
+
before do
|
28
28
|
@user = FactoryGirl.find_or_create(:user)
|
29
29
|
@collection = Collection.new title:"Test Public"
|
30
30
|
@collection.apply_depositor_metadata(@user.user_key)
|
@@ -41,36 +41,34 @@ describe SelectsCollectionsController, :type => :controller do
|
|
41
41
|
@collection4 = Collection.new title:"Test No Access"
|
42
42
|
@collection4.apply_depositor_metadata('abc123@test.com')
|
43
43
|
@collection4.save
|
44
|
-
@collections = []
|
45
|
-
(1..11).each do |i|
|
46
|
-
collection = Collection.new title:"Test Public #{i}"
|
47
|
-
collection.apply_depositor_metadata(@user.user_key)
|
48
|
-
collection.read_groups = ["public"]
|
49
|
-
collection.save
|
50
|
-
@collections << collection
|
51
|
-
end
|
52
|
-
end
|
53
|
-
after (:all) do
|
54
|
-
Collection.delete_all
|
55
44
|
end
|
45
|
+
|
56
46
|
describe "Public Access" do
|
57
|
-
|
47
|
+
let(:user_collections) do
|
58
48
|
subject.find_collections
|
59
|
-
|
60
|
-
expect(@user_collections).to be_kind_of(Array)
|
49
|
+
subject.instance_variable_get(:@user_collections)
|
61
50
|
end
|
62
|
-
|
63
|
-
|
51
|
+
|
52
|
+
it "should only return public collections" do
|
53
|
+
expect(user_collections.map(&:id)).to match_array [@collection.id]
|
64
54
|
end
|
65
|
-
|
66
|
-
|
55
|
+
|
56
|
+
context "when there are more than 10" do
|
57
|
+
before do
|
58
|
+
11.times do |i|
|
59
|
+
Collection.new(title:"Test Public #{i}").tap do |col|
|
60
|
+
col.apply_depositor_metadata(@user.user_key)
|
61
|
+
col.read_groups = ["public"]
|
62
|
+
col.save!
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
it "should return all public collections" do
|
67
|
+
expect(user_collections.count).to eq(12)
|
68
|
+
end
|
67
69
|
end
|
68
|
-
it "should not return non public collections" do
|
69
|
-
expect(@user_collections.index{|d| d.id == @collection2.id}).to be_nil
|
70
|
-
expect(@user_collections.index{|d| d.id == @collection3.id}).to be_nil
|
71
|
-
expect(@user_collections.index{|d| d.id == @collection4.id}).to be_nil
|
72
|
-
end
|
73
70
|
end
|
71
|
+
|
74
72
|
describe "Read Access" do
|
75
73
|
describe "not signed in" do
|
76
74
|
it "should error if the user is not signed in" do
|
@@ -78,45 +76,38 @@ describe SelectsCollectionsController, :type => :controller do
|
|
78
76
|
end
|
79
77
|
end
|
80
78
|
describe "signed in" do
|
81
|
-
before
|
82
|
-
|
79
|
+
before { sign_in @user }
|
80
|
+
|
81
|
+
let(:user_collections) do
|
83
82
|
subject.find_collections_with_read_access
|
84
|
-
|
85
|
-
expect(@user_collections).to be_kind_of(Array)
|
83
|
+
subject.instance_variable_get(:@user_collections)
|
86
84
|
end
|
87
|
-
|
88
|
-
|
89
|
-
expect(
|
90
|
-
expect(@user_collections.index{|d| d.id == @collection3.id}).not_to be_nil
|
85
|
+
|
86
|
+
it "should return only public and read access (edit access implies read) collections" do
|
87
|
+
expect(user_collections.map(&:id)).to match_array [@collection.id, @collection2.id, @collection3.id]
|
91
88
|
end
|
92
|
-
it "should not return non public collections" do
|
93
|
-
expect(@user_collections.index{|d| d.id == @collection4.id}).to be_nil
|
94
|
-
end
|
95
89
|
end
|
96
90
|
end
|
91
|
+
|
97
92
|
describe "Edit Access" do
|
98
93
|
describe "not signed in" do
|
99
94
|
it "should error if the user is not signed in" do
|
100
95
|
expect { subject.find_collections_with_edit_access }.to raise_error
|
101
96
|
end
|
102
97
|
end
|
98
|
+
|
103
99
|
describe "signed in" do
|
104
|
-
before
|
105
|
-
|
100
|
+
before { sign_in @user }
|
101
|
+
|
102
|
+
let(:user_collections) do
|
106
103
|
subject.find_collections_with_edit_access
|
107
|
-
|
108
|
-
expect(@user_collections).to be_kind_of(Array)
|
109
|
-
end
|
110
|
-
it "should return public or editable collections" do
|
111
|
-
expect(@user_collections.index{|d| d.id == @collection.id}).not_to be_nil
|
112
|
-
expect(@user_collections.index{|d| d.id == @collection3.id}).not_to be_nil
|
113
|
-
end
|
114
|
-
it "should not return non public or editable collections" do
|
115
|
-
expect(@user_collections.index{|d| d.id == @collection2.id}).to be_nil
|
116
|
-
expect(@user_collections.index{|d| d.id == @collection4.id}).to be_nil
|
104
|
+
subject.instance_variable_get(:@user_collections)
|
117
105
|
end
|
106
|
+
|
107
|
+
it "should return only public or editable collections" do
|
108
|
+
expect(user_collections.map(&:id)).to match_array [@collection.id, @collection3.id]
|
109
|
+
end
|
118
110
|
end
|
119
111
|
end
|
120
112
|
end
|
121
|
-
|
122
113
|
end
|
data/spec/factories.rb
CHANGED
@@ -1,17 +1,3 @@
|
|
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
1
|
FactoryGirl.define do
|
16
2
|
factory :collection
|
17
3
|
end
|
data/spec/factories/users.rb
CHANGED
@@ -1,17 +1,3 @@
|
|
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
1
|
FactoryGirl.define do
|
16
2
|
factory :user, :class => User do |u|
|
17
3
|
email 'jilluser@example.com'
|
@@ -22,17 +22,15 @@ describe CollectionsHelper, :type => :helper do
|
|
22
22
|
end
|
23
23
|
end
|
24
24
|
describe "button_for_delete_collection" do
|
25
|
-
before
|
25
|
+
before do
|
26
26
|
@collection = Collection.create(title: "Test Public")
|
27
27
|
end
|
28
|
-
|
29
|
-
@collection.delete
|
30
|
-
end
|
28
|
+
|
31
29
|
it " should create a button to the collections delete path" do
|
32
30
|
str = button_for_delete_collection @collection
|
33
31
|
doc = Nokogiri::HTML(str)
|
34
32
|
form = doc.xpath('//form').first
|
35
|
-
expect(form.attr('action')).to eq
|
33
|
+
expect(form.attr('action')).to eq collections.collection_path(@collection)
|
36
34
|
i = form.children.first.children[1]
|
37
35
|
expect(i.attr('type')).to eq('submit')
|
38
36
|
end
|
@@ -40,7 +38,7 @@ describe CollectionsHelper, :type => :helper do
|
|
40
38
|
str = button_for_delete_collection @collection, "Delete My Button"
|
41
39
|
doc = Nokogiri::HTML(str)
|
42
40
|
form = doc.xpath('//form').first
|
43
|
-
expect(form.attr('action')).to eq
|
41
|
+
expect(form.attr('action')).to eq collections.collection_path(@collection)
|
44
42
|
i = form.children.first.children[1]
|
45
43
|
expect(i.attr('value')).to eq("Delete My Button")
|
46
44
|
end
|
@@ -55,7 +53,7 @@ describe CollectionsHelper, :type => :helper do
|
|
55
53
|
str = button_for_remove_from_collection item
|
56
54
|
doc = Nokogiri::HTML(str)
|
57
55
|
form = doc.xpath('//form').first
|
58
|
-
expect(form.attr('action')).to eq
|
56
|
+
expect(form.attr('action')).to eq collections.collection_path(@collection)
|
59
57
|
expect(form.css('input#collection_members[type="hidden"][value="remove"]')).not_to be_empty
|
60
58
|
expect(form.css('input[type="hidden"][name="batch_document_ids[]"][value="changeme:123"]')).not_to be_empty
|
61
59
|
end
|
@@ -77,34 +75,34 @@ describe CollectionsHelper, :type => :helper do
|
|
77
75
|
str = button_for_remove_from_collection item
|
78
76
|
doc = Nokogiri::HTML(str)
|
79
77
|
form = doc.xpath('//form').first
|
80
|
-
expect(form.attr('action')).to eq
|
78
|
+
expect(form.attr('action')).to eq collections.collection_path(@collection)
|
81
79
|
expect(form.css('input#collection_members[type="hidden"][value="remove"]')).not_to be_empty
|
82
80
|
expect(form.css('input[type="hidden"][name="batch_document_ids[]"][value="changeme:123"]')).not_to be_empty
|
83
81
|
end
|
84
82
|
|
85
83
|
end
|
86
|
-
end
|
84
|
+
end
|
85
|
+
|
87
86
|
describe "button_for_remove_selected_from_collection" do
|
88
|
-
before
|
89
|
-
@collection = Collection.create title:"Test Public"
|
90
|
-
end
|
91
|
-
after (:all) do
|
92
|
-
@collection.delete
|
87
|
+
before do
|
88
|
+
@collection = Collection.create title: "Test Public"
|
93
89
|
end
|
90
|
+
|
94
91
|
it " should create a button to the collections delete path" do
|
95
92
|
str = button_for_remove_selected_from_collection @collection
|
96
93
|
doc = Nokogiri::HTML(str)
|
97
94
|
form = doc.xpath('//form').first
|
98
|
-
expect(form.attr('action')).to eq
|
95
|
+
expect(form.attr('action')).to eq collections.collection_path(@collection)
|
99
96
|
i = form.children[2]
|
100
97
|
expect(i.attr('value')).to eq("remove")
|
101
98
|
expect(i.attr('name')).to eq("collection[members]")
|
102
99
|
end
|
100
|
+
|
103
101
|
it "should create a button with my text" do
|
104
102
|
str = button_for_remove_selected_from_collection @collection, "Remove My Button"
|
105
103
|
doc = Nokogiri::HTML(str)
|
106
104
|
form = doc.css('form').first
|
107
|
-
expect(form.attr('action')).to eq collections.collection_path(@collection
|
105
|
+
expect(form.attr('action')).to eq collections.collection_path(@collection)
|
108
106
|
expect(form.css('input[type="submit"]').attr('value').value).to eq "Remove My Button"
|
109
107
|
end
|
110
108
|
end
|
@@ -4,11 +4,13 @@ describe CollectionsSearchHelper, :type => :helper do
|
|
4
4
|
describe "collection_name" do
|
5
5
|
let (:collection_without_title) { Collection.create() }
|
6
6
|
let (:collection_with_title) { Collection.create(title: "Title of Collection 2") }
|
7
|
+
|
7
8
|
it "should return the pid if no title available" do
|
8
|
-
expect(collection_name(collection_without_title.
|
9
|
+
expect(collection_name(collection_without_title.id)).to eq collection_without_title.id
|
9
10
|
end
|
11
|
+
|
10
12
|
it "should return the title value associated with the given pid" do
|
11
|
-
expect(collection_name(collection_with_title.
|
13
|
+
expect(collection_name(collection_with_title.id)).to eq "Title of Collection 2"
|
12
14
|
end
|
13
15
|
end
|
14
16
|
end
|
@@ -15,17 +15,17 @@ describe Hydra::Collections::Collectible do
|
|
15
15
|
@collection1.members << @collectible
|
16
16
|
@collection1.save
|
17
17
|
@collectible.collections << @collection2
|
18
|
-
reloaded = CollectibleThing.find(@collectible.
|
19
|
-
expect(@collection2.reload.members).to eq
|
20
|
-
expect(reloaded.collections).to eq
|
18
|
+
reloaded = CollectibleThing.find(@collectible.id)
|
19
|
+
expect(@collection2.reload.members).to eq [@collectible]
|
20
|
+
expect(reloaded.collections).to eq [@collection1, @collection2]
|
21
21
|
end
|
22
22
|
end
|
23
|
-
describe "
|
24
|
-
it "should add
|
23
|
+
describe "index_collection_ids" do
|
24
|
+
it "should add ids for all associated collections" do
|
25
25
|
@collectible.save
|
26
26
|
@collectible.collections << @collection1
|
27
27
|
@collectible.collections << @collection2
|
28
|
-
expect(@collectible.
|
28
|
+
expect(@collectible.index_collection_ids["collection_sim"]).to eq [@collection1.id, @collection2.id]
|
29
29
|
end
|
30
30
|
end
|
31
|
-
end
|
31
|
+
end
|
@@ -7,9 +7,9 @@ describe Collection, :type => :model do
|
|
7
7
|
include Hydra::Collections::Collectible
|
8
8
|
|
9
9
|
def to_solr(solr_doc={}, opts={})
|
10
|
-
super(solr_doc, opts)
|
11
|
-
|
12
|
-
|
10
|
+
super(solr_doc, opts).tap do |solr_doc|
|
11
|
+
solr_doc = index_collection_ids(solr_doc)
|
12
|
+
end
|
13
13
|
end
|
14
14
|
|
15
15
|
end
|
@@ -18,175 +18,120 @@ describe Collection, :type => :model do
|
|
18
18
|
@user.destroy
|
19
19
|
Object.send(:remove_const, :GenericFile)
|
20
20
|
end
|
21
|
-
let(:gf1) { GenericFile.create }
|
22
|
-
let(:gf2) { GenericFile.create }
|
23
|
-
|
24
|
-
let(:user) { @user }
|
25
|
-
|
26
|
-
describe "#to_solr" do
|
27
|
-
let(:collection) { Collection.new(title: "A good title") }
|
28
|
-
|
29
|
-
subject { collection.to_solr }
|
30
21
|
|
31
|
-
|
32
|
-
|
33
|
-
|
22
|
+
before do
|
23
|
+
@collection = Collection.new
|
24
|
+
@collection.apply_depositor_metadata(@user.user_key)
|
25
|
+
@collection.save!
|
26
|
+
@gf1 = GenericFile.create
|
27
|
+
@gf2 = GenericFile.create
|
34
28
|
end
|
35
29
|
|
36
|
-
|
37
|
-
|
38
|
-
subject.apply_depositor_metadata(user)
|
39
|
-
end
|
40
|
-
|
41
|
-
it "should have a depositor" do
|
42
|
-
expect(subject.depositor).to eq(user.user_key)
|
43
|
-
end
|
30
|
+
it "should have a depositor" do
|
31
|
+
expect(@collection.depositor).to eq(@user.user_key)
|
44
32
|
end
|
45
33
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
collection.save
|
51
|
-
end
|
52
|
-
end
|
53
|
-
subject { Ability.new(user) }
|
54
|
-
|
55
|
-
it "should allow the depositor to edit and read" do
|
56
|
-
expect(subject.can?(:read, collection)).to be true
|
57
|
-
expect(subject.can?(:edit, collection)).to be true
|
58
|
-
end
|
34
|
+
it "should allow the depositor to edit and read" do
|
35
|
+
ability = Ability.new(@user)
|
36
|
+
expect(ability.can?(:read, @collection)).to be true
|
37
|
+
expect(ability.can?(:edit, @collection)).to be true
|
59
38
|
end
|
60
39
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
end
|
65
|
-
|
66
|
-
context "adding members" do
|
67
|
-
context "using assignment" do
|
68
|
-
subject { Collection.create(members: [gf1, gf2]) }
|
69
|
-
|
70
|
-
it "should have many files" do
|
71
|
-
expect(subject.reload.members).to eq [gf1, gf2]
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
context "using append" do
|
76
|
-
before do
|
77
|
-
subject.members = [gf1]
|
78
|
-
subject.save
|
79
|
-
end
|
80
|
-
it "should allow new files to be added" do
|
81
|
-
subject.reload
|
82
|
-
subject.members << gf2
|
83
|
-
subject.save
|
84
|
-
expect(subject.reload.members).to eq [gf1, gf2]
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
40
|
+
it "should be empty by default" do
|
41
|
+
expect(@collection.members).to be_empty
|
42
|
+
end
|
89
43
|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
44
|
+
it "should have many files" do
|
45
|
+
@collection.members = [@gf1, @gf2]
|
46
|
+
@collection.save
|
47
|
+
expect(@collection.reload.members).to match_array [@gf1, @gf2]
|
48
|
+
end
|
95
49
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
expect(subject.reload.members).to eq [gf2]
|
104
|
-
solr_doc_after_remove = ActiveFedora::SolrInstanceLoader.new(ActiveFedora::Base, gf1.pid).send(:solr_doc)
|
105
|
-
expect(solr_doc_after_remove["collection_tesim"]).to be_nil
|
106
|
-
end
|
107
|
-
end
|
50
|
+
it "should allow new files to be added" do
|
51
|
+
@collection.members = [@gf1]
|
52
|
+
@collection.save
|
53
|
+
@collection.reload
|
54
|
+
@collection.members << @gf2
|
55
|
+
@collection.save
|
56
|
+
expect(@collection.reload.members).to match_array [@gf1, @gf2]
|
108
57
|
end
|
109
58
|
|
110
59
|
it "should set the date uploaded on create" do
|
111
|
-
|
112
|
-
expect(
|
113
|
-
end
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
subject.save
|
127
|
-
expect(subject.date_modified).to eq modified_date
|
128
|
-
expect(gf1.reload.collections).to include(subject)
|
129
|
-
expect(gf1.to_solr[Solrizer.solr_name(:collection)]).to eq [subject.id]
|
130
|
-
end
|
60
|
+
@collection.save
|
61
|
+
expect(@collection.date_uploaded).to be_kind_of(Date)
|
62
|
+
end
|
63
|
+
it "should update the date modified on update" do
|
64
|
+
uploaded_date = Date.today
|
65
|
+
modified_date = Date.tomorrow
|
66
|
+
expect(Date).to receive(:today).twice.and_return(uploaded_date, modified_date)
|
67
|
+
@collection.save
|
68
|
+
expect(@collection.date_modified).to eq(uploaded_date)
|
69
|
+
@collection.members = [@gf1]
|
70
|
+
@collection.save
|
71
|
+
expect(@collection.date_modified).to eq(modified_date)
|
72
|
+
@gf1 = @gf1.reload
|
73
|
+
expect(@gf1.collections).to include(@collection)
|
74
|
+
expect(@gf1.to_solr[Solrizer.solr_name(:collection)]).to eq([@collection.id])
|
131
75
|
end
|
132
|
-
|
133
76
|
it "should have a title" do
|
134
|
-
|
135
|
-
|
136
|
-
expect(
|
77
|
+
@collection.title = "title"
|
78
|
+
@collection.save
|
79
|
+
expect(Collection.find(@collection.id).title).to eq(@collection.title)
|
137
80
|
end
|
138
|
-
|
139
81
|
it "should have a description" do
|
140
|
-
|
141
|
-
|
142
|
-
expect(
|
82
|
+
@collection.description = "description"
|
83
|
+
@collection.save
|
84
|
+
expect(Collection.find(@collection.id).description).to eq(@collection.description)
|
143
85
|
end
|
144
86
|
|
145
87
|
it "should have the expected display terms" do
|
146
|
-
expect(
|
88
|
+
expect(@collection.terms_for_display).to include(
|
89
|
+
:part_of, :contributor, :creator, :title, :description, :publisher,
|
90
|
+
:date_created, :date_uploaded, :date_modified, :subject, :language, :rights,
|
91
|
+
:resource_type, :identifier, :based_near, :tag, :related_url
|
92
|
+
)
|
147
93
|
end
|
148
|
-
|
149
94
|
it "should have the expected edit terms" do
|
150
|
-
expect(
|
95
|
+
expect(@collection.terms_for_editing).to include(
|
96
|
+
:part_of, :contributor, :creator, :title, :description, :publisher, :date_created,
|
97
|
+
:subject, :language, :rights, :resource_type, :identifier, :based_near, :tag, :related_url
|
98
|
+
)
|
151
99
|
end
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
end
|
159
|
-
|
160
|
-
it "should not delete member files when deleted" do
|
161
|
-
expect(GenericFile.exists?(gf1.pid)).to be true
|
162
|
-
expect(GenericFile.exists?(gf2.pid)).to be true
|
163
|
-
end
|
100
|
+
it "should not delete member files when deleted" do
|
101
|
+
@collection.members = [@gf1, @gf2]
|
102
|
+
@collection.save
|
103
|
+
@collection.destroy
|
104
|
+
expect(GenericFile).to exist(@gf1.id)
|
105
|
+
expect(GenericFile).to exist(@gf2.id)
|
164
106
|
end
|
165
107
|
|
166
108
|
describe "Collection by another name" do
|
167
|
-
before do
|
109
|
+
before (:all) do
|
168
110
|
class OtherCollection < ActiveFedora::Base
|
169
111
|
include Hydra::Collection
|
170
|
-
include Hydra::Collections::Collectible
|
171
112
|
end
|
113
|
+
|
172
114
|
class Member < ActiveFedora::Base
|
173
115
|
include Hydra::Collections::Collectible
|
174
116
|
end
|
175
117
|
end
|
176
|
-
after do
|
118
|
+
after(:all) do
|
177
119
|
Object.send(:remove_const, :OtherCollection)
|
178
120
|
Object.send(:remove_const, :Member)
|
179
121
|
end
|
180
122
|
|
181
|
-
|
182
|
-
|
183
|
-
|
123
|
+
let(:member) { Member.create }
|
124
|
+
let(:collection) { OtherCollection.new }
|
125
|
+
|
126
|
+
before do
|
184
127
|
collection.members << member
|
185
128
|
collection.save
|
129
|
+
end
|
130
|
+
|
131
|
+
it "have members that know about the collection" do
|
186
132
|
member.reload
|
187
|
-
expect(member.collections).to eq
|
188
|
-
collection.destroy
|
189
|
-
member.destroy
|
133
|
+
expect(member.collections).to eq [collection]
|
190
134
|
end
|
191
135
|
end
|
136
|
+
|
192
137
|
end
|