active-fedora 3.3.2 → 4.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +21 -22
- data/History.txt +9 -0
- data/README.textile +1 -1
- data/TODO +1 -0
- data/active-fedora.gemspec +3 -3
- data/config/fedora.yml +9 -3
- data/lib/active_fedora.rb +43 -33
- data/lib/active_fedora/base.rb +80 -31
- data/lib/active_fedora/config.rb +38 -0
- data/lib/active_fedora/content_model.rb +0 -6
- data/lib/active_fedora/datastream.rb +22 -0
- data/lib/active_fedora/delegating.rb +24 -25
- data/lib/active_fedora/digital_object.rb +2 -1
- data/lib/active_fedora/file_management.rb +1 -0
- data/lib/active_fedora/fixture_exporter.rb +1 -1
- data/lib/active_fedora/fixture_loader.rb +3 -3
- data/lib/active_fedora/metadata_datastream.rb +6 -0
- data/lib/active_fedora/model.rb +24 -5
- data/lib/active_fedora/nokogiri_datastream.rb +1 -0
- data/lib/active_fedora/ntriples_rdf_datastream.rb +0 -1
- data/lib/active_fedora/persistence.rb +2 -1
- data/lib/active_fedora/predicates.rb +27 -27
- data/lib/active_fedora/rdf_datastream.rb +104 -30
- data/lib/active_fedora/rels_ext_datastream.rb +14 -10
- data/lib/active_fedora/rubydora_connection.rb +4 -27
- data/lib/active_fedora/service_definitions.rb +2 -3
- data/lib/active_fedora/solr_digital_object.rb +22 -8
- data/lib/active_fedora/solr_service.rb +1 -1
- data/lib/active_fedora/unsaved_digital_object.rb +1 -4
- data/lib/active_fedora/version.rb +1 -1
- data/lib/tasks/active_fedora.rake +6 -6
- data/lib/tasks/active_fedora_dev.rake +0 -1
- data/spec/fixtures/mixed_rdf_descMetadata.nt +6 -0
- data/spec/fixtures/rails_root/config/fedora.yml +3 -1
- data/spec/fixtures/sharded_fedora.yml +11 -0
- data/spec/integration/base_file_management_spec.rb +6 -3
- data/spec/integration/base_find_by_fields_spec.rb +15 -16
- data/spec/integration/base_spec.rb +11 -178
- data/spec/integration/datastream_collections_spec.rb +1 -1
- data/spec/integration/full_featured_model_spec.rb +1 -2
- data/spec/integration/model_spec.rb +8 -9
- data/spec/integration/mods_article_integration_spec.rb +1 -1
- data/spec/integration/nokogiri_datastream_spec.rb +1 -1
- data/spec/integration/ntriples_datastream_spec.rb +80 -0
- data/spec/integration/rels_ext_datastream_spec.rb +0 -1
- data/spec/integration/semantic_node_spec.rb +18 -26
- data/spec/integration/solr_service_spec.rb +51 -1
- data/{lib/active_fedora → spec}/samples/hydra-mods_article_datastream.rb +0 -0
- data/{lib/active_fedora → spec}/samples/hydra-rights_metadata_datastream.rb +0 -0
- data/{lib/active_fedora → spec}/samples/marpa-dc_datastream.rb +0 -0
- data/spec/samples/models/hydrangea_article.rb +2 -2
- data/spec/samples/samples.rb +2 -0
- data/{lib/active_fedora → spec}/samples/special_thing.rb +3 -3
- data/spec/spec_helper.rb +1 -0
- data/spec/unit/active_fedora_spec.rb +17 -50
- data/spec/unit/base_extra_spec.rb +4 -0
- data/spec/unit/base_file_management_spec.rb +5 -2
- data/spec/unit/base_spec.rb +692 -628
- data/spec/unit/config_spec.rb +19 -0
- data/spec/unit/content_model_spec.rb +1 -24
- data/spec/unit/datastream_collections_spec.rb +11 -14
- data/spec/unit/datastreams_spec.rb +49 -54
- data/spec/unit/model_spec.rb +24 -53
- data/spec/unit/nokogiri_datastream_spec.rb +6 -1
- data/spec/unit/ntriples_datastream_spec.rb +73 -0
- data/spec/unit/qualified_dublin_core_datastream_spec.rb +1 -1
- data/spec/unit/relationships_spec.rb +6 -3
- data/spec/unit/rels_ext_datastream_spec.rb +19 -0
- data/spec/unit/rubydora_connection_spec.rb +2 -56
- data/spec/unit/solr_service_spec.rb +3 -1
- data/spec/unit/unsaved_digital_object_spec.rb +2 -2
- metadata +46 -33
- data/lib/active_fedora/dcrdf_datastream.rb +0 -11
- data/lib/active_fedora/relationship.rb +0 -47
- data/lib/active_fedora/samples.rb +0 -3
- data/spec/integration/dc_rdf_datastream_spec.rb +0 -24
- data/spec/unit/dc_rdf_datastream_spec.rb +0 -50
- data/spec/unit/relationship_spec.rb +0 -92
@@ -57,7 +57,8 @@ module ActiveFedora
|
|
57
57
|
end
|
58
58
|
|
59
59
|
def self.short_predicate(predicate)
|
60
|
-
|
60
|
+
# for this regex to short-circuit correctly, namespaces must be sorted into descending order by length
|
61
|
+
if match = /^(#{Predicates.predicate_mappings.keys.sort.reverse.join('|')})(.+)$/.match(predicate.to_str)
|
61
62
|
namespace = match[1]
|
62
63
|
predicate = match[2]
|
63
64
|
pred = Predicates.predicate_mappings[namespace].invert[predicate]
|
@@ -78,18 +79,21 @@ module ActiveFedora
|
|
78
79
|
# ====Warning
|
79
80
|
# Solr must be synchronized with RELS-EXT data in Fedora.
|
80
81
|
def from_solr(solr_doc)
|
82
|
+
profile_from_solr(solr_doc)
|
81
83
|
#cycle through all possible predicates
|
82
84
|
model.relationships_loaded = true
|
83
|
-
Predicates.predicate_mappings
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
value.
|
89
|
-
|
85
|
+
Predicates.predicate_mappings.each_pair do |namespace,predicates|
|
86
|
+
predicates.keys.each do |predicate|
|
87
|
+
predicate_symbol = ActiveFedora::SolrService.solr_name(predicate, :symbol)
|
88
|
+
value = (solr_doc[predicate_symbol].nil? ? solr_doc[predicate_symbol.to_s]: solr_doc[predicate_symbol])
|
89
|
+
unless value.nil?
|
90
|
+
if value.is_a? Array
|
91
|
+
value.each do |obj|
|
92
|
+
model.add_relationship(predicate, obj)
|
93
|
+
end
|
94
|
+
else
|
95
|
+
model.add_relationship(predicate, value)
|
90
96
|
end
|
91
|
-
else
|
92
|
-
model.add_relationship(predicate, value)
|
93
97
|
end
|
94
98
|
end
|
95
99
|
end
|
@@ -1,29 +1,16 @@
|
|
1
|
-
require 'singleton'
|
2
1
|
require 'rubydora'
|
3
2
|
|
4
3
|
module ActiveFedora
|
5
4
|
class RubydoraConnection
|
6
|
-
include Singleton
|
7
5
|
|
8
|
-
attr_accessor :options
|
6
|
+
attr_accessor :options, :connection
|
9
7
|
|
10
|
-
def
|
8
|
+
def initialize(params={})
|
11
9
|
params = params.dup
|
12
|
-
|
13
|
-
|
14
|
-
instance.options = params
|
15
|
-
instance.connect force
|
16
|
-
instance
|
10
|
+
self.options = params
|
11
|
+
connect
|
17
12
|
end
|
18
13
|
|
19
|
-
def connection
|
20
|
-
return @connection if @connection
|
21
|
-
ActiveFedora.load_configs
|
22
|
-
ActiveFedora::RubydoraConnection.connect(ActiveFedora.config_for_environment)
|
23
|
-
@connection
|
24
|
-
end
|
25
|
-
|
26
|
-
|
27
14
|
def connect(force=false)
|
28
15
|
return unless @connection.nil? or force
|
29
16
|
allowable_options = [:url, :user, :password, :timeout, :open_timeout, :ssl_client_cert, :ssl_client_key, :validateChecksum]
|
@@ -31,15 +18,5 @@ module ActiveFedora
|
|
31
18
|
#puts "CLIENT OPTS #{client_options.inspect}"
|
32
19
|
@connection = Rubydora.connect client_options
|
33
20
|
end
|
34
|
-
|
35
|
-
def nextid(attrs={})
|
36
|
-
d = REXML::Document.new(connection.next_pid(:namespace=>attrs[:namespace]))
|
37
|
-
d.elements['//pid'].text
|
38
|
-
end
|
39
|
-
|
40
|
-
def find_model(pid, klass)
|
41
|
-
klass.allocate.init_with(DigitalObject.find(klass, pid))
|
42
|
-
end
|
43
|
-
|
44
21
|
end
|
45
22
|
end
|
@@ -59,7 +59,7 @@ module ServiceDefinitions
|
|
59
59
|
# inject methods by symbol key
|
60
60
|
def add_sdef_methods! sdef_pid
|
61
61
|
unless sdef_pid == "fedora-system:3"
|
62
|
-
content = ActiveFedora::
|
62
|
+
content = ActiveFedora::Base.connection_for_pid(sdef_pid).datastream_dissemination(:pid=>sdef_pid, :dsid=>"METHODMAP")
|
63
63
|
method_map = Nokogiri::XML.parse(content)
|
64
64
|
methods = method_map.xpath('//fmm:Method').collect { |method|
|
65
65
|
method["operationName"]
|
@@ -78,9 +78,8 @@ module ServiceDefinitions
|
|
78
78
|
define_method(method_key) { |*args, &block|
|
79
79
|
opts = args[0] || {}
|
80
80
|
opts = opts.merge({:pid => pid, :sdef => sdef_pid, :method => method_name })
|
81
|
-
repo = ActiveFedora::RubydoraConnection.instance.connection
|
82
81
|
# dispatch to the dissemination method on restAPI client
|
83
|
-
|
82
|
+
ActiveFedora::Base.connection_for_pid(pid).dissemination opts, &block
|
84
83
|
}
|
85
84
|
end
|
86
85
|
end
|
@@ -1,19 +1,33 @@
|
|
1
1
|
module ActiveFedora
|
2
2
|
class SolrDigitalObject
|
3
|
-
|
3
|
+
attr_reader :pid, :label, :state, :ownerId, :profile, :datastreams
|
4
4
|
|
5
|
-
def initialize(
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
def initialize(solr_doc)
|
6
|
+
@pid = solr_doc[SOLR_DOCUMENT_ID]
|
7
|
+
profile_attrs = solr_doc.keys.select { |k| k =~ /^objProfile_/ }
|
8
|
+
@profile = {}
|
9
|
+
profile_attrs.each do |key|
|
10
|
+
attr_name = key.split(/_/)[1..-2].join('_')
|
11
|
+
@profile[attr_name] = solr_doc[key].to_s
|
12
|
+
end
|
13
|
+
@profile['objCreateDate'] ||= Time.now.xmlschema
|
14
|
+
@profile['objLastModDate'] ||= @profile['objCreateDate']
|
15
|
+
|
16
|
+
@datastreams = {}
|
17
|
+
@label = @profile['objLabel']
|
18
|
+
@state = @profile['objState']
|
19
|
+
@ownerId = @profile['objOwnerId']
|
9
20
|
end
|
10
21
|
|
22
|
+
def freeze
|
23
|
+
@profile.freeze
|
24
|
+
@datastreams.freeze
|
25
|
+
self
|
26
|
+
end
|
27
|
+
|
11
28
|
def new?
|
12
29
|
false
|
13
30
|
end
|
14
31
|
|
15
|
-
def profile
|
16
|
-
attributes
|
17
|
-
end
|
18
32
|
end
|
19
33
|
end
|
@@ -42,7 +42,7 @@ module ActiveFedora
|
|
42
42
|
if opts[:load_from_solr]
|
43
43
|
results << classname.load_instance_from_solr(hit[SOLR_DOCUMENT_ID])
|
44
44
|
else
|
45
|
-
results <<
|
45
|
+
results << classname.find(hit[SOLR_DOCUMENT_ID])
|
46
46
|
end
|
47
47
|
end
|
48
48
|
return results
|
@@ -19,7 +19,7 @@ namespace :repo do
|
|
19
19
|
rescue Errno::ECONNREFUSED => e
|
20
20
|
puts "Can't connect to Fedora! Are you sure jetty is running?"
|
21
21
|
end
|
22
|
-
puts "Deleted '#{pid}' from #{ActiveFedora.
|
22
|
+
puts "Deleted '#{pid}' from #{ActiveFedora::Base.connection_for_pid(pid).client.url}"
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
@@ -40,7 +40,7 @@ namespace :repo do
|
|
40
40
|
rescue ActiveFedora::ObjectNotFoundError
|
41
41
|
# The object has already been deleted (or was never created). Do nothing.
|
42
42
|
end
|
43
|
-
puts "Deleted '#{pid}' from #{ActiveFedora.
|
43
|
+
puts "Deleted '#{pid}' from #{ActiveFedora::Base.connection_for_pid(pid).client.url}"
|
44
44
|
i += 1
|
45
45
|
end
|
46
46
|
end
|
@@ -51,7 +51,7 @@ namespace :repo do
|
|
51
51
|
puts "You must specify a valid pid. Example: rake repo:export pid=demo:12"
|
52
52
|
else
|
53
53
|
pid = ENV["pid"]
|
54
|
-
puts "Exporting '#{pid}' from #{ActiveFedora.
|
54
|
+
puts "Exporting '#{pid}' from #{ActiveFedora::Base.connection_for_pid(pid).client.url}"
|
55
55
|
if !ENV["path"].nil?
|
56
56
|
path = ENV["path"]
|
57
57
|
else
|
@@ -78,12 +78,12 @@ namespace :repo do
|
|
78
78
|
end
|
79
79
|
|
80
80
|
if !filename.nil?
|
81
|
-
puts "Loading '#{filename}' in #{ActiveFedora.
|
81
|
+
puts "Loading '#{filename}' in #{ActiveFedora::Base.connection_for_pid(pid).client.url}"
|
82
82
|
file = File.new(filename, "r")
|
83
|
-
result = ActiveFedora::
|
83
|
+
result = ActiveFedora::Base.connection_for_pid(pid).ingest(:file=>file.read)
|
84
84
|
if result
|
85
85
|
puts "The object has been loaded as #{result.body}"
|
86
|
-
|
86
|
+
if pid.nil?
|
87
87
|
pid = result.body
|
88
88
|
end
|
89
89
|
solrizer = Solrizer::Fedora::Solrizer.new
|
@@ -82,7 +82,6 @@ desc 'Set up ActiveFedora environment. !! Only for use while working within a w
|
|
82
82
|
task :environment do
|
83
83
|
puts "Initializing ActiveFedora Rake environment. This should only be called when working within a workign copy of the active-fedora code."
|
84
84
|
require "#{APP_ROOT}/spec/samples/models/hydrangea_article"
|
85
|
-
require 'active_fedora/samples'
|
86
85
|
end
|
87
86
|
|
88
87
|
end
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<info:fedora/test:1> <http://purl.org/dc/terms/created> "2010-12-31"^^<http://www.w3.org/2001/XMLSchema#date> .
|
2
|
+
<info:fedora/test:1> <http://purl.org/dc/terms/title> "Title of work" .
|
3
|
+
<info:fedora/test:1> <http://purl.org/dc/terms/publisher> "Penn State" .
|
4
|
+
<info:fedora/test:1> <http://xmlns.com/foaf/0.1/based_near> "New York, NY, US" .
|
5
|
+
<info:fedora/test:1> <http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://google.com/> .
|
6
|
+
|
@@ -3,18 +3,21 @@ require 'spec_helper'
|
|
3
3
|
describe ActiveFedora::Base do
|
4
4
|
|
5
5
|
before(:each) do
|
6
|
-
|
6
|
+
class FileMgmt < ActiveFedora::Base
|
7
|
+
include ActiveFedora::FileManagement
|
8
|
+
end
|
9
|
+
@test_container = FileMgmt.new
|
7
10
|
@test_container.add_relationship(:has_collection_member, "info:fedora/foo:2")
|
8
11
|
@test_container.save
|
9
12
|
end
|
10
13
|
|
11
14
|
after(:each) do
|
12
15
|
@test_container.delete
|
16
|
+
Object.send(:remove_const, :FileMgmt)
|
13
17
|
end
|
14
18
|
|
15
19
|
it "should persist and re-load collection members" do
|
16
|
-
|
17
|
-
container_copy = ActiveFedora::Base.load_instance(@test_container.pid)
|
20
|
+
container_copy = FileMgmt.load_instance(@test_container.pid)
|
18
21
|
container_copy.collection_members(:response_format=>:id_array).should == ["foo:2"]
|
19
22
|
end
|
20
23
|
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require "active_fedora/samples"
|
3
2
|
|
4
3
|
class MockAFBaseQuerySolr < ActiveFedora::Base
|
5
4
|
has_metadata :name => "properties", :type => ActiveFedora::MetadataDatastream do |m|
|
@@ -24,29 +23,29 @@ describe ActiveFedora::Base do
|
|
24
23
|
@test_object = ActiveFedora::Base.new
|
25
24
|
#get objects into fedora and solr
|
26
25
|
@test_object2 = MockAFBaseQuerySolr.new
|
27
|
-
attributes = {
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
26
|
+
attributes = {[:holding_id]=>{0=>"Holding 1"},
|
27
|
+
[:language]=>{0=>"Italian"},
|
28
|
+
[:creator]=>{0=>"Linguist, A."},
|
29
|
+
[:geography]=>{0=>"Italy"},
|
30
|
+
[:title]=>{0=>"Italian and Spanish: A Comparison of Common Phrases"}}
|
32
31
|
@test_object2.update_indexed_attributes(attributes)
|
33
32
|
@test_object2.save
|
34
33
|
|
35
34
|
@test_object3 = MockAFBaseQuerySolr.new
|
36
|
-
attributes = {
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
35
|
+
attributes = {[:holding_id]=>{0=>"Holding 2"},
|
36
|
+
[:language]=>{0=>"Spanish;Latin"},
|
37
|
+
[:creator]=>{0=>"Linguist, A."},
|
38
|
+
[:geography]=>{0=>"Spain"},
|
39
|
+
[:title]=>{0=>"A study of the evolution of Spanish from Latin"}}
|
41
40
|
@test_object3.update_indexed_attributes(attributes)
|
42
41
|
@test_object3.save
|
43
42
|
|
44
43
|
@test_object4 = MockAFBaseQuerySolr.new
|
45
|
-
attributes = {
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
44
|
+
attributes = {[:holding_id]=>{0=>"Holding 3"},
|
45
|
+
[:language]=>{0=>"Spanish;Latin"},
|
46
|
+
[:creator]=>{0=>"Linguist, A."},
|
47
|
+
[:geography]=>{0=>"Spain"},
|
48
|
+
[:title]=>{0=>"An obscure look into early nomadic tribes of Spain"}}
|
50
49
|
@test_object4.update_indexed_attributes(attributes)
|
51
50
|
@test_object4.save
|
52
51
|
|
@@ -28,7 +28,6 @@ end
|
|
28
28
|
|
29
29
|
describe ActiveFedora::Base do
|
30
30
|
before :all do
|
31
|
-
ActiveSupport::Deprecation.stubs(:warn).with("Deprecation: Relationships will not be included by default in the next version. To use has_relationship add 'include ActiveFedora::Relationships' to your model")
|
32
31
|
class MockAFBaseRelationship < ActiveFedora::Base
|
33
32
|
include ActiveFedora::FileManagement
|
34
33
|
has_relationship "testing", :has_part, :type=>MockAFBaseRelationship
|
@@ -42,6 +41,7 @@ describe ActiveFedora::Base do
|
|
42
41
|
end
|
43
42
|
|
44
43
|
class MockAFBaseFromSolr < ActiveFedora::Base
|
44
|
+
include ActiveFedora::Relationships
|
45
45
|
has_relationship "testing", :has_part, :type=>MockAFBaseFromSolr
|
46
46
|
has_relationship "testing2", :has_member, :type=>MockAFBaseFromSolr
|
47
47
|
has_relationship "testing_inbound", :has_part, :type=>MockAFBaseFromSolr, :inbound=>true
|
@@ -99,10 +99,19 @@ describe ActiveFedora::Base do
|
|
99
99
|
@test_object.should have(0).errors
|
100
100
|
@test_object.pid.should_not be_nil
|
101
101
|
end
|
102
|
+
end
|
102
103
|
|
104
|
+
describe '.assign_pid' do
|
105
|
+
it "should get nextid" do
|
106
|
+
one = ActiveFedora::Base.assign_pid(ActiveFedora::UnsavedDigitalObject.new(ActiveFedora::Base, 'changeme'))
|
107
|
+
two = ActiveFedora::Base.assign_pid(ActiveFedora::UnsavedDigitalObject.new(ActiveFedora::Base, 'changeme'))
|
108
|
+
one = one.gsub('changeme:', '').to_i
|
109
|
+
two = two.gsub('changeme:', '').to_i
|
110
|
+
two.should == one + 1
|
111
|
+
end
|
103
112
|
end
|
104
113
|
|
105
|
-
describe "
|
114
|
+
describe "#save" do
|
106
115
|
before(:each) do
|
107
116
|
@test_object2 = ActiveFedora::Base.new
|
108
117
|
end
|
@@ -661,180 +670,4 @@ describe ActiveFedora::Base do
|
|
661
670
|
|
662
671
|
end
|
663
672
|
end
|
664
|
-
|
665
|
-
# describe '#load_instance_from_solr' do
|
666
|
-
# it 'should populate an instance of an ActiveFedora::Base object using solr instead of Fedora' do
|
667
|
-
#
|
668
|
-
# @test_object2 = MockAFBaseFromSolr.new
|
669
|
-
# # @test_object2.new_object = true
|
670
|
-
# attributes = {"holding_id"=>{0=>"Holding 1"},
|
671
|
-
# "language"=>{0=>"Italian"},
|
672
|
-
# "creator"=>{0=>"Linguist, A."},
|
673
|
-
# "geography"=>{0=>"Italy"},
|
674
|
-
# "title"=>{0=>"Italian and Spanish: A Comparison of Common Phrases"}}
|
675
|
-
# @test_object2.update_indexed_attributes(attributes)
|
676
|
-
# @test_object2.save
|
677
|
-
# @test_object3 = MockAFBaseFromSolr.new
|
678
|
-
# # @test_object3.new_object = true
|
679
|
-
# attributes = {"holding_id"=>{0=>"Holding 2"},
|
680
|
-
# "language"=>{0=>"Spanish;Latin"},
|
681
|
-
# "creator"=>{0=>"Linguist, A."},
|
682
|
-
# "geography"=>{0=>"Spain"},
|
683
|
-
# "title"=>{0=>"A study of the evolution of Spanish from Latin"}}
|
684
|
-
# @test_object3.update_indexed_attributes(attributes)
|
685
|
-
# @test_object3.save
|
686
|
-
# @test_object4 = MockAFBaseFromSolr.new
|
687
|
-
# attributes = {"holding_id"=>{0=>"Holding 3"},
|
688
|
-
# "language"=>{0=>"Spanish;Latin"},
|
689
|
-
# "creator"=>{0=>"Linguist, A."},
|
690
|
-
# "geography"=>{0=>"Spain"},
|
691
|
-
# "title"=>{0=>"An obscure look into early nomadic tribes of Spain"}}
|
692
|
-
# @test_object4.update_indexed_attributes(attributes)
|
693
|
-
# # @test_object4.new_object = true
|
694
|
-
# @test_object4.save
|
695
|
-
# @test_object5 = MockAFBaseFromSolr.new
|
696
|
-
# # @test_object5.new_object = true
|
697
|
-
# @test_object5.save
|
698
|
-
#
|
699
|
-
# #append to named relationship 'testing'
|
700
|
-
# @test_object2.testing_append(@test_object3)
|
701
|
-
# @test_object2.testing2_append(@test_object4)
|
702
|
-
# @test_object5.testing_append(@test_object2)
|
703
|
-
# @test_object5.testing2_append(@test_object3)
|
704
|
-
# @test_object2.save
|
705
|
-
# @test_object5.save
|
706
|
-
# model_rel = MockAFBaseFromSolr.to_class_uri
|
707
|
-
# #check inbound correct, testing goes to :has_part and testing2 goes to :has_member
|
708
|
-
# test_from_solr_object2 = MockAFBaseFromSolr.load_instance_from_solr(@test_object2.pid)
|
709
|
-
# test_from_solr_object3 = MockAFBaseFromSolr.load_instance_from_solr(@test_object3.pid)
|
710
|
-
# test_from_solr_object4 = MockAFBaseFromSolr.load_instance_from_solr(@test_object4.pid)
|
711
|
-
# test_from_solr_object5 = MockAFBaseFromSolr.load_instance_from_solr(@test_object5.pid)
|
712
|
-
#
|
713
|
-
# # need to check pid, system create and system modify
|
714
|
-
# test_from_solr_object2.pid.should == @test_object2.pid
|
715
|
-
# test_from_solr_object3.pid.should == @test_object3.pid
|
716
|
-
# test_from_solr_object4.pid.should == @test_object4.pid
|
717
|
-
# test_from_solr_object5.pid.should == @test_object5.pid
|
718
|
-
#
|
719
|
-
# Time.parse(test_from_solr_object2.create_date).should == Time.parse(@test_object2.create_date)
|
720
|
-
# Time.parse(test_from_solr_object3.create_date).should == Time.parse(@test_object3.create_date)
|
721
|
-
# Time.parse(test_from_solr_object4.create_date).should == Time.parse(@test_object4.create_date)
|
722
|
-
# Time.parse(test_from_solr_object5.create_date).should == Time.parse(@test_object5.create_date)
|
723
|
-
#
|
724
|
-
# Time.parse(test_from_solr_object2.modified_date).should == Time.parse(@test_object2.modified_date)
|
725
|
-
# Time.parse(test_from_solr_object3.modified_date).should == Time.parse(@test_object3.modified_date)
|
726
|
-
# Time.parse(test_from_solr_object4.modified_date).should == Time.parse(@test_object4.modified_date)
|
727
|
-
# Time.parse(test_from_solr_object5.modified_date).should == Time.parse(@test_object5.modified_date)
|
728
|
-
#
|
729
|
-
# # need to test outbound and inbound relationships
|
730
|
-
# test_from_solr_object2.relationships(false).should == {:self=>{:has_model=>[model_rel],
|
731
|
-
# :has_part=>[@test_object3],
|
732
|
-
# :has_member=>[@test_object4]},
|
733
|
-
# :inbound=>{:has_part=>[@test_object5]}}
|
734
|
-
# test_from_solr_object2.relationships_by_name(false).should == {:self=>{"testing"=>[@test_object3],"testing2"=>[@test_object4],
|
735
|
-
# "collection_members"=>[],"part_of"=>[],"parts_outbound"=>[@test_object3]},
|
736
|
-
# :inbound=>{"testing_inbound"=>[@test_object5],"testing_inbound2"=>[],"parts_inbound"=>[]}}
|
737
|
-
# test_from_solr_object3.relationships(false).should == {:self=>{:has_model=>[model_rel]},
|
738
|
-
# :inbound=>{:has_part=>[@test_object2],
|
739
|
-
# :has_member=>[@test_object5]}}
|
740
|
-
# test_from_solr_object3.relationships_by_name(false).should == {:self=>{"testing"=>[],"testing2"=>[], "collection_members"=>[],"part_of"=>[],"parts_outbound"=>[]},
|
741
|
-
# :inbound=>{"testing_inbound"=>[@test_object2],"testing_inbound2"=>[@test_object5], "parts_inbound"=>[]}}
|
742
|
-
# test_from_solr_object4.relationships(false).should == {:self=>{:has_model=>[model_rel]},
|
743
|
-
# :inbound=>{:has_member=>[@test_object2]}}
|
744
|
-
# test_from_solr_object4.relationships_by_name(false).should == {:inbound=>{"parts_inbound"=>[], "testing_inbound"=>[], "testing_inbound2"=>[@test_object2]}, :self=>{"testing2"=>[], "collection_members"=>[], "part_of"=>[], "testing"=>[], "parts_outbound"=>[]}}
|
745
|
-
# test_from_solr_object5.relationships(false).should == {:self=>{:has_model=>[model_rel],
|
746
|
-
# :has_part=>[@test_object2],
|
747
|
-
# :has_member=>[@test_object3]},
|
748
|
-
# :inbound=>{}}
|
749
|
-
# test_from_solr_object5.relationships_by_name(false).should == {:inbound=>{"parts_inbound"=>[], "testing_inbound"=>[], "testing_inbound2"=>[]}, :self=>{"testing2"=>[@test_object3], "collection_members"=>[], "part_of"=>[], "testing"=>[@test_object2], "parts_outbound"=>[@test_object2]}}
|
750
|
-
# #all inbound should now be empty if no parameter supplied to relationships
|
751
|
-
# test_from_solr_object2.relationships.should == {:self=>{:has_part=>[@test_object3],:has_member=>[@test_object4],:has_model=>[model_rel]}}
|
752
|
-
# test_from_solr_object2.relationships_by_name.should == {:self=>{"testing2"=>[@test_object4], "collection_members"=>[], "part_of"=>[], "testing"=>[@test_object3], "parts_outbound"=>[@test_object3]}}
|
753
|
-
# test_from_solr_object3.relationships.should == {:self=>{:has_model=>[model_rel]}}
|
754
|
-
# test_from_solr_object3.relationships_by_name.should == {:self=>{"testing2"=>[], "collection_members"=>[], "part_of"=>[], "testing"=>[], "parts_outbound"=>[]}}
|
755
|
-
# test_from_solr_object4.relationships.should == {:self=>{:has_model=>[model_rel]}}
|
756
|
-
# test_from_solr_object4.relationships_by_name.should == {:self=>{"testing2"=>[], "collection_members"=>[], "part_of"=>[], "testing"=>[], "parts_outbound"=>[]}}
|
757
|
-
# test_from_solr_object5.relationships.should == {:self=>{:has_model=>[model_rel],
|
758
|
-
# :has_part=>[@test_object2],
|
759
|
-
# :has_member=>[@test_object3]}}
|
760
|
-
# test_from_solr_object5.relationships_by_name.should == {:self=>{"testing2"=>[@test_object3], "collection_members"=>[], "part_of"=>[], "testing"=>[@test_object2], "parts_outbound"=>[@test_object2]}}
|
761
|
-
# # need to check metadata
|
762
|
-
# test_from_solr_object2.fields[:language][:values].should == ["Italian"]
|
763
|
-
# test_from_solr_object2.fields[:creator][:values].should == ["Linguist, A."]
|
764
|
-
# test_from_solr_object2.fields[:geography][:values].should == ["Italy"]
|
765
|
-
# test_from_solr_object2.fields[:title][:values].should == ["Italian and Spanish: A Comparison of Common Phrases"]
|
766
|
-
# test_from_solr_object2.fields[:holding_id][:values].should == ["Holding 1"]
|
767
|
-
#
|
768
|
-
# test_from_solr_object3.fields[:language][:values].should == ["Spanish;Latin"]
|
769
|
-
# test_from_solr_object3.fields[:creator][:values].should == ["Linguist, A."]
|
770
|
-
# test_from_solr_object3.fields[:geography][:values].should == ["Spain"]
|
771
|
-
# test_from_solr_object3.fields[:title][:values].should == ["A study of the evolution of Spanish from Latin"]
|
772
|
-
# test_from_solr_object3.fields[:holding_id][:values].should == ["Holding 2"]
|
773
|
-
#
|
774
|
-
# test_from_solr_object4.fields[:language][:values].should == ["Spanish;Latin"]
|
775
|
-
# test_from_solr_object4.fields[:creator][:values].should == ["Linguist, A."]
|
776
|
-
# test_from_solr_object4.fields[:geography][:values].should == ["Spain"]
|
777
|
-
# test_from_solr_object4.fields[:title][:values].should == ["An obscure look into early nomadic tribes of Spain"]
|
778
|
-
# test_from_solr_object4.fields[:holding_id][:values].should == ["Holding 3"]
|
779
|
-
#
|
780
|
-
# #need to check system modified and system created values correct
|
781
|
-
# # need to implement for nokogiri datastream as well
|
782
|
-
# #false.should == true
|
783
|
-
# end
|
784
|
-
# end
|
785
|
-
#
|
786
|
-
# describe 'load_from_solr using relationship finders'
|
787
|
-
# it 'resulting finder should accept :load_from_solr as :response_format and return object instantiated using load_instance_from_solr' do
|
788
|
-
# # solr_result = mock("solr result")
|
789
|
-
# # SpecNode.create_inbound_relationship_finders("constituents", :is_constituent_of, :inbound => true)
|
790
|
-
# # local_node = SpecNode.new
|
791
|
-
# # mock_repo = mock("repo")
|
792
|
-
# # mock_repo.expects(:find_model).never
|
793
|
-
# # SpecNode.expects(:load_instance_from_solr).times(1)
|
794
|
-
# # local_node.expects(:internal_uri).returns("info:fedora/test:sample_pid")
|
795
|
-
# # ActiveFedora::SolrService.instance.conn.expects(:query).with("is_constituent_of_s:info\\:fedora/test\\:sample_pid").returns(solr_result)
|
796
|
-
# # local_node.constituents(:response_format => :solr).should equal(solr_result)
|
797
|
-
# end
|
798
|
-
#
|
799
|
-
# it 'when an object is loaded via solr instead of fedora it should automatically load objects from finders from solr as well' do
|
800
|
-
# @test_object2 = MockAFBaseFromSolr.new
|
801
|
-
# @test_object2.save
|
802
|
-
# @test_object3 = MockAFBaseFromSolr.new
|
803
|
-
# @test_object3.save
|
804
|
-
# @test_object2.testing_append(@test_object3)
|
805
|
-
# @test_object2.save
|
806
|
-
#
|
807
|
-
# test_object2_from_solr = MockAFBaseFromSolr.load_instance_from_solr(@test_object2.pid)
|
808
|
-
# test_object3_from_solr = MockAFBaseFromSolr.load_instance_from_solr(@test_object3.pid)
|
809
|
-
# MockAFBaseFromSolr.expects(:load_instance_from_solr).times(4)
|
810
|
-
# test_object2_from_solr.testing({:response_format=>:load_from_solr})
|
811
|
-
# test_object3_from_solr.testing_inbound({:response_format=>:load_from_solr})
|
812
|
-
# test_object2_from_solr.testing
|
813
|
-
# test_object3_from_solr.testing_inbound
|
814
|
-
# end
|
815
|
-
#
|
816
|
-
# it 'when a load_from_solr is not set it should not call load_instance_from_solr for finders unless passing option in' do
|
817
|
-
# @test_object2 = MockAFBaseFromSolr.new
|
818
|
-
# @test_object2.save
|
819
|
-
# @test_object3 = MockAFBaseFromSolr.new
|
820
|
-
# @test_object3.save
|
821
|
-
# @test_object2.testing_append(@test_object3)
|
822
|
-
# @test_object2.save
|
823
|
-
#
|
824
|
-
# MockAFBaseFromSolr.expects(:load_instance_from_solr).never()
|
825
|
-
# @test_object2.testing
|
826
|
-
# @test_object3.testing_inbound
|
827
|
-
#
|
828
|
-
# #now try calling with option
|
829
|
-
# MockAFBaseFromSolr.expects(:load_instance_from_solr).twice()
|
830
|
-
# @test_object2.testing({:response_format=>:load_from_solr})
|
831
|
-
# @test_object3.testing_inbound({:response_format=>:load_from_solr})
|
832
|
-
#
|
833
|
-
# #now call other finder method
|
834
|
-
# MockAFBaseFromSolr.expects(:load_instance_from_solr).twice()
|
835
|
-
# @test_object2.testing_from_solr
|
836
|
-
# @test_object3.testing_inbound_from_solr
|
837
|
-
#
|
838
|
-
# end
|
839
|
-
|
840
673
|
end
|