active-fedora 2.3.1 → 2.3.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -14,7 +14,7 @@ class FooHistory < ActiveFedora::Base
14
14
  has_metadata :type=>ActiveFedora::MetadataDatastream, :name=>"withText" do |m|
15
15
  m.field "fubar", :text
16
16
  end
17
- has_metadata :type=>ActiveFedora::MetadataDatastream, :name=>"withText2" do |m|
17
+ has_metadata :type=>ActiveFedora::MetadataDatastream, :name=>"withText2", :label=>"withLabel" do |m|
18
18
  m.field "fubar", :text
19
19
  end
20
20
  end
@@ -65,12 +65,23 @@ describe ActiveFedora::Base do
65
65
  end
66
66
 
67
67
  describe "has_metadata" do
68
+ before :each do
69
+ @n = FooHistory.new(:pid=>"monkey:99")
70
+ @n.save
71
+ end
72
+
73
+ after :each do
74
+ begin
75
+ @n.delete
76
+ rescue
77
+ end
78
+ end
68
79
 
69
80
  it "should create specified datastreams with specified fields" do
70
- n = FooHistory.new
71
- n.datastreams["someData"].should_not be_nil
72
- n.datastreams["someData"].fubar_values='bar'
73
- n.datastreams["someData"].fubar_values.should == ['bar']
81
+ @n.datastreams["someData"].should_not be_nil
82
+ @n.datastreams["someData"].fubar_values='bar'
83
+ @n.datastreams["someData"].fubar_values.should == ['bar']
84
+ @n.datastreams["withText2"].label.should == "withLabel"
74
85
  end
75
86
 
76
87
  end
@@ -81,5 +81,45 @@ describe ActiveFedora::Datastream do
81
81
  ds2 = ActiveFedora::Datastream.new(:mime_type=>"text/bar")
82
82
  ds2.mime_type.should == "text/bar"
83
83
  end
84
-
84
+
85
+ describe ".size" do
86
+ it "should lazily load the datastream size attribute from the fedora repository" do
87
+ ds_profile = <<-EOS
88
+ <datastreamProfile
89
+ xmlns=\"http://www.fedora.info/definitions/1/0/management/\"
90
+ xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"
91
+ xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
92
+ xsi:schemaLocation=\"http://www.fedora.info/definitions/1/0/management/ http://www.fedora.info/definitions/1/0/datastreamProfile.xsd\"
93
+ pid=\"#{@test_object.pid}\"
94
+ dsID=\"#{@test_datastream.dsid}\" >
95
+ <dsLabel></dsLabel>
96
+ <dsVersionID>#{@test_datastream.dsid}.1</dsVersionID>
97
+ <dsCreateDate>2011-07-11T16:48:13.536Z</dsCreateDate>
98
+ <dsState>A</dsState>
99
+ <dsMIME>text/xml</dsMIME>
100
+ <dsFormatURI></dsFormatURI>
101
+ <dsControlGroup>X</dsControlGroup>
102
+ <dsSize>9999</dsSize>
103
+ <dsVersionable>true</dsVersionable>
104
+ <dsInfoType></dsInfoType>
105
+ <dsLocation>#{@test_object.pid}+#{@test_datastream.dsid}+#{@test_datastream.dsid}.1</dsLocation>
106
+ <dsLocationType></dsLocationType>
107
+ <dsChecksumType>DISABLED</dsChecksumType>
108
+ <dsChecksum>none</dsChecksum>
109
+ </datastreamProfile>"
110
+ EOS
111
+ Fedora::Repository.instance.expects(:fetch_custom).with(@test_object.pid, "datastreams/#{@test_datastream.dsid}").returns(ds_profile)
112
+ @test_datastream.expects(:new_object?).returns(false)
113
+ @test_datastream.attributes.fetch(:dsSize,nil).should be_nil
114
+ @test_datastream.size.should == "9999"
115
+ @test_datastream.attributes.fetch(:dsSize,nil).should_not be_nil
116
+ end
117
+
118
+ it "should default to an empty string if ds has not been saved" do
119
+ @test_datastream.attributes.fetch(:dsSize,nil).should be_nil
120
+ @test_datastream.size.should be_nil
121
+ @test_datastream.attributes.fetch(:dsSize,nil).should be_nil
122
+ end
123
+ end
124
+
85
125
  end
