active-fedora 3.3.2 → 4.0.0.rc1

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 (78) hide show
  1. data/Gemfile.lock +21 -22
  2. data/History.txt +9 -0
  3. data/README.textile +1 -1
  4. data/TODO +1 -0
  5. data/active-fedora.gemspec +3 -3
  6. data/config/fedora.yml +9 -3
  7. data/lib/active_fedora.rb +43 -33
  8. data/lib/active_fedora/base.rb +80 -31
  9. data/lib/active_fedora/config.rb +38 -0
  10. data/lib/active_fedora/content_model.rb +0 -6
  11. data/lib/active_fedora/datastream.rb +22 -0
  12. data/lib/active_fedora/delegating.rb +24 -25
  13. data/lib/active_fedora/digital_object.rb +2 -1
  14. data/lib/active_fedora/file_management.rb +1 -0
  15. data/lib/active_fedora/fixture_exporter.rb +1 -1
  16. data/lib/active_fedora/fixture_loader.rb +3 -3
  17. data/lib/active_fedora/metadata_datastream.rb +6 -0
  18. data/lib/active_fedora/model.rb +24 -5
  19. data/lib/active_fedora/nokogiri_datastream.rb +1 -0
  20. data/lib/active_fedora/ntriples_rdf_datastream.rb +0 -1
  21. data/lib/active_fedora/persistence.rb +2 -1
  22. data/lib/active_fedora/predicates.rb +27 -27
  23. data/lib/active_fedora/rdf_datastream.rb +104 -30
  24. data/lib/active_fedora/rels_ext_datastream.rb +14 -10
  25. data/lib/active_fedora/rubydora_connection.rb +4 -27
  26. data/lib/active_fedora/service_definitions.rb +2 -3
  27. data/lib/active_fedora/solr_digital_object.rb +22 -8
  28. data/lib/active_fedora/solr_service.rb +1 -1
  29. data/lib/active_fedora/unsaved_digital_object.rb +1 -4
  30. data/lib/active_fedora/version.rb +1 -1
  31. data/lib/tasks/active_fedora.rake +6 -6
  32. data/lib/tasks/active_fedora_dev.rake +0 -1
  33. data/spec/fixtures/mixed_rdf_descMetadata.nt +6 -0
  34. data/spec/fixtures/rails_root/config/fedora.yml +3 -1
  35. data/spec/fixtures/sharded_fedora.yml +11 -0
  36. data/spec/integration/base_file_management_spec.rb +6 -3
  37. data/spec/integration/base_find_by_fields_spec.rb +15 -16
  38. data/spec/integration/base_spec.rb +11 -178
  39. data/spec/integration/datastream_collections_spec.rb +1 -1
  40. data/spec/integration/full_featured_model_spec.rb +1 -2
  41. data/spec/integration/model_spec.rb +8 -9
  42. data/spec/integration/mods_article_integration_spec.rb +1 -1
  43. data/spec/integration/nokogiri_datastream_spec.rb +1 -1
  44. data/spec/integration/ntriples_datastream_spec.rb +80 -0
  45. data/spec/integration/rels_ext_datastream_spec.rb +0 -1
  46. data/spec/integration/semantic_node_spec.rb +18 -26
  47. data/spec/integration/solr_service_spec.rb +51 -1
  48. data/{lib/active_fedora → spec}/samples/hydra-mods_article_datastream.rb +0 -0
  49. data/{lib/active_fedora → spec}/samples/hydra-rights_metadata_datastream.rb +0 -0
  50. data/{lib/active_fedora → spec}/samples/marpa-dc_datastream.rb +0 -0
  51. data/spec/samples/models/hydrangea_article.rb +2 -2
  52. data/spec/samples/samples.rb +2 -0
  53. data/{lib/active_fedora → spec}/samples/special_thing.rb +3 -3
  54. data/spec/spec_helper.rb +1 -0
  55. data/spec/unit/active_fedora_spec.rb +17 -50
  56. data/spec/unit/base_extra_spec.rb +4 -0
  57. data/spec/unit/base_file_management_spec.rb +5 -2
  58. data/spec/unit/base_spec.rb +692 -628
  59. data/spec/unit/config_spec.rb +19 -0
  60. data/spec/unit/content_model_spec.rb +1 -24
  61. data/spec/unit/datastream_collections_spec.rb +11 -14
  62. data/spec/unit/datastreams_spec.rb +49 -54
  63. data/spec/unit/model_spec.rb +24 -53
  64. data/spec/unit/nokogiri_datastream_spec.rb +6 -1
  65. data/spec/unit/ntriples_datastream_spec.rb +73 -0
  66. data/spec/unit/qualified_dublin_core_datastream_spec.rb +1 -1
  67. data/spec/unit/relationships_spec.rb +6 -3
  68. data/spec/unit/rels_ext_datastream_spec.rb +19 -0
  69. data/spec/unit/rubydora_connection_spec.rb +2 -56
  70. data/spec/unit/solr_service_spec.rb +3 -1
  71. data/spec/unit/unsaved_digital_object_spec.rb +2 -2
  72. metadata +46 -33
  73. data/lib/active_fedora/dcrdf_datastream.rb +0 -11
  74. data/lib/active_fedora/relationship.rb +0 -47
  75. data/lib/active_fedora/samples.rb +0 -3
  76. data/spec/integration/dc_rdf_datastream_spec.rb +0 -24
  77. data/spec/unit/dc_rdf_datastream_spec.rb +0 -50
  78. data/spec/unit/relationship_spec.rb +0 -92
