hydra-core 5.0.0.pre1
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.
- data/.gitignore +2 -0
- data/Rakefile +5 -0
- data/app/helpers/blacklight_helper.rb +4 -0
- data/app/helpers/facets_helper.rb +4 -0
- data/app/helpers/hydra/blacklight_helper_behavior.rb +36 -0
- data/app/helpers/hydra/facets_helper_behavior.rb +25 -0
- data/app/models/hydra/datastream/properties.rb +24 -0
- data/app/models/mods_asset.rb +25 -0
- data/app/views/_flash_msg.html.erb +5 -0
- data/app/views/catalog/_citation.html.erb +11 -0
- data/app/views/catalog/_constraints_element.html.erb +34 -0
- data/app/views/catalog/_delete_partials/_default.html.erb +22 -0
- data/app/views/catalog/_edit_partials/_default.html.erb +57 -0
- data/app/views/catalog/_edit_partials/_default_details.html.erb +13 -0
- data/app/views/catalog/_facets.html.erb +37 -0
- data/app/views/catalog/_home.html.erb +6 -0
- data/app/views/catalog/_home_text.html.erb +4 -0
- data/app/views/catalog/_index_partials/_default.html.erb +20 -0
- data/app/views/catalog/_index_partials/_default_details.html.erb +14 -0
- data/app/views/catalog/_opensearch_response_metadata.html.erb +2 -0
- data/app/views/catalog/_show_partials/_default.html.erb +21 -0
- data/app/views/catalog/_show_partials/_default_details.html.erb +15 -0
- data/app/views/catalog/_show_partials/_facets.html.erb +52 -0
- data/app/views/catalog/_sms_form.html.erb +21 -0
- data/app/views/catalog/_sort_and_per_page.html.erb +23 -0
- data/app/views/catalog/_uva_tabs.html.erb +10 -0
- data/app/views/catalog/about.html.erb +0 -0
- data/app/views/catalog/show.html.erb +40 -0
- data/app/views/layouts/hydra-head.html.erb +47 -0
- data/config/jetty.yml +6 -0
- data/config/locales/hydra.en.yml +7 -0
- data/hydra-core.gemspec +40 -0
- data/lib/application_helper.rb +3 -0
- data/lib/generators/hydra/assets_generator.rb +50 -0
- data/lib/generators/hydra/cucumber_support_generator.rb +29 -0
- data/lib/generators/hydra/head_generator.rb +160 -0
- data/lib/generators/hydra/hyhead_fixtures_generator.rb +27 -0
- data/lib/generators/hydra/templates/catalog_controller.rb +162 -0
- data/lib/generators/hydra/templates/config/fedora.yml +14 -0
- data/lib/generators/hydra/templates/config/initializers/action_dispatch_http_upload_monkey_patch.rb +12 -0
- data/lib/generators/hydra/templates/config/initializers/hydra_config.rb +39 -0
- data/lib/generators/hydra/templates/config/role_map_cucumber.yml +10 -0
- data/lib/generators/hydra/templates/config/role_map_development.yml +12 -0
- data/lib/generators/hydra/templates/config/role_map_production.yml +2 -0
- data/lib/generators/hydra/templates/config/role_map_test.yml +15 -0
- data/lib/generators/hydra/templates/config/solr.yml +10 -0
- data/lib/generators/hydra/templates/config/solr_mappings.yml +22 -0
- data/lib/generators/hydra/templates/fedora_conf/conf/development/fedora.fcfg +946 -0
- data/lib/generators/hydra/templates/fedora_conf/conf/test/fedora.fcfg +946 -0
- data/lib/generators/hydra/templates/solr_conf/conf/schema.xml +692 -0
- data/lib/generators/hydra/templates/solr_conf/conf/solrconfig.xml +1887 -0
- data/lib/generators/hydra/templates/solr_conf/solr.xml +35 -0
- data/lib/hydra-core.rb +1 -0
- data/lib/hydra-head.rb +27 -0
- data/lib/hydra-head/engine.rb +14 -0
- data/lib/hydra-head/routes.rb +90 -0
- data/lib/hydra-head/version.rb +4 -0
- data/lib/hydra.rb +30 -0
- data/lib/hydra/catalog.rb +11 -0
- data/lib/hydra/controller.rb +25 -0
- data/lib/hydra/controller/controller_behavior.rb +39 -0
- data/lib/hydra/controller/repository_controller_behavior.rb +78 -0
- data/lib/hydra/controller/upload_behavior.rb +139 -0
- data/lib/hydra/global_configurable.rb +46 -0
- data/lib/hydra/model_methods.rb +109 -0
- data/lib/hydra/model_mixins/common_metadata.rb +25 -0
- data/lib/hydra/model_mixins/solr_document_extension.rb +24 -0
- data/lib/hydra/models/file_asset.rb +76 -0
- data/lib/hydra/repository_controller.rb +28 -0
- data/lib/hydra/solr.rb +9 -0
- data/lib/railties/active-fedora.rake +1 -0
- data/lib/railties/hydra-fixtures.rake +50 -0
- data/lib/railties/hydra_jetty.rake +53 -0
- data/spec/.gitignore +1 -0
- data/spec/controllers/catalog_controller_spec.rb +101 -0
- data/spec/controllers/catalog_valid_html_spec.rb +114 -0
- data/spec/factories.rb +11 -0
- data/spec/helpers/blacklight_helper_spec.rb +15 -0
- data/spec/helpers/facets_helper_spec.rb +15 -0
- data/spec/lib/catalog_spec.rb +16 -0
- data/spec/lib/global_configurable_spec.rb +98 -0
- data/spec/lib/model_methods_spec.rb +29 -0
- data/spec/lib/repository_controller_behavior_spec.rb +28 -0
- data/spec/models/mods_asset_spec.rb +21 -0
- data/spec/models/solr_document_spec.rb +17 -0
- data/spec/models/user_spec.rb +32 -0
- data/spec/rcov.opts +3 -0
- data/spec/spec.opts +4 -0
- data/spec/spec_helper.rb +26 -0
- data/spec/support/Gemfile +12 -0
- data/spec/support/app/models/generic_content.rb +23 -0
- data/spec/support/app/models/sample.rb +33 -0
- data/spec/support/app/models/solr_document.rb +5 -0
- data/spec/support/db/migrate/20111101221803_create_searches.rb +16 -0
- data/spec/support/lib/generators/test_app_generator.rb +33 -0
- data/spec/support/matchers/helper_matcher.rb +14 -0
- data/spec/support/matchers/solr_matchers.rb +60 -0
- data/spec/support/spec/fixtures/hydra_test_generic_content.foxml.xml +138 -0
- data/spec/support/spec/fixtures/hydrangea_fixture_mods_article1.foxml.xml +234 -0
- data/spec/unit/hydra-head-engine_spec.rb +8 -0
- data/spec/unit/hydra-head_spec.rb +8 -0
- data/tasks/hydra-head-fixtures.rake +58 -0
- data/tasks/hydra_jetty.rake +53 -0
- data/tasks/rspec.rake +53 -0
- metadata +469 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
2
|
+
|
|
3
|
+
# This uses nokogiri to check formedness. It's slightly less strict than the markup_validit
|
|
4
|
+
# currently not being used.
|
|
5
|
+
def well_formed(html)
|
|
6
|
+
begin
|
|
7
|
+
Nokogiri::XML(html.gsub("&", "&" )) { |config| config.strict } #Literal & in text are not allowed, but we don't care.
|
|
8
|
+
return "ok"
|
|
9
|
+
rescue Nokogiri::XML::SyntaxError => e
|
|
10
|
+
# Write the offensive HTML to a file in tmp/html_validity_failures with a filename based on Time.now.iso8601
|
|
11
|
+
html_failures_dir = File.expand_path(File.dirname(__FILE__) + '/../../tmp/html_validity_failures')
|
|
12
|
+
FileUtils.mkdir_p(html_failures_dir)
|
|
13
|
+
filename = Time.now.iso8601(3).gsub(":","")+".html"
|
|
14
|
+
file_path = File.join(html_failures_dir, filename)
|
|
15
|
+
file = File.open(file_path, "w")
|
|
16
|
+
file.write(html)
|
|
17
|
+
return "#{e.inspect} -- Line: #{e.line} -- Level: #{e.level} -- Code: #{e.code}. HTML Saved to RAILS_ROOT/tmp/html_validity_failures/#{filename}"
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
# This checks document for validity (if required) and well formedness
|
|
24
|
+
# Pass in a html string. IF you want to check for XHTML validity, do rake spec HTML_VALIDITY=true. Otherwise only document form is checked
|
|
25
|
+
# by nokogiri.
|
|
26
|
+
def document_check(html, html_validity=ENV["HTML_VALIDITY"])
|
|
27
|
+
if html_validity == "true" || html_validity == true
|
|
28
|
+
html.should be_xhtml_transitional
|
|
29
|
+
end
|
|
30
|
+
well_formed(html).should == "ok"
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
describe CatalogController do
|
|
35
|
+
describe "Home Page" do
|
|
36
|
+
|
|
37
|
+
it "Should have Valid HTML when not logged in" do
|
|
38
|
+
controller.stub(:current_user).and_return(nil)
|
|
39
|
+
get("index", "controller"=>"catalog")
|
|
40
|
+
document_check(response.body)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "Should have Valid HTML when I'm logged in" do
|
|
44
|
+
mock_user = FactoryGirl.build(:user, :email=>"archivist1@example.com")
|
|
45
|
+
mock_user.stub(:can_be_superuser?).and_return(true)
|
|
46
|
+
mock_user.stub(:is_being_superuser?).and_return(true)
|
|
47
|
+
|
|
48
|
+
sign_in mock_user
|
|
49
|
+
get("index", "controller"=>"catalog")
|
|
50
|
+
document_check(response.body)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
describe "Document Pages" do
|
|
55
|
+
|
|
56
|
+
before(:each) do
|
|
57
|
+
mock_user = FactoryGirl.build(:user, :email=>"archivist1@example.com")
|
|
58
|
+
mock_user.stub(:can_be_superuser?).and_return(true)
|
|
59
|
+
mock_user.stub(:is_being_superuser?).and_return(true)
|
|
60
|
+
sign_in mock_user
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
#Article Data Type
|
|
64
|
+
it "Should have valid html when in Article Edit Show" do
|
|
65
|
+
controller.session[:viewing_context] = "edit"
|
|
66
|
+
get(:show, {:id=>"hydrangea:fixture_mods_article1"}, :action=>"edit")
|
|
67
|
+
document_check(response.body)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it "Should have valid html when in Article Browse Show" do
|
|
71
|
+
|
|
72
|
+
controller.session[:viewing_context] = "browse"
|
|
73
|
+
get(:show, {:id=>"hydrangea:fixture_mods_article1"}, :action=>"browse")
|
|
74
|
+
document_check(response.body)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
#Data Set Data Type
|
|
78
|
+
it "Should have valid html when in Dataset Edit Show" do
|
|
79
|
+
controller.session[:viewing_context] = "edit"
|
|
80
|
+
get(:show, {:id=>"hydrangea:fixture_mods_dataset1"}, :action=>"edit")
|
|
81
|
+
document_check(response.body)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it "Should have valid html when in Dataset Browse Show" do
|
|
85
|
+
controller.session[:viewing_context] = "browse"
|
|
86
|
+
get(:show, {:id=>"hydrangea:fixture_mods_dataset1"}, :action=>"browse")
|
|
87
|
+
document_check(response.body)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
#APO datatype hydrus:admin_class1
|
|
91
|
+
it "Should have valid html when in Dataset Edit Show" do
|
|
92
|
+
controller.session[:viewing_context] = "edit"
|
|
93
|
+
get(:show, {:id=>"hydrus:admin_class1"}, :action=>"edit")
|
|
94
|
+
document_check(response.body)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
it "Should have valid html when in Dataset Browse Show" do
|
|
98
|
+
controller.session[:viewing_context] = "browse"
|
|
99
|
+
get(:show, {:id=>"hydrus:admin_class1"}, :action=>"browse")
|
|
100
|
+
File.open('/tmp/out.xml', 'w') { |f| f << response.body }
|
|
101
|
+
document_check(response.body)
|
|
102
|
+
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# The delete view should be the same for all data types
|
|
106
|
+
it "Should have valid html when in Dataset Delete" do
|
|
107
|
+
get(:show, {:id=>"hydrangea:fixture_mods_dataset1"}, :action=>"delete")
|
|
108
|
+
document_check(response.body)
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
end #Document pages
|
|
113
|
+
|
|
114
|
+
end
|
data/spec/factories.rb
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe BlacklightHelper do
|
|
4
|
+
describe "document_partial_name" do
|
|
5
|
+
it "Should lop off everything before the first colin after the slash" do
|
|
6
|
+
@config = Blacklight::Configuration.new.configure do |config|
|
|
7
|
+
config.show.display_type = 'has_model_s'
|
|
8
|
+
end
|
|
9
|
+
helper.stub(:blacklight_config).and_return(@config)
|
|
10
|
+
helper.document_partial_name('has_model_s' => ["info:fedora/afmodel:Presentation"]).should == "presentations"
|
|
11
|
+
helper.document_partial_name('has_model_s' => ["info:fedora/hull-cModel:genericContent"]).should == "generic_contents"
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe FacetsHelper do
|
|
4
|
+
|
|
5
|
+
describe "render_selected_facet_value" do
|
|
6
|
+
it "should be html_safe and not have the remove link" do
|
|
7
|
+
item = stub("item", :value=>'two', :hits=>9)
|
|
8
|
+
|
|
9
|
+
ret_val = helper.render_selected_facet_value("one", item)
|
|
10
|
+
ret_val.should == "<span class=\"selected\">two <span class=\"count\">(9)</span></span>"
|
|
11
|
+
ret_val.should be_html_safe
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
2
|
+
|
|
3
|
+
describe Hydra::Controller::ControllerBehavior do
|
|
4
|
+
|
|
5
|
+
before(:all) do
|
|
6
|
+
class CatalogTest < ApplicationController
|
|
7
|
+
include Hydra::Controller::ControllerBehavior
|
|
8
|
+
end
|
|
9
|
+
@catalog = CatalogTest.new
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should extend classes with the necessary Hydra modules" do
|
|
13
|
+
CatalogTest.included_modules.should include(Hydra::AccessControlsEnforcement)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
end
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
3
|
+
|
|
4
|
+
describe Hydra::GlobalConfigurable do
|
|
5
|
+
|
|
6
|
+
class TestConfig
|
|
7
|
+
extend Hydra::GlobalConfigurable
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
before(:each) do
|
|
11
|
+
TestConfig.reset_configs!
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should respond to configure" do
|
|
15
|
+
TestConfig.respond_to? :configure
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe "the default state" do
|
|
19
|
+
describe "config" do
|
|
20
|
+
it "should be a Hash" do
|
|
21
|
+
TestConfig.config.should be_a Hash
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
describe "configs[:shared]" do
|
|
25
|
+
it "should be a Hash" do
|
|
26
|
+
TestConfig.configs[:shared].should be_a Hash
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
describe "configs[:shared]" do
|
|
32
|
+
it "should not have the values of its members altered by other environments" do
|
|
33
|
+
TestConfig.configure do |config|
|
|
34
|
+
config[:key] = ":shared value"
|
|
35
|
+
end
|
|
36
|
+
TestConfig.configure(::Rails.env) do |config|
|
|
37
|
+
config[:key] = ":test value"
|
|
38
|
+
end
|
|
39
|
+
TestConfig.config[:key].should == ":test value"
|
|
40
|
+
TestConfig.configs[:shared][:key].should == ":shared value"
|
|
41
|
+
TestConfig.configs[::Rails.env][:key].should == ":test value"
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
describe "the #configure method behavior" do
|
|
46
|
+
it "requires a block" do
|
|
47
|
+
lambda{TestConfig.configure}.should raise_error(LocalJumpError)
|
|
48
|
+
end
|
|
49
|
+
it "yields a hash" do
|
|
50
|
+
TestConfig.configure{|config| config.should be_a(Hash) }
|
|
51
|
+
end
|
|
52
|
+
it "should clear the configs if reset_configs! is called" do
|
|
53
|
+
TestConfig.configure do |config|
|
|
54
|
+
config[:asdf] = 'asdf'
|
|
55
|
+
end
|
|
56
|
+
TestConfig.configs[:shared][:asdf].should == 'asdf'
|
|
57
|
+
TestConfig.reset_configs!
|
|
58
|
+
TestConfig.configs[:shared][:asdf].should == nil
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "should merge settings from the :shared environment" do
|
|
62
|
+
TestConfig.configure do |config|
|
|
63
|
+
config[:app_id] = 'Blacklight'
|
|
64
|
+
config[:mode] = :shared!
|
|
65
|
+
end
|
|
66
|
+
TestConfig.configure(::Rails.env) do |config|
|
|
67
|
+
config[:mode] = ::Rails.env
|
|
68
|
+
end
|
|
69
|
+
TestConfig.config[:app_id].should == 'Blacklight'
|
|
70
|
+
TestConfig.config[:mode].should_not == :shared!
|
|
71
|
+
TestConfig.config[:mode].should == ::Rails.env
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
describe "config" do
|
|
76
|
+
it "should return an empty Hash if nothing was configured" do
|
|
77
|
+
TestConfig.config.should == {}
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
it "should return only what is in configs[:shared] if no other environment was configured" do
|
|
81
|
+
TestConfig.configure(:shared) do |config|
|
|
82
|
+
config[:foo] = 'bar'
|
|
83
|
+
config[:baz] = 'dang'
|
|
84
|
+
end
|
|
85
|
+
TestConfig.config.should == {:foo => 'bar', :baz => 'dang'}
|
|
86
|
+
TestConfig.config.should == TestConfig.configs[:shared]
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
it "should return a merge of configs[:shared] and configs[RAILS_ENV]" do
|
|
90
|
+
TestConfig.configure(:shared) do |config|
|
|
91
|
+
config[:foo] = 'bar'
|
|
92
|
+
config[:baz] = 'dang'
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
2
|
+
|
|
3
|
+
describe Hydra::ModelMethods do
|
|
4
|
+
|
|
5
|
+
before :all do
|
|
6
|
+
class TestModel < ActiveFedora::Base
|
|
7
|
+
include Hydra::ModelMixins::CommonMetadata
|
|
8
|
+
include Hydra::ModelMethods
|
|
9
|
+
has_metadata :name => "properties", :type => Hydra::Datastream::Properties
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe "apply_depositor_metadata" do
|
|
14
|
+
subject {TestModel.new }
|
|
15
|
+
it "should add edit access" do
|
|
16
|
+
subject.apply_depositor_metadata('naomi')
|
|
17
|
+
subject.rightsMetadata.individuals.should == {'naomi' => 'edit'}
|
|
18
|
+
end
|
|
19
|
+
it "should not overwrite people with edit access" do
|
|
20
|
+
subject.rightsMetadata.permissions({:person=>"jessie"}, 'edit')
|
|
21
|
+
subject.apply_depositor_metadata('naomi')
|
|
22
|
+
subject.rightsMetadata.individuals.should == {'naomi' => 'edit', 'jessie' =>'edit'}
|
|
23
|
+
end
|
|
24
|
+
it "should set depositor" do
|
|
25
|
+
subject.apply_depositor_metadata('chris')
|
|
26
|
+
subject.properties.depositor.should == ['chris']
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Hydra::Controller::RepositoryControllerBehavior do
|
|
4
|
+
before(:all) do
|
|
5
|
+
class RepositoryControllerTest < ApplicationController
|
|
6
|
+
include Hydra::Controller::RepositoryControllerBehavior
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
subject { RepositoryControllerTest.new }
|
|
11
|
+
|
|
12
|
+
describe "load_document" do
|
|
13
|
+
it "should load the model for the pid" do
|
|
14
|
+
mock_model = mock("model")
|
|
15
|
+
subject.stub(:params).and_return( {:id => "object id"} )
|
|
16
|
+
ActiveFedora::Base.should_receive(:find).with("object id", :cast=>true).and_return(mock_model)
|
|
17
|
+
subject.send(:load_document).should == mock_model
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe "format_pid" do
|
|
22
|
+
it "convert pids into XHTML safe strings" do
|
|
23
|
+
pid = subject.format_pid("hydra:123")
|
|
24
|
+
pid.should match(/hydra_123/)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe ModsAsset do
|
|
4
|
+
|
|
5
|
+
before(:each) do
|
|
6
|
+
@asset = ModsAsset.new nil
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it "Should be a kind of ActiveFedora::Base" do
|
|
10
|
+
@asset.should be_kind_of(ActiveFedora::Base)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "should set up descMetadata and rightsMetadata datastreams" do
|
|
14
|
+
# Mods article was moved to the mods gem. Ask cbeer about this. Jcoyne 2012-07-10
|
|
15
|
+
#@asset.datastreams.should have_key("descMetadata")
|
|
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)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe SolrDocument do
|
|
4
|
+
describe "#to_model" do
|
|
5
|
+
|
|
6
|
+
before do
|
|
7
|
+
class SolrDocumentWithHydraOverride < SolrDocument
|
|
8
|
+
include Hydra::Solr::Document
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
# this isn't a great test, but...
|
|
12
|
+
it "should try to cast the SolrDocument to the Fedora object" do
|
|
13
|
+
ActiveFedora::Base.should_receive(:load_instance_from_solr).with('asdfg', kind_of(SolrDocument))
|
|
14
|
+
SolrDocumentWithHydraOverride.new(:id => 'asdfg').to_model
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe User do
|
|
4
|
+
|
|
5
|
+
describe "user_key" do
|
|
6
|
+
before do
|
|
7
|
+
@user = User.new(:email=>"foo@example.com")
|
|
8
|
+
@user.stub(:username =>'foo')
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should return email" do
|
|
12
|
+
@user.user_key.should == 'foo@example.com'
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should return username" do
|
|
16
|
+
Devise.stub(:authentication_keys =>[:username])
|
|
17
|
+
@user.user_key.should == 'foo'
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
module UserTestAttributes
|
|
25
|
+
['first_name','last_name','full_name','affiliation','photo'].each do |attr|
|
|
26
|
+
class_eval <<-EOM
|
|
27
|
+
def #{attr}
|
|
28
|
+
"test_#{attr}"
|
|
29
|
+
end
|
|
30
|
+
EOM
|
|
31
|
+
end
|
|
32
|
+
end
|
data/spec/rcov.opts
ADDED
data/spec/spec.opts
ADDED
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
2
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
3
|
+
|
|
4
|
+
ENV["RAILS_ENV"] ||= "test"
|
|
5
|
+
|
|
6
|
+
require File.expand_path("config/environment", ENV['RAILS_ROOT'] || File.expand_path("../internal", __FILE__))
|
|
7
|
+
require 'bundler/setup'
|
|
8
|
+
require 'rspec/rails'
|
|
9
|
+
require 'rspec/autorun'
|
|
10
|
+
require 'hydra-core'
|
|
11
|
+
|
|
12
|
+
if ENV['COVERAGE'] and RUBY_VERSION =~ /^1.9/
|
|
13
|
+
require 'simplecov'
|
|
14
|
+
require 'simplecov-rcov'
|
|
15
|
+
|
|
16
|
+
SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
|
|
17
|
+
SimpleCov.start
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
RSpec.configure do |config|
|
|
21
|
+
config.include Devise::TestHelpers, :type => :controller
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
|