active-fedora 3.0.7 → 3.1.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.
Files changed (67) hide show
  1. data/.rvmrc +1 -1
  2. data/Gemfile.lock +39 -10
  3. data/History.txt +0 -4
  4. data/active-fedora.gemspec +4 -3
  5. data/lib/active_fedora.rb +9 -9
  6. data/lib/active_fedora/base.rb +92 -163
  7. data/lib/active_fedora/datastream.rb +59 -60
  8. data/lib/active_fedora/datastream_hash.rb +18 -0
  9. data/lib/active_fedora/metadata_datastream.rb +3 -2
  10. data/lib/active_fedora/metadata_datastream_helper.rb +3 -15
  11. data/lib/active_fedora/model.rb +3 -3
  12. data/lib/active_fedora/nokogiri_datastream.rb +305 -302
  13. data/lib/active_fedora/qualified_dublin_core_datastream.rb +24 -19
  14. data/lib/active_fedora/rels_ext_datastream.rb +39 -37
  15. data/lib/active_fedora/rubydora_connection.rb +40 -0
  16. data/lib/active_fedora/semantic_node.rb +1 -1
  17. data/lib/active_fedora/solr_service.rb +1 -1
  18. data/lib/active_fedora/version.rb +1 -1
  19. data/lib/ruby-fedora.rb +0 -8
  20. data/lib/tasks/active_fedora.rake +14 -9
  21. data/lib/tasks/active_fedora_dev.rake +23 -40
  22. data/spec/integration/base_loader_spec.rb +4 -21
  23. data/spec/integration/base_spec.rb +300 -310
  24. data/spec/integration/bug_spec.rb +9 -10
  25. data/spec/integration/datastream_spec.rb +12 -12
  26. data/spec/integration/metadata_datastream_helper_spec.rb +7 -10
  27. data/spec/integration/model_spec.rb +3 -2
  28. data/spec/integration/rels_ext_datastream_spec.rb +9 -15
  29. data/spec/spec_helper.rb +2 -29
  30. data/spec/unit/active_fedora_spec.rb +5 -5
  31. data/spec/unit/base_cma_spec.rb +0 -7
  32. data/spec/unit/base_datastream_management_spec.rb +8 -67
  33. data/spec/unit/base_delegate_spec.rb +26 -9
  34. data/spec/unit/base_extra_spec.rb +5 -3
  35. data/spec/unit/base_file_management_spec.rb +10 -17
  36. data/spec/unit/base_named_datastream_spec.rb +76 -199
  37. data/spec/unit/base_spec.rb +152 -69
  38. data/spec/unit/content_model_spec.rb +1 -1
  39. data/spec/unit/datastream_concurrency_spec.rb +5 -4
  40. data/spec/unit/datastream_spec.rb +28 -48
  41. data/spec/unit/has_many_collection_spec.rb +2 -0
  42. data/spec/unit/inheritance_spec.rb +6 -6
  43. data/spec/unit/metadata_datastream_spec.rb +12 -28
  44. data/spec/unit/model_spec.rb +10 -10
  45. data/spec/unit/nokogiri_datastream_spec.rb +31 -33
  46. data/spec/unit/qualified_dublin_core_datastream_spec.rb +15 -15
  47. data/spec/unit/rels_ext_datastream_spec.rb +35 -29
  48. data/spec/unit/rubydora_connection_spec.rb +26 -0
  49. data/spec/unit/semantic_node_spec.rb +12 -17
  50. data/spec/unit/solr_config_options_spec.rb +13 -14
  51. data/spec/unit/solr_service_spec.rb +14 -17
  52. metadata +59 -55
  53. data/lib/fedora/base.rb +0 -38
  54. data/lib/fedora/connection.rb +0 -218
  55. data/lib/fedora/datastream.rb +0 -67
  56. data/lib/fedora/fedora_object.rb +0 -161
  57. data/lib/fedora/formats.rb +0 -30
  58. data/lib/fedora/generic_search.rb +0 -71
  59. data/lib/fedora/repository.rb +0 -298
  60. data/spec/integration/datastreams_crud_spec.rb +0 -208
  61. data/spec/integration/fedora_object_spec.rb +0 -77
  62. data/spec/integration/repository_spec.rb +0 -301
  63. data/spec/integration/rf_fedora_object_spec.rb +0 -95
  64. data/spec/unit/connection_spec.rb +0 -25
  65. data/spec/unit/fedora_object_spec.rb +0 -74
  66. data/spec/unit/repository_spec.rb +0 -143
  67. data/spec/unit/rf_datastream_spec.rb +0 -63
