active-fedora 3.2.0.pre3 → 3.2.0.pre4
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/History.txt +3 -0
- data/active-fedora.gemspec +1 -1
- data/lib/active_fedora.rb +4 -0
- data/lib/active_fedora/base.rb +35 -126
- data/lib/active_fedora/callbacks.rb +252 -0
- data/lib/active_fedora/model.rb +0 -3
- data/lib/active_fedora/persistence.rb +116 -0
- data/lib/active_fedora/rubydora_connection.rb +1 -1
- data/lib/active_fedora/solr_digital_object.rb +19 -0
- data/lib/active_fedora/unsaved_digital_object.rb +6 -3
- data/lib/active_fedora/validations.rb +82 -0
- data/lib/active_fedora/version.rb +1 -1
- data/spec/integration/base_loader_spec.rb +1 -2
- data/spec/integration/full_featured_model_spec.rb +1 -0
- data/spec/support/mock_fedora.rb +3 -3
- data/spec/unit/base_active_model_spec.rb +2 -2
- data/spec/unit/base_delegate_spec.rb +1 -1
- data/spec/unit/base_extra_spec.rb +2 -2
- data/spec/unit/base_spec.rb +77 -97
- data/spec/unit/callback_spec.rb +44 -0
- data/spec/unit/relationship_graph_spec.rb +2 -7
- data/spec/unit/relationships_spec.rb +4 -2
- data/spec/unit/service_definitions_spec.rb +6 -4
- data/spec/unit/solr_config_options_spec.rb +1 -1
- data/spec/unit/solr_service_spec.rb +3 -2
- data/spec/unit/validations_spec.rb +43 -0
- metadata +13 -4
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ActiveFedora::Base do
|
4
|
+
before :all do
|
5
|
+
class CallbackStub < ActiveFedora::Base
|
6
|
+
has_metadata :type=>ActiveFedora::MetadataDatastream, :name=>"someData" do |m|
|
7
|
+
m.field "fubar", :string
|
8
|
+
m.field "swank", :text
|
9
|
+
end
|
10
|
+
delegate :fubar, :to=>'someData'
|
11
|
+
delegate :swank, :to=>'someData'
|
12
|
+
|
13
|
+
after_initialize :a_init
|
14
|
+
before_save :b_save
|
15
|
+
after_save :a_save
|
16
|
+
before_create :b_create
|
17
|
+
after_create :a_create
|
18
|
+
before_update :b_update
|
19
|
+
after_update :a_update
|
20
|
+
after_find :a_find
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
after :all do
|
25
|
+
Object.send(:remove_const, :CallbackStub)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "Should have after_initialize, before_save,after_save, before_create, after_create, after_update, before_update" do
|
29
|
+
CallbackStub.any_instance.expects(:a_init).twice
|
30
|
+
CallbackStub.any_instance.expects :b_create
|
31
|
+
CallbackStub.any_instance.expects :a_create
|
32
|
+
CallbackStub.any_instance.expects(:b_save).twice
|
33
|
+
CallbackStub.any_instance.expects(:a_save).twice
|
34
|
+
CallbackStub.any_instance.expects(:a_find)
|
35
|
+
CallbackStub.any_instance.expects(:b_update)
|
36
|
+
CallbackStub.any_instance.expects(:a_update)
|
37
|
+
cb = CallbackStub.new
|
38
|
+
cb.save
|
39
|
+
|
40
|
+
cb2 = CallbackStub.find(cb.pid)
|
41
|
+
cb2.save
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
@@ -3,11 +3,12 @@ require 'spec_helper'
|
|
3
3
|
describe ActiveFedora::RelationshipGraph do
|
4
4
|
before do
|
5
5
|
@graph = ActiveFedora::RelationshipGraph.new
|
6
|
+
@n1 = ActiveFedora::Base.new()
|
7
|
+
@n1.stubs(:pid => 'foo:777')
|
6
8
|
end
|
7
9
|
|
8
10
|
|
9
11
|
it "should add relationships" do
|
10
|
-
@n1 = ActiveFedora::Base.new
|
11
12
|
@n2 = ActiveFedora::Base.new
|
12
13
|
@graph.add(:has_part, @n1)
|
13
14
|
@graph.relationships[:has_part].should == [@n1]
|
@@ -23,7 +24,6 @@ describe ActiveFedora::RelationshipGraph do
|
|
23
24
|
graph.should be_kind_of RDF::Graph
|
24
25
|
graph.statements.to_a.should == []
|
25
26
|
|
26
|
-
@n1 = ActiveFedora::Base.new(:pid=>'foo:777')
|
27
27
|
@graph.add(:has_part, @n1)
|
28
28
|
graph = @graph.to_graph('info:fedora/foo:1')
|
29
29
|
stmts = graph.statements.to_a
|
@@ -36,7 +36,6 @@ describe ActiveFedora::RelationshipGraph do
|
|
36
36
|
end
|
37
37
|
|
38
38
|
it "should have array accessor" do
|
39
|
-
@n1 = ActiveFedora::Base.new(:pid=>'foo:777')
|
40
39
|
@graph.add(:has_part, @n1)
|
41
40
|
@graph[:has_part].should == [@n1]
|
42
41
|
end
|
@@ -44,7 +43,6 @@ describe ActiveFedora::RelationshipGraph do
|
|
44
43
|
|
45
44
|
describe "delete" do
|
46
45
|
it "should delete an object when an object is passed" do
|
47
|
-
@n1 = ActiveFedora::Base.new(:pid=>'foo:777')
|
48
46
|
@graph.add(:has_part, @n1)
|
49
47
|
@graph[:has_part].should == [@n1]
|
50
48
|
@graph.delete(:has_part, @n1)
|
@@ -52,7 +50,6 @@ describe ActiveFedora::RelationshipGraph do
|
|
52
50
|
end
|
53
51
|
it "should delete an pid when an object is passed" do
|
54
52
|
#a reloaded rels-ext is just a list of uris, not inflated.
|
55
|
-
@n1 = ActiveFedora::Base.new(:pid=>'foo:777')
|
56
53
|
@graph.add(:has_part, 'info:fedora/foo:777')
|
57
54
|
@graph[:has_part].should == ['info:fedora/foo:777']
|
58
55
|
@graph.delete(:has_part, @n1)
|
@@ -60,7 +57,6 @@ describe ActiveFedora::RelationshipGraph do
|
|
60
57
|
end
|
61
58
|
it "should delete an pid when a string is passed" do
|
62
59
|
#a reloaded rels-ext is just a list of uris, not inflated.
|
63
|
-
@n1 = ActiveFedora::Base.new(:pid=>'foo:777')
|
64
60
|
@graph.add(:has_part, 'info:fedora/foo:777')
|
65
61
|
@graph[:has_part].should == ['info:fedora/foo:777']
|
66
62
|
@graph.delete(:has_part, 'info:fedora/foo:777')
|
@@ -68,7 +64,6 @@ describe ActiveFedora::RelationshipGraph do
|
|
68
64
|
end
|
69
65
|
it "should delete an object when a pid is passed" do
|
70
66
|
#a reloaded rels-ext is just a list of uris, not inflated.
|
71
|
-
@n1 = ActiveFedora::Base.new(:pid=>'foo:777')
|
72
67
|
@graph.add(:has_part, @n1)
|
73
68
|
@graph[:has_part].should == [@n1]
|
74
69
|
@graph.delete(:has_part, 'info:fedora/foo:777')
|
@@ -13,9 +13,11 @@ describe ActiveFedora::Relationships do
|
|
13
13
|
include ActiveFedora::SemanticNode
|
14
14
|
|
15
15
|
attr_accessor :pid
|
16
|
-
def
|
17
|
-
self.pid =
|
16
|
+
def init_with(inner_obj)
|
17
|
+
self.pid = inner_obj.pid
|
18
|
+
self
|
18
19
|
end
|
20
|
+
|
19
21
|
def internal_uri
|
20
22
|
'info:fedora/' + pid.to_s
|
21
23
|
end
|
@@ -25,11 +25,11 @@ describe ActiveFedora::ServiceDefinitions do
|
|
25
25
|
end
|
26
26
|
describe "method creation" do
|
27
27
|
it "should create the system sdef methods" do
|
28
|
-
obj = Test.new(
|
28
|
+
obj = Test.new()
|
29
29
|
(obj.respond_to? :object_profile).should == true
|
30
30
|
end
|
31
31
|
it "should create the declared sdef methods" do
|
32
|
-
obj = Test.new(
|
32
|
+
obj = Test.new()
|
33
33
|
(obj.respond_to? :document_style_1).should == true
|
34
34
|
end
|
35
35
|
end
|
@@ -37,12 +37,14 @@ describe ActiveFedora::ServiceDefinitions do
|
|
37
37
|
it "should call the appropriate rubydora rest api method" do
|
38
38
|
Rubydora::Repository.any_instance.expects(:dissemination).with({:pid=>'monkey:99',:sdef=>'test:12', :method=>'getDocumentStyle1'})
|
39
39
|
#@mock_client.stubs(:[]).with('objects/monkey%3A99/methods/test%3A12/getDocumentStyle1')
|
40
|
-
obj = Test.new(
|
40
|
+
obj = Test.new()
|
41
|
+
obj.stubs(:pid).returns('monkey:99')
|
41
42
|
obj.document_style_1
|
42
43
|
end
|
43
44
|
it "should call the appropriate rubydora rest api method with parameters" do
|
44
45
|
Rubydora::Repository.any_instance.expects(:dissemination).with({:pid=>'monkey:99',:sdef=>'test:12', :method=>'getDocumentStyle1', :format=>'xml'})
|
45
|
-
obj = Test.new(
|
46
|
+
obj = Test.new()
|
47
|
+
obj.stubs(:pid).returns('monkey:99')
|
46
48
|
obj.document_style_1({:format=>'xml'})
|
47
49
|
end
|
48
50
|
it "should call the appropriate rubydora rest api method with a block" do
|
@@ -49,8 +49,9 @@ describe ActiveFedora::SolrService do
|
|
49
49
|
before(:each) do
|
50
50
|
class AudioRecord
|
51
51
|
attr_accessor :pid
|
52
|
-
def
|
53
|
-
self.pid =
|
52
|
+
def init_with(inner_obj)
|
53
|
+
self.pid = inner_obj.pid
|
54
|
+
self
|
54
55
|
end
|
55
56
|
end
|
56
57
|
@sample_solr_hits = [{"id"=>"my:_PID1_", "has_model_s"=>["info:fedora/afmodel:AudioRecord"]},
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ActiveFedora::Base do
|
4
|
+
before :all do
|
5
|
+
class ValidationStub < ActiveFedora::Base
|
6
|
+
has_metadata :type=>ActiveFedora::MetadataDatastream, :name=>"someData" do |m|
|
7
|
+
m.field "fubar", :string
|
8
|
+
m.field "swank", :text
|
9
|
+
end
|
10
|
+
delegate :fubar, :to=>'someData'
|
11
|
+
delegate :swank, :to=>'someData'
|
12
|
+
|
13
|
+
validates_presence_of :fubar
|
14
|
+
validates_length_of :swank, :minimum=>5
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
after :all do
|
19
|
+
Object.send(:remove_const, :ValidationStub)
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "a valid object" do
|
23
|
+
before do
|
24
|
+
@obj = ValidationStub.new(:fubar=>'here', :swank=>'long enough')
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should be valid" do
|
28
|
+
@obj.should_not be_valid
|
29
|
+
end
|
30
|
+
end
|
31
|
+
describe "an invalid object" do
|
32
|
+
before do
|
33
|
+
@obj = ValidationStub.new(:swank=>'smal')
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should be invalid" do
|
37
|
+
@obj.should_not be_valid
|
38
|
+
@obj.errors[:fubar].should == ["can't be blank"]
|
39
|
+
@obj.errors[:swank].should == ["is too short (minimum is 5 characters)"]
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
metadata
CHANGED
@@ -1,24 +1,25 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active-fedora
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 1923832033
|
5
5
|
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 3
|
8
8
|
- 2
|
9
9
|
- 0
|
10
10
|
- pre
|
11
|
-
-
|
12
|
-
version: 3.2.0.
|
11
|
+
- 4
|
12
|
+
version: 3.2.0.pre4
|
13
13
|
platform: ruby
|
14
14
|
authors:
|
15
15
|
- Matt Zumwalt
|
16
16
|
- McClain Looney
|
17
|
+
- Justin Coyne
|
17
18
|
autorequire:
|
18
19
|
bindir: bin
|
19
20
|
cert_chain: []
|
20
21
|
|
21
|
-
date:
|
22
|
+
date: 2012-01-01 00:00:00 -06:00
|
22
23
|
default_executable:
|
23
24
|
dependencies:
|
24
25
|
- !ruby/object:Gem::Dependency
|
@@ -562,6 +563,7 @@ files:
|
|
562
563
|
- lib/active_fedora/associations/has_many_association.rb
|
563
564
|
- lib/active_fedora/attribute_methods.rb
|
564
565
|
- lib/active_fedora/base.rb
|
566
|
+
- lib/active_fedora/callbacks.rb
|
565
567
|
- lib/active_fedora/content_model.rb
|
566
568
|
- lib/active_fedora/datastream.rb
|
567
569
|
- lib/active_fedora/datastream_collections.rb
|
@@ -577,6 +579,7 @@ files:
|
|
577
579
|
- lib/active_fedora/named_relationships.rb
|
578
580
|
- lib/active_fedora/nested_attributes.rb
|
579
581
|
- lib/active_fedora/nokogiri_datastream.rb
|
582
|
+
- lib/active_fedora/persistence.rb
|
580
583
|
- lib/active_fedora/predicates.rb
|
581
584
|
- lib/active_fedora/property.rb
|
582
585
|
- lib/active_fedora/qualified_dublin_core_datastream.rb
|
@@ -595,8 +598,10 @@ files:
|
|
595
598
|
- lib/active_fedora/samples/special_thing.rb
|
596
599
|
- lib/active_fedora/semantic_node.rb
|
597
600
|
- lib/active_fedora/service_definitions.rb
|
601
|
+
- lib/active_fedora/solr_digital_object.rb
|
598
602
|
- lib/active_fedora/solr_service.rb
|
599
603
|
- lib/active_fedora/unsaved_digital_object.rb
|
604
|
+
- lib/active_fedora/validations.rb
|
600
605
|
- lib/active_fedora/version.rb
|
601
606
|
- lib/ruby-fedora.rb
|
602
607
|
- lib/tasks/active_fedora.rake
|
@@ -693,6 +698,7 @@ files:
|
|
693
698
|
- spec/unit/base_extra_spec.rb
|
694
699
|
- spec/unit/base_file_management_spec.rb
|
695
700
|
- spec/unit/base_spec.rb
|
701
|
+
- spec/unit/callback_spec.rb
|
696
702
|
- spec/unit/content_model_spec.rb
|
697
703
|
- spec/unit/datastream_collections_spec.rb
|
698
704
|
- spec/unit/datastream_concurrency_spec.rb
|
@@ -715,6 +721,7 @@ files:
|
|
715
721
|
- spec/unit/service_definitions_spec.rb
|
716
722
|
- spec/unit/solr_config_options_spec.rb
|
717
723
|
- spec/unit/solr_service_spec.rb
|
724
|
+
- spec/unit/validations_spec.rb
|
718
725
|
has_rdoc: true
|
719
726
|
homepage: http://yourmediashelf.com/activefedora
|
720
727
|
licenses: []
|
@@ -836,6 +843,7 @@ test_files:
|
|
836
843
|
- spec/unit/base_extra_spec.rb
|
837
844
|
- spec/unit/base_file_management_spec.rb
|
838
845
|
- spec/unit/base_spec.rb
|
846
|
+
- spec/unit/callback_spec.rb
|
839
847
|
- spec/unit/content_model_spec.rb
|
840
848
|
- spec/unit/datastream_collections_spec.rb
|
841
849
|
- spec/unit/datastream_concurrency_spec.rb
|
@@ -858,3 +866,4 @@ test_files:
|
|
858
866
|
- spec/unit/service_definitions_spec.rb
|
859
867
|
- spec/unit/solr_config_options_spec.rb
|
860
868
|
- spec/unit/solr_service_spec.rb
|
869
|
+
- spec/unit/validations_spec.rb
|