hydra-core 7.2.1 → 7.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/hydra-head/version.rb +1 -1
- data/spec/controllers/catalog_controller_spec.rb +19 -46
- data/spec/controllers/downloads_controller_spec.rb +61 -61
- data/spec/helpers/blacklight_helper_spec.rb +20 -17
- data/spec/lib/catalog_spec.rb +5 -6
- data/spec/lib/model_methods_spec.rb +10 -10
- data/spec/models/mods_asset_spec.rb +8 -13
- data/spec/models/solr_document_spec.rb +3 -2
- data/spec/models/user_spec.rb +5 -5
- data/spec/spec_helper.rb +0 -1
- data/spec/support/lib/tasks/rspec.rake +1 -2
- data/spec/test_app_templates/Gemfile.extra +1 -3
- data/spec/unit/hydra-head-engine_spec.rb +2 -2
- data/spec/unit/hydra-head_spec.rb +2 -2
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7425271dd98b15843f39e0a9aa0368f38e7e2f24
|
4
|
+
data.tar.gz: e20caccecf6869f8efc0a2b73e2732bf3385bece
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ca92f74f6a0ef2e8ed0d2d74db185124b5641e9c17a79ed9c45d2a010149d77d27ec5da27dc44e9dad5019e67e0829a692f867faea5177f8e712354fa6f8fe66
|
7
|
+
data.tar.gz: 73e7990c27ae8eb7d2b00077c9ff4d6d2ccec8f99f3ecdf4621791c4a43190f2733ba1e74083091c222c07a98d0bea84f5a7314b75487a1a6a52d459f6368bd2
|
data/lib/hydra-head/version.rb
CHANGED
@@ -1,93 +1,66 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
# See cucumber tests (ie. /features/edit_document.feature) for more tests, including ones that test the edit method & view
|
4
|
-
# You can run the cucumber tests with
|
5
|
-
#
|
6
|
-
# cucumber --tags @edit
|
7
|
-
# or
|
8
|
-
# rake cucumber
|
9
|
-
|
10
3
|
describe CatalogController do
|
11
|
-
|
4
|
+
|
12
5
|
before do
|
13
6
|
session[:user]='bob'
|
14
7
|
end
|
15
|
-
|
8
|
+
|
16
9
|
it "should use CatalogController" do
|
17
|
-
controller.
|
10
|
+
expect(controller).to be_an_instance_of CatalogController
|
18
11
|
end
|
19
|
-
|
20
|
-
|
12
|
+
|
21
13
|
describe "Paths Generated by Custom Routes:" do
|
22
14
|
# paths generated by custom routes
|
23
15
|
it "should map {:controller=>'catalog', :action=>'index'} to GET /catalog" do
|
24
|
-
|
16
|
+
expect(get: "/catalog").to route_to(controller: 'catalog', action: 'index')
|
25
17
|
end
|
26
18
|
it "should map {:controller=>'catalog', :action=>'show', :id=>'test:3'} to GET /catalog/test:3" do
|
27
|
-
|
19
|
+
expect(get: "/catalog/test:3").to route_to(controller: 'catalog', action: 'show', id: 'test:3')
|
28
20
|
end
|
29
21
|
|
30
22
|
it "should map catalog_path" do
|
31
|
-
|
32
|
-
catalog_path("test:3").should == '/catalog/test:3'
|
23
|
+
expect(catalog_path("test:3")).to eq '/catalog/test:3'
|
33
24
|
end
|
34
25
|
end
|
35
|
-
|
36
|
-
it "should not choke on objects with periods in ids (ie Fedora system objects)" do
|
37
|
-
skip "Need to override blacklight routes"
|
38
|
-
|
39
|
-
## We could do something like this to remove the catalog/show route and replace it with a route that allows dots (e.g. resources :catalog, :id=> /.+/)
|
40
|
-
# def add_route
|
41
|
-
# new_route = ActionController::Routing::Routes.builder.build(name, route_options)
|
42
|
-
# ActionController::Routing::Routes.routes.insert(0, new_route)
|
43
|
-
# end
|
44
26
|
|
45
|
-
# def remove_route
|
46
|
-
# ActionController::Routing::Routes.routes.reject! { |r| r.instance_variable_get(:@requirements)[:slug_id] == id }
|
47
|
-
# end
|
48
|
-
|
49
|
-
catalog_path("fedora-system:FedoraObject-3.0").should == '/catalog/fedora-system:FedoraObject-3.0'
|
50
|
-
{ :get => "/catalog/fedora-system:FedoraObject-3.0" }.should route_to(:controller => 'catalog', :action => 'show', :id=>'fedora-system:FedoraObject-3.0')
|
51
|
-
end
|
52
|
-
|
53
27
|
describe "index" do
|
54
|
-
|
55
28
|
describe "access controls" do
|
56
29
|
before(:all) do
|
57
30
|
fq = "read_access_group_ssim:public OR edit_access_group_ssim:public OR discover_access_group_ssim:public"
|
58
|
-
solr_opts = {:fq
|
59
|
-
response = ActiveFedora::SolrService.instance.conn.get('select', :
|
31
|
+
solr_opts = { fq: fq }
|
32
|
+
response = ActiveFedora::SolrService.instance.conn.get('select', params: solr_opts)
|
60
33
|
@public_only_results = Blacklight::SolrResponse.new(response, solr_opts)
|
61
34
|
end
|
62
35
|
|
63
36
|
it "should only return public documents if role does not have permissions" do
|
64
|
-
controller.
|
37
|
+
allow(controller).to receive(:current_user).and_return(nil)
|
65
38
|
get :index
|
66
|
-
assigns(:document_list).count.
|
39
|
+
expect(assigns(:document_list).count).to eq @public_only_results.docs.count
|
67
40
|
end
|
68
41
|
|
69
42
|
it "should return documents if the group names need to be escaped" do
|
70
|
-
RoleMapper.
|
43
|
+
allow(RoleMapper).to receive(:roles).and_return(["abc/123","cde/567"])
|
71
44
|
get :index
|
72
|
-
assigns(:document_list).count.
|
45
|
+
expect(assigns(:document_list).count).to eq @public_only_results.docs.count
|
73
46
|
end
|
74
47
|
end
|
75
48
|
end
|
76
|
-
|
49
|
+
|
77
50
|
describe "filters" do
|
78
51
|
describe "index" do
|
79
52
|
it "should trigger enforce_index_permissions" do
|
80
|
-
controller.
|
53
|
+
expect(controller).to receive(:add_access_controls_to_solr_params)
|
81
54
|
get :index
|
82
55
|
end
|
83
56
|
end
|
84
57
|
describe "show" do
|
85
58
|
it "should trigger enforce_show_permissions" do
|
86
|
-
controller.
|
87
|
-
controller.
|
88
|
-
get :show, :
|
59
|
+
allow(controller).to receive(:current_user).and_return(nil)
|
60
|
+
expect(controller).to receive(:enforce_show_permissions)
|
61
|
+
get :show, id: 'test:3'
|
89
62
|
end
|
90
63
|
end
|
91
64
|
end
|
92
|
-
|
65
|
+
|
93
66
|
end
|
@@ -60,112 +60,112 @@ describe DownloadsController do
|
|
60
60
|
context "when logged in as reader" do
|
61
61
|
before do
|
62
62
|
sign_in @user
|
63
|
-
User.
|
63
|
+
allow_any_instance_of(User).to receive(:groups).and_return([])
|
64
64
|
end
|
65
65
|
describe "#show" do
|
66
66
|
it "should default to returning default download configured by object" do
|
67
|
-
ContentHolder.
|
67
|
+
allow(ContentHolder).to receive(:default_content_ds).and_return('buzz')
|
68
68
|
get "show", :id => @obj.pid
|
69
|
-
response.
|
70
|
-
response.headers['Content-Type'].
|
71
|
-
response.headers["Content-Disposition"].
|
72
|
-
response.body.
|
69
|
+
expect(response).to be_success
|
70
|
+
expect(response.headers['Content-Type']).to eq "image/png"
|
71
|
+
expect(response.headers["Content-Disposition"]).to eq "inline; filename=\"world.png\""
|
72
|
+
expect(response.body).to eq 'fizz'
|
73
73
|
end
|
74
74
|
it "should default to returning default download configured by controller" do
|
75
|
-
DownloadsController.default_content_dsid.
|
75
|
+
expect(DownloadsController.default_content_dsid).to eq "content"
|
76
76
|
get "show", :id => @obj.pid
|
77
|
-
response.
|
78
|
-
response.headers['Content-Type'].
|
79
|
-
response.headers["Content-Disposition"].
|
80
|
-
response.body.
|
77
|
+
expect(response).to be_success
|
78
|
+
expect(response.headers['Content-Type']).to eq "image/png"
|
79
|
+
expect(response.headers["Content-Disposition"]).to eq "inline; filename=\"world.png\""
|
80
|
+
expect(response.body).to eq 'foobarfoobarfoobar'
|
81
81
|
end
|
82
82
|
|
83
83
|
context "when a specific datastream is requested" do
|
84
84
|
context "and it doesn't exist" do
|
85
85
|
it "should return :not_found when the datastream doesn't exist" do
|
86
86
|
get "show", :id => @obj.pid, :datastream_id => "thumbnail"
|
87
|
-
response.
|
87
|
+
expect(response).to be_not_found
|
88
88
|
end
|
89
89
|
end
|
90
90
|
context "and it exists" do
|
91
91
|
it "should return it" do
|
92
92
|
get "show", :id => @obj.pid, :datastream_id => "descMetadata"
|
93
|
-
response.
|
94
|
-
response.headers['Content-Type'].
|
95
|
-
response.headers["Content-Disposition"].
|
96
|
-
response.body.
|
93
|
+
expect(response).to be_success
|
94
|
+
expect(response.headers['Content-Type']).to eq "text/plain"
|
95
|
+
expect(response.headers["Content-Disposition"]).to eq "inline; filename=\"world.png\""
|
96
|
+
expect(response.body).to eq "It's a stream"
|
97
97
|
end
|
98
98
|
end
|
99
99
|
end
|
100
100
|
it "should support setting disposition to inline" do
|
101
101
|
get "show", :id => @obj.pid, :disposition => "inline"
|
102
|
-
response.
|
103
|
-
response.headers['Content-Type'].
|
104
|
-
response.headers["Content-Disposition"].
|
105
|
-
response.body.
|
102
|
+
expect(response).to be_success
|
103
|
+
expect(response.headers['Content-Type']).to eq "image/png"
|
104
|
+
expect(response.headers["Content-Disposition"]).to eq "inline; filename=\"world.png\""
|
105
|
+
expect(response.body).to eq 'foobarfoobarfoobar'
|
106
106
|
end
|
107
107
|
it "should allow you to specify filename for download" do
|
108
108
|
get "show", :id => @obj.pid, "filename" => "my%20dog.png"
|
109
|
-
response.
|
110
|
-
response.headers['Content-Type'].
|
111
|
-
response.headers["Content-Disposition"].
|
112
|
-
response.body.
|
109
|
+
expect(response).to be_success
|
110
|
+
expect(response.headers['Content-Type']).to eq "image/png"
|
111
|
+
expect(response.headers["Content-Disposition"]).to eq "inline; filename=\"my%20dog.png\""
|
112
|
+
expect(response.body).to eq 'foobarfoobarfoobar'
|
113
113
|
end
|
114
114
|
end
|
115
115
|
describe "stream" do
|
116
116
|
before do
|
117
|
-
stub_response = double
|
118
|
-
stub_response.
|
119
|
-
stub_repo = double
|
120
|
-
stub_repo.
|
117
|
+
stub_response = double
|
118
|
+
allow(stub_response).to receive(:read_body).and_yield("one1").and_yield('two2').and_yield('thre').and_yield('four')
|
119
|
+
stub_repo = double
|
120
|
+
allow(stub_repo).to receive(:datastream_dissemination).and_yield(stub_response)
|
121
121
|
stub_ds = ActiveFedora::Datastream.new
|
122
|
-
stub_ds.
|
123
|
-
stub_ds.
|
124
|
-
stub_ds.
|
125
|
-
stub_ds.
|
126
|
-
stub_ds.
|
127
|
-
stub_ds.
|
122
|
+
allow(stub_ds).to receive(:repository).and_return(stub_repo)
|
123
|
+
allow(stub_ds).to receive(:mimeType).and_return('video/webm')
|
124
|
+
allow(stub_ds).to receive(:dsSize).and_return(16)
|
125
|
+
allow(stub_ds).to receive(:dsid).and_return('webm')
|
126
|
+
allow(stub_ds).to receive(:new?).and_return(false)
|
127
|
+
allow(stub_ds).to receive(:pid).and_return('changeme:test')
|
128
128
|
stub_file = double('stub object', datastreams: {'webm' => stub_ds}, pid:'changeme:test', label: "MyVideo.webm")
|
129
|
-
ActiveFedora::Base.
|
130
|
-
controller.
|
131
|
-
controller.
|
129
|
+
expect(ActiveFedora::Base).to receive(:load_instance_from_solr).with('changeme:test').and_return(stub_file)
|
130
|
+
allow(controller).to receive(:authorize!).with(:download, stub_ds).and_return(true)
|
131
|
+
allow(controller).to receive(:log_download)
|
132
132
|
end
|
133
133
|
it "head request" do
|
134
134
|
request.env["HTTP_RANGE"] = 'bytes=0-15'
|
135
135
|
head :show, id: 'changeme:test', datastream_id: 'webm'
|
136
|
-
response.headers['Content-Length'].
|
137
|
-
response.headers['Accept-Ranges'].
|
138
|
-
response.headers['Content-Type'].
|
136
|
+
expect(response.headers['Content-Length']).to eq 16
|
137
|
+
expect(response.headers['Accept-Ranges']).to eq 'bytes'
|
138
|
+
expect(response.headers['Content-Type']).to eq 'video/webm'
|
139
139
|
end
|
140
140
|
it "should send the whole thing" do
|
141
141
|
request.env["HTTP_RANGE"] = 'bytes=0-15'
|
142
142
|
get :show, id: 'changeme:test', datastream_id: 'webm'
|
143
|
-
response.body.
|
144
|
-
response.headers["Content-Range"].
|
145
|
-
response.headers["Content-Length"].
|
146
|
-
response.headers['Accept-Ranges'].
|
147
|
-
response.headers['Content-Type'].
|
148
|
-
response.headers["Content-Disposition"].
|
149
|
-
response.status.
|
143
|
+
expect(response.body).to eq 'one1two2threfour'
|
144
|
+
expect(response.headers["Content-Range"]).to eq 'bytes 0-15/16'
|
145
|
+
expect(response.headers["Content-Length"]).to eq '16'
|
146
|
+
expect(response.headers['Accept-Ranges']).to eq 'bytes'
|
147
|
+
expect(response.headers['Content-Type']).to eq "video/webm"
|
148
|
+
expect(response.headers["Content-Disposition"]).to eq "inline; filename=\"MyVideo.webm\""
|
149
|
+
expect(response.status).to eq 206
|
150
150
|
end
|
151
151
|
it "should send the whole thing when the range is open ended" do
|
152
152
|
request.env["Range"] = 'bytes=0-'
|
153
153
|
get :show, id: 'changeme:test', datastream_id: 'webm'
|
154
|
-
response.body.
|
154
|
+
expect(response.body).to eq 'one1two2threfour'
|
155
155
|
end
|
156
156
|
it "should get a range not starting at the beginning" do
|
157
157
|
request.env["HTTP_RANGE"] = 'bytes=3-15'
|
158
158
|
get :show, id: 'changeme:test', datastream_id: 'webm'
|
159
|
-
response.body.
|
160
|
-
response.headers["Content-Range"].
|
161
|
-
response.headers["Content-Length"].
|
159
|
+
expect(response.body).to eq '1two2threfour'
|
160
|
+
expect(response.headers["Content-Range"]).to eq 'bytes 3-15/16'
|
161
|
+
expect(response.headers["Content-Length"]).to eq '13'
|
162
162
|
end
|
163
163
|
it "should get a range not ending at the end" do
|
164
164
|
request.env["HTTP_RANGE"] = 'bytes=4-11'
|
165
165
|
get :show, id: 'changeme:test', datastream_id: 'webm'
|
166
|
-
response.body.
|
167
|
-
response.headers["Content-Range"].
|
168
|
-
response.headers["Content-Length"].
|
166
|
+
expect(response.body).to eq 'two2thre'
|
167
|
+
expect(response.headers["Content-Range"]).to eq 'bytes 4-11/16'
|
168
|
+
expect(response.headers["Content-Length"]).to eq '8'
|
169
169
|
end
|
170
170
|
end
|
171
171
|
end
|
@@ -180,9 +180,9 @@ describe DownloadsController do
|
|
180
180
|
sign_in @user
|
181
181
|
end
|
182
182
|
it "should use the custom param value to retrieve the asset" do
|
183
|
-
controller.
|
183
|
+
allow(controller).to receive(:asset_param_key).and_return(:object_id)
|
184
184
|
get "show", :object_id => @obj.pid
|
185
|
-
response.
|
185
|
+
expect(response).to be_successful
|
186
186
|
end
|
187
187
|
end
|
188
188
|
|
@@ -190,8 +190,8 @@ describe DownloadsController do
|
|
190
190
|
before { sign_in @user }
|
191
191
|
context "current_ability.can? returns true / can_download? returns false" do
|
192
192
|
it "should authorize according to can_download?" do
|
193
|
-
controller.current_ability.can?(:download, @obj.datastreams['buzz']).
|
194
|
-
controller.
|
193
|
+
expect(controller.current_ability.can?(:download, @obj.datastreams['buzz'])).to be true
|
194
|
+
allow(controller).to receive(:can_download?).and_return(false)
|
195
195
|
Deprecation.silence(Hydra::Controller::DownloadBehavior) do
|
196
196
|
get :show, id: @obj, datastream_id: 'buzz'
|
197
197
|
end
|
@@ -204,12 +204,12 @@ describe DownloadsController do
|
|
204
204
|
@obj.save
|
205
205
|
end
|
206
206
|
it "should authorize according to can_download?" do
|
207
|
-
controller.current_ability.can?(:download, @obj.datastreams['buzz']).
|
208
|
-
controller.
|
207
|
+
expect(controller.current_ability.can?(:download, @obj.datastreams['buzz'])).to be false
|
208
|
+
allow(controller).to receive(:can_download?).and_return(true)
|
209
209
|
Deprecation.silence(Hydra::Controller::DownloadBehavior) do
|
210
210
|
get :show, id: @obj, datastream_id: 'buzz'
|
211
211
|
end
|
212
|
-
response.
|
212
|
+
expect(response).to be_successful
|
213
213
|
end
|
214
214
|
end
|
215
215
|
end
|
@@ -2,29 +2,32 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe BlacklightHelper do
|
4
4
|
describe "document_partial_name" do
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
let(:field_name) { 'has_model_s' }
|
6
|
+
|
7
|
+
let(:config) do
|
8
|
+
Blacklight::Configuration.new.configure do |config|
|
9
|
+
config.show.display_type_field = field_name
|
8
10
|
end
|
9
|
-
helper.stub(:blacklight_config).and_return(@config)
|
10
|
-
helper.document_partial_name('has_model_s' => ["info:fedora/afmodel:Presentation"]).should == "presentation"
|
11
|
-
helper.document_partial_name('has_model_s' => ["info:fedora/hull-cModel:genericContent"]).should == "generic_content"
|
12
11
|
end
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
|
13
|
+
before do
|
14
|
+
allow(helper).to receive(:blacklight_config).and_return(config)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should lop off everything before the first colin after the slash" do
|
18
|
+
expect(helper.document_partial_name('has_model_s' => ["info:fedora/afmodel:Presentation"])).to eq "presentation"
|
19
|
+
expect(helper.document_partial_name('has_model_s' => ["info:fedora/hull-cModel:genericContent"])).to eq "generic_content"
|
20
|
+
end
|
21
|
+
|
22
|
+
context "with a single valued field" do
|
23
|
+
let(:field_name) { 'active_fedora_model_ssi' }
|
24
|
+
it "should support single valued fields" do
|
25
|
+
expect(helper.document_partial_name('active_fedora_model_ssi' => "Chicken")).to eq "chicken"
|
16
26
|
end
|
17
|
-
helper.stub(:blacklight_config).and_return(@config)
|
18
|
-
helper.document_partial_name('active_fedora_model_ssi' => "Chicken").should == "chicken"
|
19
27
|
end
|
20
28
|
|
21
29
|
it "should handle periods" do
|
22
|
-
|
23
|
-
config.show.display_type_field = 'has_model_s'
|
24
|
-
end
|
25
|
-
helper.stub(:blacklight_config).and_return(@config)
|
26
|
-
helper.document_partial_name('has_model_s' => ["info:fedora/afmodel:text.PDF"]).should == "text_pdf"
|
30
|
+
expect(helper.document_partial_name('has_model_s' => ["info:fedora/afmodel:text.PDF"])).to eq "text_pdf"
|
27
31
|
end
|
28
32
|
end
|
29
|
-
|
30
33
|
end
|
data/spec/lib/catalog_spec.rb
CHANGED
@@ -1,16 +1,15 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Hydra::Controller::ControllerBehavior do
|
4
|
-
|
5
|
-
before
|
4
|
+
|
5
|
+
before do
|
6
6
|
class CatalogTest < ApplicationController
|
7
7
|
include Hydra::Controller::ControllerBehavior
|
8
8
|
end
|
9
|
-
@catalog = CatalogTest.new
|
10
9
|
end
|
11
10
|
|
12
11
|
it "should extend classes with the necessary Hydra modules" do
|
13
|
-
CatalogTest.included_modules.
|
12
|
+
expect(CatalogTest.included_modules).to include(Hydra::AccessControlsEnforcement)
|
14
13
|
end
|
15
|
-
|
14
|
+
|
16
15
|
end
|
@@ -1,7 +1,7 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Hydra::ModelMethods do
|
4
|
-
|
4
|
+
|
5
5
|
before :all do
|
6
6
|
class TestModel < ActiveFedora::Base
|
7
7
|
include Hydra::AccessControls::Permissions
|
@@ -10,26 +10,26 @@ describe Hydra::ModelMethods do
|
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
subject {TestModel.new }
|
13
|
+
subject { TestModel.new }
|
14
14
|
|
15
15
|
describe "apply_depositor_metadata" do
|
16
16
|
it "should add edit access" do
|
17
17
|
subject.apply_depositor_metadata('naomi')
|
18
|
-
subject.rightsMetadata.users.
|
18
|
+
expect(subject.rightsMetadata.users).to eq('naomi' => 'edit')
|
19
19
|
end
|
20
20
|
it "should not overwrite people with edit access" do
|
21
21
|
subject.rightsMetadata.permissions({:person=>"jessie"}, 'edit')
|
22
22
|
subject.apply_depositor_metadata('naomi')
|
23
|
-
subject.rightsMetadata.users.
|
23
|
+
expect(subject.rightsMetadata.users).to eq('naomi' => 'edit', 'jessie' =>'edit')
|
24
24
|
end
|
25
25
|
it "should set depositor" do
|
26
26
|
subject.apply_depositor_metadata('chris')
|
27
|
-
subject.properties.depositor.
|
27
|
+
expect(subject.properties.depositor).to eq ['chris']
|
28
28
|
end
|
29
29
|
it "should accept objects that respond_to? :user_key" do
|
30
30
|
stub_user = double(:user, :user_key=>'monty')
|
31
31
|
subject.apply_depositor_metadata(stub_user)
|
32
|
-
subject.properties.depositor.
|
32
|
+
expect(subject.properties.depositor).to eq ['monty']
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
@@ -37,9 +37,9 @@ describe Hydra::ModelMethods do
|
|
37
37
|
it "should set the dsid, mimetype and content" do
|
38
38
|
file_name = "my_file.foo"
|
39
39
|
mock_file = "File contents"
|
40
|
-
subject.
|
41
|
-
subject.
|
42
|
-
MIME::Types.
|
40
|
+
expect(subject).to receive(:add_file_datastream).with(mock_file, :label=>file_name, :mimeType=>"mymimetype", :dsid=>'bar')
|
41
|
+
expect(subject).to receive(:set_title_and_label).with( file_name, :only_if_blank=>true )
|
42
|
+
expect(MIME::Types).to receive(:of).with(file_name).and_return([double(:content_type=>"mymimetype")])
|
43
43
|
subject.add_file(mock_file, 'bar', file_name)
|
44
44
|
end
|
45
45
|
end
|
@@ -1,21 +1,16 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe ModsAsset do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
end
|
8
|
-
|
4
|
+
|
5
|
+
let(:asset) { ModsAsset.new nil }
|
6
|
+
|
9
7
|
it "Should be a kind of ActiveFedora::Base" do
|
10
|
-
|
8
|
+
expect(asset).to be_kind_of(ActiveFedora::Base)
|
11
9
|
end
|
12
|
-
|
10
|
+
|
13
11
|
it "should set up descMetadata and rightsMetadata datastreams" do
|
14
|
-
|
15
|
-
|
16
|
-
#@asset.datastreams["descMetadata"].should be_instance_of(Hydra::Datastream::ModsArticle)
|
17
|
-
@asset.datastreams.should have_key("rightsMetadata")
|
18
|
-
@asset.datastreams["rightsMetadata"].should be_instance_of(Hydra::Datastream::RightsMetadata)
|
12
|
+
expect(asset.datastreams).to have_key("rightsMetadata")
|
13
|
+
expect(asset.datastreams["rightsMetadata"]).to be_instance_of(Hydra::Datastream::RightsMetadata)
|
19
14
|
end
|
20
|
-
|
15
|
+
|
21
16
|
end
|
@@ -5,12 +5,13 @@ describe SolrDocument do
|
|
5
5
|
|
6
6
|
before do
|
7
7
|
class SolrDocumentWithHydraOverride < SolrDocument
|
8
|
-
|
8
|
+
include Hydra::Solr::Document
|
9
9
|
end
|
10
10
|
end
|
11
|
+
|
11
12
|
# this isn't a great test, but...
|
12
13
|
it "should try to cast the SolrDocument to the Fedora object" do
|
13
|
-
ActiveFedora::Base.
|
14
|
+
expect(ActiveFedora::Base).to receive(:load_instance_from_solr).with('asdfg', kind_of(SolrDocument))
|
14
15
|
SolrDocumentWithHydraOverride.new(:id => 'asdfg').to_model
|
15
16
|
end
|
16
17
|
end
|
data/spec/models/user_spec.rb
CHANGED
@@ -3,18 +3,18 @@ require 'spec_helper'
|
|
3
3
|
describe User do
|
4
4
|
|
5
5
|
describe "user_key" do
|
6
|
+
let(:user) { User.new.tap {|u| u.email = "foo@example.com"} }
|
6
7
|
before do
|
7
|
-
|
8
|
-
@user.stub(:username =>'foo')
|
8
|
+
allow(user).to receive(:username).and_return('foo')
|
9
9
|
end
|
10
10
|
|
11
11
|
it "should return email" do
|
12
|
-
|
12
|
+
expect(user.user_key).to eq 'foo@example.com'
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should return username" do
|
16
|
-
Devise.
|
17
|
-
|
16
|
+
allow(Devise).to receive(:authentication_keys).and_return([:username])
|
17
|
+
expect(user.user_key).to eq 'foo'
|
18
18
|
end
|
19
19
|
|
20
20
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -6,7 +6,6 @@ ENV["RAILS_ENV"] ||= "test"
|
|
6
6
|
require File.expand_path("config/environment", ENV['RAILS_ROOT'] || File.expand_path("../internal", __FILE__))
|
7
7
|
require 'bundler/setup'
|
8
8
|
require 'rspec/rails'
|
9
|
-
require 'rspec/autorun'
|
10
9
|
require 'hydra-core'
|
11
10
|
|
12
11
|
if ENV['COVERAGE'] and RUBY_VERSION =~ /^1.9/
|
@@ -2,7 +2,6 @@ require 'rspec/core/rake_task'
|
|
2
2
|
desc "run the hydra-core gem spec"
|
3
3
|
gem_home = File.expand_path('../../../../..', __FILE__)
|
4
4
|
RSpec::Core::RakeTask.new(:myspec) do |t|
|
5
|
-
t.
|
6
|
-
t.rspec_opts = "--colour"
|
5
|
+
t.rspec_opts = ["--colour", '--backtrace', "--default-path #{gem_home}"]
|
7
6
|
t.ruby_opts = "-I#{gem_home}/spec"
|
8
7
|
end
|
@@ -1,8 +1,6 @@
|
|
1
1
|
group :develop do
|
2
2
|
gem 'active-fedora', github: "projecthydra/active_fedora"
|
3
3
|
end
|
4
|
-
|
5
|
-
gem 'bootstrap-sass', github: 'twbs/bootstrap-sass', ref: '540ad23'
|
6
|
-
gem 'rspec-rails', '~> 3.0', group: :test
|
4
|
+
gem 'rspec-rails', '~> 3.1', group: :test
|
7
5
|
gem 'rspec-its'
|
8
6
|
|
@@ -1,7 +1,7 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe HydraHead::Engine do
|
4
4
|
it "should be a subclass of Rails::Engine" do
|
5
|
-
HydraHead::Engine.superclass.
|
5
|
+
expect(HydraHead::Engine.superclass).to eq Rails::Engine
|
6
6
|
end
|
7
7
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hydra-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.2.
|
4
|
+
version: 7.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Zumwalt, Bess Sadler, Julie Meloni, Naomi Dushay, Jessie Keck, John Scofield,
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-09-
|
12
|
+
date: 2014-09-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -51,14 +51,14 @@ dependencies:
|
|
51
51
|
requirements:
|
52
52
|
- - '='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 7.2.
|
54
|
+
version: 7.2.2
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
57
|
version_requirements: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - '='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 7.2.
|
61
|
+
version: 7.2.2
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
63
|
name: jettywrapper
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -217,7 +217,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
217
217
|
version: '0'
|
218
218
|
requirements: []
|
219
219
|
rubyforge_project:
|
220
|
-
rubygems_version: 2.
|
220
|
+
rubygems_version: 2.2.2
|
221
221
|
signing_key:
|
222
222
|
specification_version: 4
|
223
223
|
summary: Hydra-Head Rails Engine (requires Rails3)
|