@@ -1,25 +0,0 @@
1
- require File.join( File.dirname(__FILE__), "../spec_helper" )
2
-
3
- require 'active_resource'
4
- require 'fedora/repository'
5
-
6
- describe Fedora::Connection do
7
- it "should be creatable w/ a surrogate id" do
8
- c = Fedora::Connection.new('http://127.0.0.1/fedora', 'fubar', 'bob')
9
- c.site.to_s.should == "http://127.0.0.1/fedora"
10
- c.format.should == 'fubar'
11
- c.surrogate.should == 'bob'
12
- end
13
- it "should set a from header if surrogate defined." do
14
- c = Fedora::Connection.new('http://127.0.0.1/fedora', ActiveResource::Formats[:xml], 'bob')
15
- h = Hash.new
16
- r= c.send(:build_request_headers,h)
17
- r['From'].should == 'bob'
18
- end
19
- it "should not set a from header if surrogate undefined." do
20
- c = Fedora::Connection.new('http://127.0.0.1/fedora' )
21
- h = Hash.new
22
- r= c.send(:build_request_headers,h)
23
- r['From'].should be_nil
24
- end
25
- end
@@ -1,74 +0,0 @@
1
- require File.join( File.dirname(__FILE__), "../spec_helper" )
2
-
3
- describe Fedora::FedoraObject do
4
-
5
- before(:each) do
6
- Fedora::Repository.register(ActiveFedora.fedora_config[:url])
7
- @test_object = Fedora::FedoraObject.new
8
- end
9
-
10
- it 'should respond to #object_xml' do
11
- Fedora::FedoraObject.should respond_to(:object_xml)
12
- end
13
- it 'hash should not have to_query) on it' do
14
- Fedora::BaseObject.new
15
- {:foo=>:bar}.to_fedora_query.should == 'foo=bar'
16
- end
17
-
18
- it 'should respond to .object_xml' do
19
- @test_object.should respond_to(:object_xml)
20
- end
21
-
22
- it "should provide .url" do
23
- @test_object.should respond_to(:url)
24
- end
25
-
26
- describe ".url" do
27
- it "should return the Repository fedora_url with /objects/pid appended" do
28
- Fedora::Repository.instance.expects(:fedora_url).returns(mock("fedora url", :scheme => "_scheme_", :host => "_host_", :port => "_port_", :path => "_path_"))
29
- @test_object.expects(:pid).returns("_PID_")
30
- @test_object.url.should == "_scheme_://_host_:_port__path_/objects/_PID_"
31
- end
32
- end
33
-
34
- describe ".label" do
35
- before(:all) do
36
- @properties = [:label, :state, :modified_date, :create_date, :owner_id]
37
- @sample_attributes = {:label => "label", :state => "state", :modified_date => "modified_date", :create_date => "create_date", :owner_id => "owner_id"}
38
- end
39
- it "should give preference to pulling from attributes hash" do
40
- @test_object.expects(:attributes).times(@properties.length*2).returns(@sample_attributes)
41
- @properties.each do |p|
42
- @test_object.send(p)
43
- end
44
- end
45
-
46
- it "should rely solely on attributes hash if new_object" do
47
- @test_object.new_object = true
48
- @test_object.expects(:properties_from_fedora).never
49
- @test_object.expects(:attributes).times(@properties.length*2).returns(@sample_attributes)
50
- @properties.each do |p|
51
- @test_object.send(p)
52
- end
53
- end
54
-
55
- it "should call properties_from_fedora if not a new_object" do
56
- @test_object.new_object = false
57
- @test_object.expects(:properties_from_fedora).times(@properties.length).returns(@sample_attributes)
58
- @test_object.expects(:attributes).times(@properties.length).returns({})
59
- @properties.each do |p|
60
- @test_object.send(p)
61
- end
62
- end
63
-
64
- end
65
-
66
- describe ".owner_id=" do
67
- it "should update the attributes hash with ownerId attribute" do
68
- @test_object.owner_id.should be_nil
69
- @test_object.owner_id="fooTest"
70
- @test_object.attributes[:ownerId].should == "fooTest"
71
- end
72
- end
73
-
74
- end
@@ -1,143 +0,0 @@
1
- require File.join( File.dirname(__FILE__), "../spec_helper" )
2
-
3
- describe Fedora::Repository do
4
-
5
- after(:all) do
6
- Fedora::Repository.register(ActiveFedora.fedora_config[:url])
7
- end
8
-
9
- it "should trim extra slash on uri" do
10
- Fedora::Repository.expects(:new).with('http://bar.baz/bat', nil)
11
- Fedora::Repository.register('http://bar.baz/bat/')
12
- Fedora::Repository.expects(:new).with('http://bar.baz/bat', nil)
13
- Fedora::Repository.register(URI.parse('http://bar.baz/bat/'))
14
- end
15
-
16
- it "should accept a url to register" do
17
- Fedora::Repository.expects(:new).with('http://bar.baz', nil).returns(stub_everything)
18
- Fedora::Repository.register('http://bar.baz').should_not be_nil
19
- z = Fedora::Repository.instance
20
- z.should_not be_nil
21
- (z === Fedora::Repository.instance).should == true
22
- end
23
-
24
- it "should initialize a repo" do
25
- Fedora::Repository.expects(:new).with('http://foo.bar', nil).returns(stub_everything)
26
- Fedora::Repository.register('http://foo.bar')
27
- z = Fedora::Repository.instance
28
- y = Fedora::Repository.instance
29
- z.should_not be_nil
30
- y.should_not be_nil
31
- (z===y).should == true
32
- end
33
-
34
- it 'should be a singleton' do
35
- Fedora::Repository.expects(:new).with('http://foo.bar',nil).returns(stub_everything)
36
- Fedora::Repository.register('http://foo.bar')
37
- a = Fedora::Repository.instance
38
- b = Fedora::Repository.instance
39
- (a === b).should == true
40
- end
41
-
42
- it "should be able to reserve an id" do
43
- bodymock = mock('body')
44
- bodymock.expects(:body).returns <<-EOS
45
- <?xml version="1.0" encoding="UTF-8"?>
46
- <pidList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.fedora.info/definitions/1/0/management/ http://www.fedora.info/definitions/1/0/objectHistory.xsd">
47
- <pid>changeme:5035</pid>
48
- </pidList>
49
- EOS
50
-
51
- Fedora::Repository.register('http://fedoraAdmin:fedoraAdmin@127.0.0.1:8080/fedora').should_not be_nil
52
- Fedora::Repository.instance.send(:connection).expects(:post).with('/fedora/management/getNextPID?xml=true').returns(bodymock)
53
- Fedora::Repository.instance.should_not be_nil
54
- Fedora::Repository.instance.nextid.should == 'changeme:5035'
55
- end
56
-
57
- it "should have attributes corresponding to the info in fedora/describe" do
58
- Fedora::Repository.register('http://foo.bar')
59
- #skipping oai_namespace_identifier and oai_delimiter
60
- %w[repository_name base_url fedora_version pid_namespace pid_delimiter].each do |attribute_name|
61
- Fedora::Repository.instance.should respond_to(attribute_name)
62
- Fedora::Repository.instance.should respond_to(attribute_name + "=")
63
- end
64
- end
65
-
66
- describe "export" do
67
- it "should call fetch_custom with the appropriate parameters" do
68
- Fedora::Repository.instance.expects(:fetch_custom).with("test:my_pid", "export", :format=>"info:fedora/fedora-system:FOXML-1.1", :context=>"archive")
69
- Fedora::Repository.instance.export("test:my_pid")
70
- end
71
- it "should support :foxml, :mets, :atom, and :atom_zip" do
72
- Fedora::Repository.instance.expects(:fetch_custom).with("test:my_pid", "export", :format=>"info:fedora/fedora-system:ATOM-1.1", :context=>"archive")
73
- Fedora::Repository.instance.expects(:fetch_custom).with("test:my_pid", "export", :format=>"info:fedora/fedora-system:ATOMZip-1.1", :context=>"archive")
74
- Fedora::Repository.instance.expects(:fetch_custom).with("test:my_pid", "export", :format=>"info:fedora/fedora-system:FOXML-1.1", :context=>"archive")
75
- Fedora::Repository.instance.expects(:fetch_custom).with("test:my_pid", "export", :format=>"info:fedora/fedora-system:METSFedoraExt-1.1", :context=>"archive")
76
-
77
- Fedora::Repository.instance.export("test:my_pid", :format=>:atom)
78
- Fedora::Repository.instance.export("test:my_pid", :format=>:atom_zip)
79
- Fedora::Repository.instance.export("test:my_pid", :format=>:foxml)
80
- Fedora::Repository.instance.export("test:my_pid", :format=>:mets)
81
- end
82
- it "should allow you to pass through the format uri as a string" do
83
- Fedora::Repository.instance.expects(:fetch_custom).with("test:my_pid", "export", :format=>"info:fedora/fedora-system:ATOMZip-1.1", :context=>"archive")
84
- Fedora::Repository.instance.export("test:my_pid", :format=>"info:fedora/fedora-system:ATOMZip-1.1")
85
- end
86
- it "should support export context" do
87
- Fedora::Repository.instance.expects(:fetch_custom).with("test:my_pid", "export", :format=>"info:fedora/fedora-system:ATOM-1.1", :context=>"public").times(2)
88
- Fedora::Repository.instance.expects(:fetch_custom).with("test:my_pid", "export", :format=>"info:fedora/fedora-system:ATOM-1.1", :context=>"migrate")
89
- Fedora::Repository.instance.expects(:fetch_custom).with("test:my_pid", "export", :format=>"info:fedora/fedora-system:ATOM-1.1", :context=>"archive")
90
-
91
- Fedora::Repository.instance.export("test:my_pid", :format=>:atom, :context=>:public)
92
- Fedora::Repository.instance.export("test:my_pid", :format=>:atom, :context=>"public")
93
- Fedora::Repository.instance.export("test:my_pid", :format=>:atom, :context=>:migrate)
94
- Fedora::Repository.instance.export("test:my_pid", :format=>:atom, :context=>:archive)
95
- end
96
- end
97
-
98
- describe "ingest" do
99
- it "should post the provided xml or file to fedora" do
100
- foxml = fixture("test_12.foxml.xml").read
101
- connection = Fedora::Repository.instance.send(:connection)
102
- connection.expects(:post).with("/fedora/objects/new",foxml)
103
- Fedora::Repository.instance.ingest(foxml)
104
- end
105
- it "should accept a file as its input" do
106
- foxml_file = fixture("test_12.foxml.xml")
107
- foxml = fixture("test_12.foxml.xml").read
108
- connection = Fedora::Repository.instance.send(:connection)
109
- connection.expects(:post).with("/fedora/objects/new",foxml)
110
- Fedora::Repository.instance.ingest(foxml_file)
111
- end
112
- end
113
-
114
- describe ".find_model" do
115
- it "should raise an ObjectNotFound error if there is no object" do
116
- Fedora::Repository.instance.expects(:find_objects).returns([])
117
- lambda { Fedora::Repository.instance.find_model("mypid", ActiveFedora::Base) }.should raise_error(ActiveFedora::ObjectNotFoundError)
118
- end
119
- end
120
-
121
- describe "#register" do
122
- after(:all) do
123
- Fedora::Repository.register(ActiveFedora.fedora_config[:url])
124
- end
125
- it "should initialize the attributes from fedora/describe" do
126
- sample_attrs = {"sampleSearch-URL"=>["http://127.0.0.1:8080/fedora/search"], "repositoryOAI-identifier"=>[{"OAI-sample"=>["oai:example.org:changeme:100"], "OAI-delimiter"=>[":"], "OAI-namespaceIdentifier"=>["example.org"]}], "repositoryBaseURL"=>["http://127.0.0.1:8080/fedora"], "xsi:schemaLocation"=>"http://www.fedora.info/definitions/1/0/access/ http://www.fedora.info/definitions/1/0/fedoraRepository.xsd", "xmlns:xsd"=>"http://www.w3.org/2001/XMLSchema", "repositoryPID"=>[{"PID-sample"=>["changeme:100"], "PID-namespaceIdentifier"=>["changeme"], "PID-delimiter"=>[":"], "retainPID"=>["*"]}], "adminEmail"=>["bob@example.org", "sally@example.org"], "repositoryVersion"=>["3.1"], "sampleOAI-URL"=>["http://localhost:8080/fedora/oai?verb=Identify"], "sampleAccess-URL"=>["http://localhost:8080/fedora/get/demo:5"], "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", "repositoryName"=>["Fedora Repository"]}
127
- Fedora::Repository.any_instance.expects(:describe_repository).returns(sample_attrs)
128
- Fedora::Repository.register('http://foo.bar')
129
- boo = Fedora::Repository.instance
130
- boo.repository_name.should == "Fedora Repository"
131
- boo.base_url.should == "http://127.0.0.1:8080/fedora"
132
- boo.fedora_version.should == "3.1"
133
- boo.pid_namespace.should == "changeme"
134
- boo.pid_delimiter.should == ":"
135
- end
136
- end
137
-
138
-
139
- it "should provide .describe_repository" do
140
- Fedora::Repository.instance.should respond_to(:describe_repository)
141
- end
142
-
143
- end
@@ -1,63 +0,0 @@
1
- require File.join( File.dirname(__FILE__), "../spec_helper" )
2
-
3
- require 'ruby-fedora'
4
-
5
-
6
- describe Fedora::Datastream do
7
-
8
- before(:each) do
9
- Fedora::Repository.register(ActiveFedora.fedora_config[:url])
10
- @test_datastream = Fedora::Datastream.new
11
- end
12
-
13
- it "should track the controlgroup attr" do
14
- td = Fedora::Datastream.new(:controlGroup=>'M')
15
- td.control_group.should == 'M'
16
- end
17
-
18
- it "should provide .url" do
19
- @test_datastream.should respond_to(:url)
20
- @test_datastream.expects(:pid).returns("_foo_")
21
- @test_datastream.url.should == 'http://localhost:8983/fedora/objects/_foo_/datastreams/'
22
- end
23
-
24
- describe ".url" do
25
- it "should return the Repository base_url with /objects/pid appended" do
26
- Fedora::Repository.instance.expects(:base_url).returns("BASE_URL")
27
- @test_datastream.expects(:pid).returns("_PID_")
28
- @test_datastream.expects(:dsid).returns("_DSID_")
29
- @test_datastream.url.should == "BASE_URL/objects/_PID_/datastreams/_DSID_"
30
- end
31
- end
32
-
33
- describe ".label" do
34
- it "should return the dsLabel attribute" do
35
- @test_datastream.label.should == @test_datastream.attributes[:dsLabel]
36
- end
37
- end
38
-
39
- describe ".label=" do
40
- it "should set the dsLabel attribute" do
41
- @test_datastream.label.should_not == "Foo dsLabel"
42
- @test_datastream.attributes[:dsLabel].should_not == "Foo dsLabel"
43
- @test_datastream.label = "Foo dsLabel"
44
- @test_datastream.label.should == "Foo dsLabel"
45
- @test_datastream.attributes[:dsLabel].should == "Foo dsLabel"
46
- end
47
- end
48
-
49
- describe ".mime_type" do
50
- it "should return the mimeType attribute" do
51
- @test_datastream.mime_type.should == @test_datastream.attributes["mimeType"]
52
- end
53
- end
54
-
55
- describe ".mime_type=" do
56
- it "should set the mimeType attribute" do
57
- @test_datastream.mime_type.should_not == "foo/bar"
58
- @test_datastream.attributes["mimeType"].should_not == "foo/bar"
59
- @test_datastream.mime_type= "foo/bar"
60
- @test_datastream.mime_type.should == "foo/bar"
61
- end
62
- end
63
- end