@@ -3,7 +3,7 @@ require File.join( File.dirname(__FILE__), "../spec_helper" )
3
3
  require 'active_fedora'
4
4
  require 'active_fedora/model'
5
5
  require 'mocha'
6
- include Mocha::Standalone
6
+ include Mocha::API
7
7
 
8
8
  describe ActiveFedora::Property do
9
9
 
@@ -4,7 +4,7 @@ require 'active_fedora'
4
4
  require "rexml/document"
5
5
  require 'mocha'
6
6
 
7
- include Mocha::Standalone
7
+ include Mocha::API
8
8
 
9
9
  describe ActiveFedora::Relationship do
10
10
 
@@ -45,5 +45,19 @@ describe Fedora::Datastream do
45
45
  @test_datastream.attributes[:dsLabel].should == "Foo dsLabel"
46
46
  end
47
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
48
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
49
63
  end
@@ -5,7 +5,7 @@ require 'xmlsimple'
5
5
  #require 'mocha'
6
6
 
7
7
  #include ActiveFedora::SemanticNode
8
- #include Mocha::Standalone
8
+ #include Mocha::API
9
9
 
10
10
  @@last_pid = 0
11
11
 
@@ -187,7 +187,6 @@ describe ActiveFedora::SemanticNode do
187
187
  end
188
188
 
189
189
  #can only duplicate predicates if not both inbound or not both outbound
190
- =begin
191
190
  class MockHasRelationshipDuplicatePredicate < SpecNode2
192
191
  has_relationship "testing", :has_member, :type=>SpecNode2
193
192
  had_exception = false
@@ -198,9 +197,7 @@ describe ActiveFedora::SemanticNode do
198
197
  end
199
198
  raise "Did not raise exception if duplicate predicate used" unless had_exception
200
199
  end
201
- =end
202
-
203
- =begin
200
+
204
201
  #can only duplicate predicates if not both inbound or not both outbound
205
202
  class MockHasRelationshipDuplicatePredicate2 < SpecNode2
206
203
  has_relationship "testing", :has_member, :type=>SpecNode2, :inbound=>true
@@ -212,7 +209,6 @@ describe ActiveFedora::SemanticNode do
212
209
  end
213
210
  raise "Did not raise exception if duplicate predicate used" unless had_exception
214
211
  end
215
- =end
216
212
 
217
213
  it 'should create relationship descriptions both inbound and outbound' do
218
214
  @test_object2 = MockHasRelationship.new
@@ -269,8 +265,7 @@ describe ActiveFedora::SemanticNode do
269
265
  mock_repo.expects(:find_model).with("_PID3_", "AudioRecord").returns("AR3")
270
266
  SpecNode.create_inbound_relationship_finders("parts", :is_part_of, :inbound => true)
271
267
  local_node = SpecNode.new()
272
- local_node.expects(:pid).returns("test:sample_pid")
273
- SpecNode.expects(:named_relationships_desc).returns({:inbound=>{"parts"=>{:predicate=>:is_part_of}}}).at_least_once()
268
+ local_node.expects(:internal_uri).returns("info:fedora/test:sample_pid")
274
269
  ActiveFedora::SolrService.instance.conn.expects(:query).with("is_part_of_s:info\\:fedora/test\\:sample_pid", :rows=>25).returns(solr_result)
275
270
  Fedora::Repository.expects(:instance).returns(mock_repo).times(3)
276
271
  Kernel.expects(:const_get).with("AudioRecord").returns("AudioRecord").times(3)
@@ -283,8 +278,7 @@ describe ActiveFedora::SemanticNode do
283
278
  local_node = SpecNode.new
284
279
  mock_repo = mock("repo")
285
280
  mock_repo.expects(:find_model).never
286
- local_node.expects(:pid).returns("test:sample_pid")
287
- SpecNode.expects(:named_relationships_desc).returns({:inbound=>{"constituents"=>{:predicate=>:is_constituent_of}}}).at_least_once()
281
+ local_node.expects(:internal_uri).returns("info:fedora/test:sample_pid")
288
282
  ActiveFedora::SolrService.instance.conn.expects(:query).with("is_constituent_of_s:info\\:fedora/test\\:sample_pid", :rows=>101).returns(solr_result)
289
283
  local_node.constituents(:response_format => :solr, :rows=>101).should equal(solr_result)
290
284
  end