@@ -1,11 +0,0 @@
1
- module ActiveFedora
2
- class DCRDFDatastream < NtriplesRDFDatastream
3
-
4
- # given a symbol, resolve the predicate as a RDF::URI
5
- # if the predicate is not in DC, return nil
6
- def resolve_predicate(name)
7
- RDF::DC.send(name) if RDF::DC.respond_to? name
8
- end
9
-
10
- end
11
- end
@@ -1,47 +0,0 @@
1
- require 'uri'
2
- module ActiveFedora
3
-
4
- class Relationship
5
-
6
- attr_accessor :subject, :predicate, :object, :is_literal, :data_type
7
- def initialize(attr={})
8
- ActiveSupport::Deprecation.warn("ActiveFedora::Releationship is deprecated and will be removed in the next release")
9
- attr = {:is_literal => false}.merge(attr)
10
- @is_literal = attr[:is_literal] # must happen first
11
- self.subject = attr[:subject]
12
- @predicate = attr[:predicate]
13
- self.object = attr[:object]
14
- @data_type = attr[:data_type]
15
- end
16
-
17
- def subject=(subject)
18
- @subject = generate_uri(subject)
19
- end
20
-
21
- def subject_pid=(pid)
22
- @subject = "info:fedora/#{pid}"
23
- end
24
-
25
- def object=(object)
26
- @object = (is_literal)? object : generate_uri(object)
27
- end
28
-
29
- def object_pid=(pid)
30
- @object = "info:fedora/#{pid}"
31
- end
32
-
33
- def generate_uri(input)
34
- if input.class == Symbol || input == nil
35
- return input
36
- elsif input.is_a? URI::Generic
37
- return input.to_s
38
- elsif input.respond_to?(:pid)
39
- return "info:fedora/#{input.pid}"
40
- else
41
- input.include?("info:fedora") ? input : "info:fedora/#{input}"
42
- end
43
- end
44
-
45
- end
46
-
47
- end
@@ -1,3 +0,0 @@
1
- # require all of the files in the samples directory
2
- module Hydra;end
3
- Dir[File.join(File.dirname(__FILE__), "samples", "*.rb")].each {|f| require f}
@@ -1,24 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ActiveFedora::DCRDFDatastream do
4
- before do
5
- class RdfTest < ActiveFedora::Base
6
- has_metadata :name=>'rdf', :type=>ActiveFedora::DCRDFDatastream
7
- delegate :description, :to=>'rdf'
8
- delegate :title, :to=>'rdf', :unique=>true
9
- end
10
- @subject = RdfTest.new
11
- end
12
-
13
- after do
14
- Object.send(:remove_const, :RdfTest)
15
- end
16
-
17
- it "should set and recall values" do
18
- @subject.title = 'War and Peace'
19
- @subject.save
20
-
21
- loaded = RdfTest.find(@subject.pid)
22
- loaded.title.should == 'War and Peace'
23
- end
24
- end
@@ -1,50 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ActiveFedora::DCRDFDatastream do
4
-
5
- describe "an instance with content" do
6
- before do
7
- @subject = ActiveFedora::DCRDFDatastream.new(@inner_object, 'dc_rdf')
8
- @subject.content = File.new('spec/fixtures/dublin_core_rdf_descMetadata.nt').read
9
- @subject.stubs(:pid => 'test:1')
10
- @subject.stubs(:new? => false)
11
- end
12
- it "should have controlGroup" do
13
- @subject.controlGroup.should == 'M'
14
- end
15
- it "should have mimeType" do
16
- @subject.mimeType.should == 'text/plain'
17
- end
18
- it "should have dsid" do
19
- @subject.dsid.should == 'dc_rdf'
20
- end
21
- it "should have fields" do
22
- @subject.publisher.should == ["Penn State"]
23
- end
24
- it "should have method missing" do
25
- lambda{@subject.frank}.should raise_exception NoMethodError
26
- end
27
-
28
- it "should set fields" do
29
- @subject.publisher= "St. Martin's Press"
30
- @subject.publisher.should == ["St. Martin's Press"]
31
- end
32
- it "should append fields" do
33
- @subject.append(RDF::DC.publisher, "St. Martin's Press")
34
- @subject.publisher.should == ["Penn State", "St. Martin's Press"]
35
- end
36
-
37
- end
38
-
39
- describe "a new instance" do
40
- before do
41
- @subject = ActiveFedora::DCRDFDatastream.new(@inner_object, 'dc_rdf')
42
- @subject.stubs(:pid => 'test:1')
43
- end
44
- it "should save and reload" do
45
- @subject.publisher= ["St. Martin's Press"]
46
- @subject.save
47
- end
48
- end
49
-
50
- end
@@ -1,92 +0,0 @@
1
- require 'spec_helper'
2
-
3
- require 'active_fedora'
4
- require 'active_fedora/relationship'
5
- require "rexml/document"
6
- require 'mocha'
7
- require 'uri'
8
-
9
- include Mocha::API
10
-
11
- describe ActiveFedora::Relationship do
12
-
13
- %/
14
- module ModelSpec
15
- class AudioRecord
16
- include ActiveFedora::Model
17
-
18
- relationship "parents", :is_part_of, [nil, :oral_history]
19
- end
20
-
21
- class OralHistory
22
- include ActiveFedora::Model
23
-
24
- relationship "parts", :is_part_of, [:audio_record], :inbound => true
25
- end
26
- /%
27
- before(:each) do
28
- ActiveSupport::Deprecation.expects(:warn).with("ActiveFedora::Releationship is deprecated and will be removed in the next release").twice
29
-
30
- @test_relationship = ActiveFedora::Relationship.new
31
- @test_literal = ActiveFedora::Relationship.new(:is_literal=>true)
32
- end
33
-
34
- it "should provide #new" do
35
- ActiveFedora::Relationship.should respond_to(:new)
36
- end
37
-
38
- describe "#new" do
39
- ActiveSupport::Deprecation.expects(:warn).with("ActiveFedora::Releationship is deprecated and will be removed in the next release").twice
40
- test_relationship = ActiveFedora::Relationship.new(:subject => "demo:5", :predicate => "isMemberOf", :object => "demo:10")
41
-
42
- test_relationship.subject.should == "info:fedora/demo:5"
43
- test_relationship.predicate.should == "isMemberOf"
44
- test_relationship.object.should == "info:fedora/demo:10"
45
- test_relationship.is_literal.should == false
46
- test_literal = ActiveFedora::Relationship.new(:is_literal=>true)
47
- test_literal.is_literal.should == true
48
- end
49
-
50
- describe "#subject=" do
51
- it "should turn strings into fedora URIs" do
52
- @test_relationship.subject = "demo:6"
53
- @test_relationship.subject.should == "info:fedora/demo:6"
54
- @test_relationship.subject = "info:fedora/demo:7"
55
- @test_relationship.subject.should == "info:fedora/demo:7"
56
- end
57
- it "should use the pid of the passed object if it responds to #pid" do
58
- mock_fedora_object = stub("mock_fedora_object", :pid => "demo:stub_pid")
59
- @test_relationship.subject = mock_fedora_object
60
- @test_relationship.subject.should == "info:fedora/#{mock_fedora_object.pid}"
61
- end
62
- end
63
-
64
- describe "#object=" do
65
- it "should turn strings into Fedora URIs" do
66
- @test_relationship.object = "demo:11"
67
- @test_relationship.object.should == "info:fedora/demo:11"
68
- end
69
- it "should use the pid of the passed object if it responds to #pid" do
70
- mock_fedora_object = stub("mock_fedora_object", :pid => "demo:stub_pid")
71
- @test_relationship.object = mock_fedora_object
72
- @test_relationship.object.should == "info:fedora/#{mock_fedora_object.pid}"
73
- end
74
- it "should let URI objects stringify themselves" do
75
- @test_relationship.object = URI.parse("http://projecthydra.org")
76
- @test_relationship.object.should == "http://projecthydra.org"
77
- end
78
- it "should not turn literal property objects into Fedora URIs" do
79
- @test_literal.object = "foo"
80
- @test_literal.object.should == "foo"
81
- end
82
- end
83
-
84
- describe "#predicate=" do
85
- it "should default to setting the argument itself as the new subject" do
86
- @test_relationship.predicate = "isComponentOf"
87
- @test_relationship.predicate.should == "isComponentOf"
88
- end
89
- end
90
-
91
-
92
- end