active-fedora 6.1.1 → 6.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4f23c1daf82df2212fb662ee85456d47c3ea2b5b
4
- data.tar.gz: cd559e5b3c7c8bf406fd45e9560eb1a4d1e4efaf
3
+ metadata.gz: 9c01087204a8c5f60744938710ac3eb0c461b6e7
4
+ data.tar.gz: 49f69184528ee7b71ae305da79ea785fa6b682a4
5
5
  SHA512:
6
- metadata.gz: c99057e8b3f00720afd1d26d3738e163ee08417c68669850786db17714fda3b131833e7fe4a93af040a66bf1003724969e7f000baf8ebf5829b678e4ca4ee72b
7
- data.tar.gz: cdd4b0794c76415f8c52f4ea66d6e74a07b5d835c1c44324d6adb97efe2706598822b4bdcec374798233563e850ddf3a8a66996e270d22ce37493bf63877d1e6
6
+ metadata.gz: 5b90ee428f9e28fa66d2425dc5a021262a44ee85163a7595c68acb7bac96db4924b409e8b70af51d6a9e6f08efbb74ed4d74349a8af891d4badf910fd986ca41
7
+ data.tar.gz: 2d0b2da228cb0e2c27a328975ab89e15f0be882a05c18cd2acfd270515b83c6a05dfb50165f8588f15ca56da15080b2c34b061900db88c72da53d2c81f48ac28
@@ -1,7 +1,11 @@
1
1
  language: ruby
2
2
  rvm:
3
- - "1.9.3"
4
- - "2.0.0"
3
+ - 1.9.3
4
+ - 2.0.0
5
+
6
+ gemfile:
7
+ - gemfiles/gemfile.rails3
8
+ - gemfiles/gemfile.rails4
5
9
 
6
10
  notifications:
7
11
  irc: "irc.freenode.org#projecthydra"
@@ -1,3 +1,25 @@
1
+ 6.2.0 (2013-06-05)
2
+
3
+ Support for rails 4
4
+
5
+ Extracted the behavior of resolving a class from a string (ActiveFedora.class_from_string).
6
+
7
+ You can now pass parameters to accessor delegates.
8
+
9
+ You can set the object state attribute (objState)
10
+
11
+ Object state is indexed in solr
12
+
13
+ Label is now implemented as a delegate
14
+
15
+ Added Base.unique? to test whether a field is specified as being unique or not.
16
+
17
+ Removed dependency on builder
18
+
19
+ When searching for an rdf term in a complex graph, it should match on predicate and type. Previously
20
+ it was just matching on type.
21
+
22
+
1
23
  6.1.1
2
24
  Rdf nodes should check for an RDF.type when resolving classes
3
25
  Objects loaded via Solr should have datastream properties of same class
@@ -1,7 +1,8 @@
1
- !https://travis-ci.org/projecthydra/active_fedora.png?branch=master!:https://travis-ci.org/projecthydra/active_fedora
2
-
3
1
  h2. Description
4
2
 