@@ -293,8 +287,7 @@ describe ActiveFedora::SemanticNode do
293
287
  it "resulting _ids finder should search against solr and return an array of fedora PIDs" do
294
288
  SpecNode.create_inbound_relationship_finders("parts", :is_part_of, :inbound => true)
295
289
  local_node = SpecNode.new
296
- local_node.expects(:pid).returns("test:sample_pid")
297
- SpecNode.expects(:named_relationships_desc).returns({:inbound=>{"parts"=>{:predicate=>:is_part_of}}}).at_least_once()
290
+ local_node.expects(:internal_uri).returns("info:fedora/test:sample_pid")
298
291
  ActiveFedora::SolrService.instance.conn.expects(:query).with("is_part_of_s:info\\:fedora/test\\:sample_pid", :rows=>25).returns(mock("solr result", :hits => [Hash["id"=>"pid1"], Hash["id"=>"pid2"]]))
299
292
  local_node.parts(:response_format => :id_array).should == ["pid1", "pid2"]
300
293
  end
@@ -406,10 +399,10 @@ describe ActiveFedora::SemanticNode do
406
399
  end
407
400
  it "(:response_format => :solr) should construct a solr query that combines inbound and outbound searches" do
408
401
  # get the id array for outbound relationships then construct solr query by combining id array with inbound relationship search
409
- @local_node.expects(:outbound_relationships).returns({:has_part=>["mypid:1"]}).at_least_once()
402
+ @local_node.expects(:all_parts_outbound).with(:response_format=>:id_array).returns(["mypid:1"])
410
403
  id_array_query = ActiveFedora::SolrService.construct_query_for_pids(["mypid:1"])
411
404
  solr_result = mock("solr result")
412
- ActiveFedora::SolrService.instance.conn.expects(:query).with("#{id_array_query} OR (is_part_of_s:info\\:fedora/test\\:sample_pid)", :rows=>25).returns(solr_result)
405
+ ActiveFedora::SolrService.instance.conn.expects(:query).with("is_part_of_s:info\\:fedora/test\\:sample_pid OR #{id_array_query}", :rows=>25).returns(solr_result)
413
406
  @local_node.all_parts(:response_format=>:solr)
414
407
  end
415
408
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active-fedora
3
3
  version: !ruby/object:Gem::Version
4
- hash: 1
4
+ hash: 5
5
5
  prerelease:
6
6
  segments:
7
7
  - 2
8
8
  - 3
9
- - 1
10
- version: 2.3.1
9
+ - 3
10
+ version: 2.3.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Matt Zumwalt
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-07-06 00:00:00 -05:00
19
+ date: 2011-07-19 00:00:00 -04:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -444,6 +444,7 @@ files:
444
444
  - active-fedora.gemspec
445
445
  - config/fedora.yml
446
446
  - config/predicate_mappings.yml
447
+ - config/solr.yml
447
448
  - config/solr_mappings.yml
448
449
  - config/solr_mappings_af_0.1.yml
449
450
  - config/solr_mappings_bl_2.4.yml
@@ -466,7 +467,6 @@ files:
466
467
  - lib/active_fedora/samples/hydra-mods_article_datastream.rb
467
468
  - lib/active_fedora/samples/hydra-rights_metadata_datastream.rb
468
469
  - lib/active_fedora/samples/marpa-dc_datastream.rb
469
- - lib/active_fedora/samples/sample_af_obj_relationship_query_param.rb
470
470
  - lib/active_fedora/samples/special_thing.rb
471
471
  - lib/active_fedora/semantic_node.rb
472
472
  - lib/active_fedora/solr_service.rb
@@ -1,11 +0,0 @@
1
- class SampleAFObjRelationshipQueryParam < ActiveFedora::Base
2
- #points to all parents linked via is_member_of
3
- has_relationship "parents", :is_member_of
4
- #returns only parents that have a level value set to "series"
5
- has_relationship "series_parents", :is_member_of, :query_params=>{:q=>{"level_t"=>"series"}}
6
- #returns all parts
7
- has_relationship "parts", :is_part_of, :inbound=>true
8
- #returns only parts that have level to "series"
9
- has_relationship "series_parts", :is_part_of, :inbound=>true, :query_params=>{:q=>{"level_t"=>"series"}}
10
- has_bidirectional_relationship "bi_series_parts", :has_part, :is_part_of, :query_params=>{:q=>{"level_t"=>"series"}}
11
- end