3
+ !https://travis-ci.org/projecthydra/active_fedora.png?branch=master!:https://travis-ci.org/projecthydra/active_fedora !https://badge.fury.io/rb/active-fedora.png!:http://badge.fury.io/rb/active-fedora !https://gemnasium.com/projecthydra/active_fedora.png!:https://gemnasium.com/projecthydra/active_fedora
4
+
5
+
5
6
  RubyFedora and ActiveFedora provide a set of Ruby gems for creating and managing objects in the Fedora Repository Architecture ("http://fedora-commons.org":http://fedora-commons.org). ActiveFedora is loosely based on "ActiveRecord" in Rails. The 3.x series of ActiveFedora depends on Rails 3, specifically activemodel and activesupport.
6
7
 
7
8
  h2. Getting Help
@@ -17,9 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.add_dependency('rsolr')
18
18
  s.add_dependency('om', '~> 2.1.0')
19
19
  s.add_dependency('nom-xml', '>=0.5.1')
20
- s.add_dependency("activeresource", '>= 3.0.0')
21
20
  s.add_dependency("activesupport", '>= 3.0.0')
22
- s.add_dependency("builder", '~> 3.0.0')
23
21
  s.add_dependency("mediashelf-loggable")
24
22
  s.add_dependency("rubydora", '~>1.6')
25
23
  s.add_dependency("rdf")
@@ -0,0 +1,11 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec :path=>"../"
4
+
5
+ gem 'activemodel', '~> 3.2.13'
6
+
7
+ group :development, :test do
8
+ gem 'rcov', :platform => :mri_18
9
+ gem 'simplecov', :platform => :mri_19
10
+ gem 'simplecov-rcov', :platform => :mri_19
11
+ end
@@ -0,0 +1,10 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec :path=>"../"
4
+
5
+ gem 'activemodel', '4.0.0.rc1'
6
+
7
+ group :development, :test do
8
+ gem 'simplecov', :platform => :mri_19
9
+ gem 'simplecov-rcov', :platform => :mri_19
10
+ end
@@ -144,6 +144,32 @@ module ActiveFedora #:nodoc:
144
144
  def self.version
145
145
  ActiveFedora::VERSION
146
146
  end
147
+
148
+ # Convenience method for getting class constant based on a string
149
+ # @example
150
+ # ActiveFedora.class_from_string("Om")
151
+ # => Om
152
+ # ActiveFedora.class_from_string("ActiveFedora::RdfNode::TermProxy")
153
+ # => ActiveFedora::RdfNode::TermProxy
154
+ # @example Search within ActiveFedora::RdfNode for a class called "TermProxy"
155
+ # ActiveFedora.class_from_string("TermProxy", ActiveFedora::RdfNode)
156
+ # => ActiveFedora::RdfNode::TermProxy
157
+ def self.class_from_string(class_name, container_class=nil)
158
+ if class_name.include?("::")
159
+ # result = eval(class_name)
160
+ class_name.split('::').inject(Object) do |mod, class_name|
161
+ mod.const_get(class_name)
162
+ end
163
+ elsif !container_class.nil?
164
+ begin
165
+ container_class.const_get(class_name.to_sym)
166
+ rescue NameError
167
+ Kernel.const_get(class_name)
168
+ end
169
+ else
170
+ Kernel.const_get(class_name)
171
+ end
172
+ end
147
173
 
148
174
  end
149
175
 
@@ -30,6 +30,8 @@ module ActiveFedora
30
30
  self.fedora_connection = {}
31
31
  self.profile_solr_name = ActiveFedora::SolrService.solr_name("object_profile", :displayable)
32
32
 
33
+ delegate :label, :label=, to: :inner_object
34
+ delegate :state=, :state, to: :inner_object
33
35
 
34
36
  def method_missing(name, *args)
35
37
  dsid = corresponding_datastream_name(name)
@@ -216,11 +218,6 @@ module ActiveFedora
216
218
  "info:fedora/#{pid}"
217
219
  end
218
220
 
219
- #return the state of the inner object
220
- def state
221
- @inner_object.state
222
- end
223
-
224
221
  #return the owner id
225
222
  def owner_id
226
223
  @inner_object.ownerId
@@ -240,15 +237,6 @@ module ActiveFedora
240
237
  @inner_object.new? ? Time.now : @inner_object.profile["objLastModDate"]
241
238
  end
242
239
 
243
- #return the label of the inner object (unless it's a new object)
244
- def label
245
- @inner_object.label
246
- end
247
-
248
- def label=(new_label)
249
- @inner_object.label = new_label
250
- end
251
-
252
240
  def ==(comparison_object)
253
241
  comparison_object.equal?(self) ||
254
242
  (comparison_object.instance_of?(self.class) &&
@@ -16,9 +16,14 @@ module ActiveFedora
16
16
  array_setter(key, value)
17
17
  end
18
18
 
19
+
19
20
  private
20
- def array_reader(field)
21
- instance_exec(&self.class.delegates[field][:reader])
21
+ def array_reader(field, *args)
22
+ if args.present?
23
+ instance_exec(*args, &self.class.delegates[field][:reader])
24
+ else
25
+ instance_exec &self.class.delegates[field][:reader]
26
+ end
22
27
  end
23
28
 
24
29
  def array_setter(field, args)
@@ -53,7 +58,8 @@ module ActiveFedora
53
58
  # foo = Foo.new
54
59
  # foo.field1 = "My Value"
55
60
  # foo.field1 # => "My Value"
56
- # foo.field2 # => NoMethodError: undefined method `field2' for #<Foo:0x1af30c>
61
+ # foo.field2 # => [""]
62
+ # foo.field3 # => NoMethodError: undefined method `field3' for #<Foo:0x1af30c>
57
63
 
58
64
  def delegate(*methods)
59
65
  fields = methods.dup
@@ -89,7 +95,8 @@ module ActiveFedora
89
95
  # foo = Foo.new
90
96
  # foo.field1 = "My Value"
91
97
  # foo.field1 # => "My Value"
92
- # foo.field2 # => NoMethodError: undefined method `field2' for #<Foo:0x1af30c>
98
+ # foo.field2 # => [""]
99
+ # foo.field3 # => NoMethodError: undefined method `field3' for #<Foo:0x1af30c>
93
100
 
94
101
  def delegate_to(datastream,fields,args={})
95
102
  fields.each do |f|
@@ -99,22 +106,35 @@ module ActiveFedora
99
106
  end
100
107
  end
101
108
 
109
+ # Reveal if the delegated field is unique or not
110
+ # @params [Symbol] field the field to query
111
+ # @returns [Boolean]
112
+ def unique?(field)
113
+ delegates[field][:unique]
114
+ end
115
+
102
116
  private
103
117
  def create_delegate_reader(field, args)
104
118
  self.delegates[field] ||= {}
105
- self.delegates[field][:reader] = lambda do
119
+ self.delegates[field][:reader] = lambda do |*opts|
106
120
  ds = self.send(args[:to])
107
121
  if ds.kind_of?(ActiveFedora::RDFDatastream)
108
122
  ds.send(field)
109
123
  else
110
124
  terminology = args[:at] || [field]
111
- ds.send(:term_values, *terminology)
125
+ if terminology.length == 1 && opts.present?
126
+ ds.send(terminology.first, *opts)
127
+ else
128
+ ds.send(:term_values, *terminology)
129
+ end
112
130
  end
113
131
  end
114
132
 
115
- define_method field do
116
- val = self[field]
117
- args[:unique] ? val.first : val
133
+ self.delegates[field][:unique] = args[:unique]
134
+
135
+ define_method field do |*opts|
136
+ val = array_reader(field, *opts)
137
+ self.class.unique?(field) ? val.first : val
118
138
  end
119
139
  end
120
140
 
@@ -1,4 +1,5 @@
1
1
  require 'erb'
2
+ require 'psych'
2
3
 
3
4
  module ActiveFedora
4
5
  class FileConfigurator
@@ -109,7 +110,7 @@ module ActiveFedora
109
110
  end
110
111
 
111
112
  begin
112
- fedora_yml = YAML::load(config_erb)
113
+ fedora_yml = Psych.load(config_erb)
113
114
  rescue StandardError => e
114
115
  raise("fedora.yml was found, but could not be parsed.\n")
115
116
  end
@@ -132,7 +133,7 @@ module ActiveFedora
132
133
  end
133
134
 
134
135
  begin
135
- solr_yml = YAML::load(config_erb)
136
+ solr_yml = Psych.load(config_erb)
136
137
  rescue StandardError => e
137
138
  raise("solr.yml was found, but could not be parsed.\n")
138
139
  end
@@ -208,7 +209,7 @@ module ActiveFedora
208
209
 
209
210
  def predicate_config
210
211
  @predicate_config_path ||= build_predicate_config_path(File.dirname(self.path))
211
- YAML::load(File.open(@predicate_config_path)) if File.exist?(@predicate_config_path)
212
+ Psych.load(File.open(@predicate_config_path)) if File.exist?(@predicate_config_path)
212
213
  end
213
214
 
214
215
  protected
@@ -226,7 +227,7 @@ module ActiveFedora
226
227
  end
227
228
 
228
229
  def valid_predicate_mapping?(testfile)
229
- mapping = YAML::load(File.open(testfile))
230
+ mapping = Psych.load(File.open(testfile))
230
231
  return false unless mapping.has_key?(:default_namespace) && mapping[:default_namespace].is_a?(String)
231
232
  return false unless mapping.has_key?(:predicate_mapping) && mapping[:predicate_mapping].is_a?(Hash)
232
233
  true
@@ -14,6 +14,7 @@ module ActiveFedora
14
14
  m_time = Time.parse(m_time) unless m_time.is_a?(Time)
15
15
  Solrizer.set_field(solr_doc, 'system_create', c_time, :stored_sortable)
16
16
  Solrizer.set_field(solr_doc, 'system_modified', m_time, :stored_sortable)
17
+ Solrizer.set_field(solr_doc, 'object_state', state, :stored_sortable)
17
18
  Solrizer.set_field(solr_doc, 'active_fedora_model', self.class.inspect, :stored_sortable)
18
19
  solr_doc.merge!(SOLR_DOCUMENT_ID.to_sym => pid)
19
20
  solrize_profile(solr_doc)
@@ -24,11 +24,7 @@ module ActiveFedora
24
24
  logger.warn "#{model_value} is not a real class"
25
25
  return false
26
26
  end
27
- if model_value.include?("::")
28
- result = eval(model_value)
29
- else
30
- result = Kernel.const_get(model_value)
31
- end
27
+ result = ActiveFedora.class_from_string(model_value)
32
28
  unless result.nil?
33
29
  model_ns = (result.respond_to? :pid_namespace) ? result.pid_namespace : ContentModel::CMODEL_NAMESPACE
34
30
  if model_ns != pid_ns
@@ -25,9 +25,11 @@ module ActiveFedora
25
25
  @subject = nil
26
26
  end
27
27
 
28
- # @param [Symbol, RDF::URI] predicate the predicate to insert into the graph
29
- def get_values(subject, predicate)
30
- options = config_for_term_or_uri(predicate)
28
+ # @param [RDF::URI] subject the base node to start the search from
29
+ # @param [Symbol] term the term to get the values for
30
+ def get_values(subject, term)
31
+ options = config_for_term_or_uri(term)
32
+ predicate = options[:predicate]
31
33
  TermProxy.new(self, subject, predicate, options)
32
34
  end
33
35
 
@@ -35,7 +37,7 @@ module ActiveFedora
35
37
  _, conf = self.class.config_for_predicate(predicate)
36
38
  class_name = conf[:class_name]
37
39
  return nil unless class_name
38
- self.class.const_get(class_name.to_sym)
40
+ ActiveFedora.class_from_string(class_name, self.class)
39
41
  end
40
42
 
41
43
  # if there are any existing statements with this predicate, replace them
@@ -43,24 +45,23 @@ module ActiveFedora
43
45
  # @param [Symbol, RDF::URI] predicate the predicate to insert into the graph
44
46
  # @param [Array,#to_s] values the value/values to insert into the graph
45
47
  def set_value(subject, predicate, values)
46
-
47
48
  options = config_for_term_or_uri(predicate)
48
49
  predicate = options[:predicate]
50
+ values = Array(values)
51
+
52
+ remove_existing_values(subject, predicate, values)
49
53
 
50
- delete_predicate(subject, predicate)
51
- Array(values).each do |arg|
54
+ values.each do |arg|
52
55
  if arg.respond_to?(:rdf_subject) # an RdfObject
53
56
  graph.insert([subject, predicate, arg.rdf_subject ])
54
57
  else
55
58
  arg = arg.to_s if arg.kind_of? RDF::Literal
56
-
57
59
  graph.insert([subject, predicate, arg])
58
60
  end
59
61
  end
60
62
 
61
63
  TermProxy.new(self, subject, predicate, options)
62
64
  end
63
-
64
65
 
65
66
  def delete_predicate(subject, predicate, values = nil)
66
67
  predicate = find_predicate(predicate) unless predicate.kind_of? RDF::URI
@@ -78,7 +79,6 @@ module ActiveFedora
78
79
  graph.delete [subject, predicate, v]
79
80
  end
80
81
  end
81
-
82
82
  end
83
83
 
84
84
  # append a value
@@ -117,8 +117,8 @@ module ActiveFedora
117
117
  def method_missing(name, *args)
118
118
  if (md = /^([^=]+)=$/.match(name.to_s)) && pred = find_predicate(md[1])
119
119
  set_value(rdf_subject, pred, *args)
120
- elsif pred = find_predicate(name)
121
- get_values(rdf_subject, pred)
120
+ elsif find_predicate(name)
121
+ get_values(rdf_subject, name)
122
122
  else
123
123
  super
124
124
  end
@@ -127,6 +127,43 @@ module ActiveFedora
127
127
  end
128
128
 
129
129
  private
130
+
131
+ def remove_existing_values(subject, predicate, values)
132
+ if values.any? { |x| x.respond_to?(:rdf_subject)}
133
+ values.each do |arg|
134
+ if arg.respond_to?(:rdf_subject) # an RdfObject
135
+ # can't just delete_predicate, have to delete the predicate with the class
136
+ values_to_delete = find_values_with_class(subject, predicate, arg.class.rdf_type)
137
+ delete_predicate(subject, predicate, values_to_delete)
138
+ else
139
+ delete_predicate(subject, predicate)
140
+ end
141
+ end
142
+ else
143
+ delete_predicate(subject, predicate)
144
+ end
145
+ end
146
+
147
+
148
+ def find_values_with_class(subject, predicate, rdf_type)
149
+ matching = []
150
+ query = RDF::Query.new do
151
+ pattern [subject, predicate, :value]
152
+ end
153
+ query.execute(graph).each do |solution|
154
+ if rdf_type
155
+ query2 = RDF::Query.new do
156
+ pattern [solution.value, RDF.type, rdf_type]
157
+ end
158
+ query2.execute(graph).each do |sol2|
159
+ matching << solution.value
160
+ end
161
+ else
162
+ matching << solution.value
163
+ end
164
+ end
165
+ matching
166
+ end
130
167
  class Builder
131
168
  def initialize(parent)
132
169
  @parent = parent
@@ -46,7 +46,14 @@ module ActiveFedora
46
46
  if options[:type] == :date
47
47
  v = Date.parse(v)
48
48
  end
49
- values << v
49
+ # If the user provided options[:class_name], we should query to make sure this
50
+ # potential solution is of the right RDF.type
51
+ if options[:class_name]
52
+ klass = class_from_rdf_type(v, predicate)
53
+ values << v if klass == ActiveFedora.class_from_string(options[:class_name], graph.class)
54
+ else
55
+ values << v
56
+ end
50
57
  end
51
58
 
52
59
  if options[:class_name]
@@ -2,7 +2,7 @@ module ActiveFedora
2
2
  # Helps Rubydora create datastreams of the type defined by the ActiveFedora::Base#datastream_class_for_name
3
3
  class UnsavedDigitalObject
4
4
  include DigitalObject::DatastreamBootstrap
5
- attr_accessor :original_class, :ownerId, :datastreams, :label, :namespace
5
+ attr_accessor :original_class, :ownerId, :state, :datastreams, :label, :namespace
6
6
 
7
7
  PLACEHOLDER = '__DO_NOT_USE__'
8
8
 
@@ -36,6 +36,7 @@ module ActiveFedora
36
36
  end
37
37
  obj.ownerId = ownerId if ownerId
38
38
  obj.label = label if label
39
+ obj.state = state if state
39
40
  obj
40
41
  end
41
42
 
@@ -1,3 +1,3 @@
1
1
  module ActiveFedora
2
- VERSION = "6.1.1"
2
+ VERSION = "6.2.0"
3
3
  end
@@ -25,6 +25,17 @@ describe "A base object with metadata" do
25
25
  end
26
26
  end
27
27
 
28
+ describe "setting object state" do
29
+ it "should store it" do
30
+ obj = MockAFBaseRelationship.create
31
+ obj.state.should == 'A'
32
+ obj.state='D'
33
+ obj.save!
34
+ obj.reload
35
+ obj.state.should == 'D'
36
+ end
37
+ end
38
+
28
39
  describe "that already exists in the repo" do
29
40
  before do
30
41
  @release = MockAFBaseRelationship.create()
@@ -245,10 +256,7 @@ describe ActiveFedora::Base do
245
256
  @test_object2.save
246
257
  inner_object = @test_object2.inner_object
247
258
  inner_object.pid.should == @test_object2.pid
248
- inner_object.should respond_to(:state)
249
259
  inner_object.should respond_to(:lastModifiedDate)
250
- inner_object.should respond_to(:ownerId)
251
- inner_object.state.should == "A"
252
260
  inner_object.ownerId.should == "fedoraAdmin"
253
261
  end
254
262
  end
@@ -183,14 +183,15 @@ END
183
183
  series = SpecDatastream::Series.new ds.graph
184
184
  series.title = ["renovating bathrooms"]
185
185
  ds.series = series
186
- ds.series.first.type.size.should == 1
187
- ds.series.first.type.first.to_s.should == 'http://www.ebu.ch/metadata/ontologies/ebucore#Series'
188
186
 
189
187
  program = SpecDatastream::Program.new ds.graph
190
188
  program.title = ["This old House"]
191
189
  ds.program = program
190
+
192
191
  ds.program.first.type.size.should == 1
193
192
  ds.program.first.type.first.to_s.should == 'http://www.ebu.ch/metadata/ontologies/ebucore#Programme'
193
+ ds.series.first.type.size.should == 1
194
+ ds.series.first.type.first.to_s.should == 'http://www.ebu.ch/metadata/ontologies/ebucore#Series'
194
195
  end
195
196
 
196
197
  end
@@ -52,7 +52,7 @@ describe ActiveFedora::Model do
52
52
  subject { ActiveFedora::Base.load_instance_from_solr('hydrangea:fixture_mods_article1') }
53
53
  it { should be_instance_of HydrangeaArticle}
54
54
  end
55
- describe "with metadata datastrem spec" do
55
+ describe "with metadata datastream spec" do
56
56
  subject { ActiveFedora::Base.load_instance_from_solr('hydrangea:fixture_mods_article1') }
57
57
  it "should create an xml datastream" do
58
58
  subject.datastreams['properties'].should be_kind_of ActiveFedora::SimpleDatastream
@@ -102,4 +102,13 @@ describe ActiveFedora do
102
102
  end
103
103
  end
104
104
  end
105
+
106
+ describe "#class_from_string" do
107
+ it "should return class constants based on strings" do
108
+ ActiveFedora.class_from_string("Om").should == Om
109
+ ActiveFedora.class_from_string("ActiveFedora::RdfNode::TermProxy").should == ActiveFedora::RdfNode::TermProxy
110
+ ActiveFedora.class_from_string("TermProxy", ActiveFedora::RdfNode).should == ActiveFedora::RdfNode::TermProxy
111
+
112
+ end
113
+ end
105
114
  end
@@ -62,6 +62,10 @@ describe ActiveFedora::Base do
62
62
  @n = BarHistory2.new()
63
63
  end
64
64
 
65
+ it "should reveal the unique properties" do
66
+ BarHistory2.unique?(:fubar).should be_true
67
+ BarHistory2.unique?(:cow).should be_false
68
+ end
65
69
 
66
70
  it "should save a delegated property uniquely" do
67
71
  @n.fubar="Quack"
@@ -71,6 +75,13 @@ describe ActiveFedora::Base do
71
75
  @n.donkey.should == "Bray"
72
76
  @n.xmlish.term_values(:donkey).first.should == 'Bray'
73
77
  end
78
+
79
+ it "should allow passing parameters to the delegate accessor" do
80
+ @n.cow=["one", "two"]
81
+ @n.cow(1).should == ['two']
82
+ end
83
+
84
+
74
85
  it "should return an array if not marked as unique" do
75
86
  ### Metadata datastream does not appear to support multiple value setting
76
87
  @n.cow=["one", "two"]
@@ -7,6 +7,7 @@ describe ActiveFedora::Base do
7
7
  ActiveFedora::Base.descendants.should include(HydrangeaArticle, SpecialThing)
8
8
  end
9
9
  end
10
+
10
11
  describe "sharding" do
11
12
  it "should have a shard_index" do
12
13
  ActiveFedora::Base.shard_index(@this_pid).should == 0
@@ -406,12 +407,14 @@ describe ActiveFedora::Base do
406
407
  @test_object.should respond_to(:to_solr)
407
408
  end
408
409
 
409
- it "should add pid, system_create_date and system_modified_date from object attributes" do
410
+ it "should add pid, system_create_date, system_modified_date and object_state from object attributes" do
410
411
  @test_object.should_receive(:create_date).and_return("2012-03-04T03:12:02Z")
411
412
  @test_object.should_receive(:modified_date).and_return("2012-03-07T03:12:02Z")
413
+ @test_object.state = "D"
412
414
  solr_doc = @test_object.to_solr
413
415
  solr_doc[ActiveFedora::SolrService.solr_name("system_create", :stored_sortable, type: :date)].should eql("2012-03-04T03:12:02Z")
414
416
  solr_doc[ActiveFedora::SolrService.solr_name("system_modified", :stored_sortable, type: :date)].should eql("2012-03-07T03:12:02Z")
417
+ solr_doc[ActiveFedora::SolrService.solr_name("object_state", :stored_sortable)].should eql("D")
415
418
  solr_doc[:id].should eql("#{@test_object.pid}")
416
419
  end
417
420
 
@@ -2,13 +2,13 @@ require 'spec_helper'
2
2
 
3
3
  describe ActiveFedora::Config do
4
4
  describe "with a single fedora instance" do
5
- conf = YAML.load(File.read('spec/fixtures/rails_root/config/fedora.yml'))['test']
5
+ conf = Psych.load(File.read('spec/fixtures/rails_root/config/fedora.yml'))['test']
6
6
  subject { ActiveFedora::Config.new(conf) }
7
7
  its(:credentials) { should == {:url => 'http://testhost.com:8983/fedora', :user=> 'fedoraAdmin', :password=> 'fedoraAdmin'}}
8
8
  it { should_not be_sharded }
9
9
  end
10
10
  describe "with several fedora shards" do
11
- conf = YAML.load(File.read('spec/fixtures/sharded_fedora.yml'))['test']
11
+ conf = Psych.load(File.read('spec/fixtures/sharded_fedora.yml'))['test']
12
12
  subject { ActiveFedora::Config.new(conf) }
13
13
  its(:credentials) { should == [{:url => 'http://127.0.0.1:8983/fedora1', :user=> 'fedoraAdmin', :password=> 'fedoraAdmin'},
14
14
  {:url => 'http://127.0.0.1:8983/fedora2', :user=> 'fedoraAdmin', :password=> 'fedoraAdmin'},
@@ -11,6 +11,11 @@ describe ActiveFedora::UnsavedDigitalObject do
11
11
  @obj.ownerId.should == 'fooo'
12
12
  end
13
13
 
14
+ it "should have state" do
15
+ @obj.ownerId = 'D'
16
+ @obj.ownerId.should == 'D'
17
+ end
18
+
14
19
  it "should have a default pid" do
15
20
  @obj.pid.should == "__DO_NOT_USE__"
16
21
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active-fedora
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.1.1
4
+ version: 6.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Zumwalt
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-05-08 00:00:00.000000000 Z
13
+ date: 2013-06-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rsolr
@@ -54,20 +54,6 @@ dependencies:
54
54
  - - '>='
55
55
  - !ruby/object:Gem::Version
56
56
  version: 0.5.1
57
- - !ruby/object:Gem::Dependency
58
- name: activeresource
59
- requirement: !ruby/object:Gem::Requirement
60
- requirements:
61
- - - '>='
62
- - !ruby/object:Gem::Version
63
- version: 3.0.0
64
- type: :runtime
65
- prerelease: false
66
- version_requirements: !ruby/object:Gem::Requirement
67
- requirements:
68
- - - '>='
69
- - !ruby/object:Gem::Version
70
- version: 3.0.0
71
57
  - !ruby/object:Gem::Dependency
72
58
  name: activesupport
73
59
  requirement: !ruby/object:Gem::Requirement
@@ -82,20 +68,6 @@ dependencies:
82
68
  - - '>='
83
69
  - !ruby/object:Gem::Version
84
70
  version: 3.0.0
85
- - !ruby/object:Gem::Dependency
86
- name: builder
87
- requirement: !ruby/object:Gem::Requirement
88
- requirements:
89
- - - ~>
90
- - !ruby/object:Gem::Version
91
- version: 3.0.0
92
- type: :runtime
93
- prerelease: false
94
- version_requirements: !ruby/object:Gem::Requirement
95
- requirements:
96
- - - ~>
97
- - !ruby/object:Gem::Version
98
- version: 3.0.0
99
71
  - !ruby/object:Gem::Dependency
100
72
  name: mediashelf-loggable
101
73
  requirement: !ruby/object:Gem::Requirement
@@ -320,6 +292,8 @@ files:
320
292
  - config/solr.yml
321
293
  - config/solr_mappings_af_0.1.yml
322
294
  - config/solr_mappings_bl_2.4.yml
295
+ - gemfiles/gemfile.rails3
296
+ - gemfiles/gemfile.rails4
323
297
  - lib/active-fedora.rb
324
298
  - lib/active_fedora.rb
325
299
  - lib/active_fedora/associations.rb