active-fedora 6.8.0 → 7.0.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (215) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +15 -5
  4. data/CONTRIBUTING.md +2 -0
  5. data/Gemfile +0 -2
  6. data/History.txt +2 -32
  7. data/README.md +143 -0
  8. data/Rakefile +5 -7
  9. data/active-fedora.gemspec +9 -9
  10. data/gemfiles/rails3.gemfile +11 -0
  11. data/gemfiles/rails4.gemfile +10 -0
  12. data/lib/active_fedora.rb +31 -4
  13. data/lib/active_fedora/association_relation.rb +18 -0
  14. data/lib/active_fedora/associations.rb +38 -171
  15. data/lib/active_fedora/associations/association.rb +163 -0
  16. data/lib/active_fedora/associations/association_scope.rb +39 -0
  17. data/lib/active_fedora/associations/belongs_to_association.rb +47 -25
  18. data/lib/active_fedora/associations/builder/association.rb +55 -0
  19. data/lib/active_fedora/associations/builder/belongs_to.rb +100 -0
  20. data/lib/active_fedora/associations/builder/collection_association.rb +56 -0
  21. data/lib/active_fedora/associations/builder/has_and_belongs_to_many.rb +30 -0
  22. data/lib/active_fedora/associations/builder/has_many.rb +63 -0
  23. data/lib/active_fedora/associations/builder/singular_association.rb +32 -0
  24. data/lib/active_fedora/associations/{association_collection.rb → collection_association.rb} +203 -53
  25. data/lib/active_fedora/associations/collection_proxy.rb +862 -0
  26. data/lib/active_fedora/associations/has_and_belongs_to_many_association.rb +35 -25
  27. data/lib/active_fedora/associations/has_many_association.rb +36 -11
  28. data/lib/active_fedora/associations/singular_association.rb +62 -0
  29. data/lib/active_fedora/attributes.rb +43 -139
  30. data/lib/active_fedora/autosave_association.rb +317 -0
  31. data/lib/active_fedora/base.rb +10 -327
  32. data/lib/active_fedora/callbacks.rb +1 -3
  33. data/lib/active_fedora/content_model.rb +16 -0
  34. data/lib/active_fedora/core.rb +151 -0
  35. data/lib/active_fedora/datastream_attribute.rb +76 -0
  36. data/lib/active_fedora/datastream_hash.rb +8 -13
  37. data/lib/active_fedora/datastreams.rb +39 -26
  38. data/lib/active_fedora/digital_object.rb +2 -2
  39. data/lib/active_fedora/fedora_attributes.rb +45 -0
  40. data/lib/active_fedora/fixture_loader.rb +1 -1
  41. data/lib/active_fedora/indexing.rb +6 -1
  42. data/lib/active_fedora/model.rb +0 -17
  43. data/lib/active_fedora/nested_attributes.rb +2 -2
  44. data/lib/active_fedora/null_relation.rb +7 -0
  45. data/lib/active_fedora/om_datastream.rb +3 -4
  46. data/lib/active_fedora/persistence.rb +41 -29
  47. data/lib/active_fedora/querying.rb +2 -163
  48. data/lib/active_fedora/rdf.rb +1 -0
  49. data/lib/active_fedora/rdf/indexing.rb +67 -0
  50. data/lib/active_fedora/rdf_datastream.rb +2 -50
  51. data/lib/active_fedora/rdf_node.rb +12 -7
  52. data/lib/active_fedora/rdf_node/term_proxy.rb +30 -21
  53. data/lib/active_fedora/rdfxml_rdf_datastream.rb +1 -1
  54. data/lib/active_fedora/reflection.rb +163 -20
  55. data/lib/active_fedora/relation.rb +33 -130
  56. data/lib/active_fedora/relation/calculations.rb +19 -0
  57. data/lib/active_fedora/relation/delegation.rb +22 -0
  58. data/lib/active_fedora/relation/finder_methods.rb +247 -0
  59. data/lib/active_fedora/relation/merger.rb +22 -0
  60. data/lib/active_fedora/relation/query_methods.rb +58 -0
  61. data/lib/active_fedora/relation/spawn_methods.rb +46 -0
  62. data/lib/active_fedora/relationship_graph.rb +0 -2
  63. data/lib/active_fedora/rels_ext_datastream.rb +1 -4
  64. data/lib/active_fedora/rubydora_connection.rb +1 -1
  65. data/lib/active_fedora/scoping.rb +20 -0
  66. data/lib/active_fedora/scoping/default.rb +38 -0
  67. data/lib/active_fedora/scoping/named.rb +32 -0
  68. data/lib/active_fedora/semantic_node.rb +54 -106
  69. data/lib/active_fedora/serialization.rb +19 -0
  70. data/lib/active_fedora/sharding.rb +58 -0
  71. data/lib/active_fedora/solr_digital_object.rb +15 -5
  72. data/lib/active_fedora/solr_instance_loader.rb +1 -1
  73. data/lib/active_fedora/solr_service.rb +1 -1
  74. data/lib/active_fedora/unsaved_digital_object.rb +6 -4
  75. data/lib/active_fedora/version.rb +1 -1
  76. data/lib/tasks/active_fedora.rake +3 -0
  77. data/lib/tasks/active_fedora_dev.rake +6 -5
  78. data/spec/config_helper.rb +14 -14
  79. data/spec/integration/associations_spec.rb +168 -455
  80. data/spec/integration/attributes_spec.rb +12 -11
  81. data/spec/integration/auditable_spec.rb +11 -11
  82. data/spec/integration/autosave_association_spec.rb +25 -0
  83. data/spec/integration/base_spec.rb +163 -163
  84. data/spec/integration/belongs_to_association_spec.rb +166 -0
  85. data/spec/integration/bug_spec.rb +7 -7
  86. data/spec/integration/collection_association_spec.rb +58 -0
  87. data/spec/integration/complex_rdf_datastream_spec.rb +88 -88
  88. data/spec/integration/datastream_collections_spec.rb +69 -69
  89. data/spec/integration/datastream_spec.rb +43 -43
  90. data/spec/integration/datastreams_spec.rb +63 -63
  91. data/spec/integration/delete_all_spec.rb +46 -39
  92. data/spec/integration/fedora_solr_sync_spec.rb +5 -5
  93. data/spec/integration/field_to_solr_name_spec.rb +34 -0
  94. data/spec/integration/full_featured_model_spec.rb +100 -101
  95. data/spec/integration/has_and_belongs_to_many_associations_spec.rb +341 -0
  96. data/spec/integration/has_many_associations_spec.rb +172 -24
  97. data/spec/integration/json_serialization_spec.rb +31 -0
  98. data/spec/integration/load_from_solr_spec.rb +48 -0
  99. data/spec/integration/model_spec.rb +35 -40
  100. data/spec/integration/nested_attribute_spec.rb +42 -43
  101. data/spec/integration/ntriples_datastream_spec.rb +131 -113
  102. data/spec/integration/om_datastream_spec.rb +67 -67
  103. data/spec/integration/persistence_spec.rb +7 -7
  104. data/spec/integration/rdf_nested_attributes_spec.rb +56 -56
  105. data/spec/integration/relation_delegation_spec.rb +26 -25
  106. data/spec/integration/relation_spec.rb +42 -0
  107. data/spec/integration/rels_ext_datastream_spec.rb +20 -20
  108. data/spec/integration/scoped_query_spec.rb +61 -51
  109. data/spec/integration/solr_instance_loader_spec.rb +5 -5
  110. data/spec/integration/solr_service_spec.rb +46 -46
  111. data/spec/samples/hydra-mods_article_datastream.rb +334 -334
  112. data/spec/samples/hydra-rights_metadata_datastream.rb +57 -57
  113. data/spec/samples/marpa-dc_datastream.rb +17 -17
  114. data/spec/samples/models/audio_record.rb +16 -16
  115. data/spec/samples/models/image.rb +2 -2
  116. data/spec/samples/models/mods_article.rb +5 -5
  117. data/spec/samples/models/oral_history.rb +18 -18
  118. data/spec/samples/models/seminar.rb +24 -24
  119. data/spec/samples/models/seminar_audio_file.rb +17 -17
  120. data/spec/samples/oral_history_sample_model.rb +21 -21
  121. data/spec/samples/special_thing.rb +14 -14
  122. data/spec/spec_helper.rb +11 -7
  123. data/spec/support/an_active_model.rb +2 -8
  124. data/spec/support/freeze_mocks.rb +12 -0
  125. data/spec/support/mock_fedora.rb +17 -16
  126. data/spec/unit/active_fedora_spec.rb +58 -60
  127. data/spec/unit/attributes_spec.rb +314 -0
  128. data/spec/unit/base_active_model_spec.rb +28 -27
  129. data/spec/unit/base_cma_spec.rb +5 -5
  130. data/spec/unit/base_datastream_management_spec.rb +27 -27
  131. data/spec/unit/base_extra_spec.rb +76 -48
  132. data/spec/unit/base_spec.rb +277 -348
  133. data/spec/unit/callback_spec.rb +18 -19
  134. data/spec/unit/code_configurator_spec.rb +17 -17
  135. data/spec/unit/config_spec.rb +8 -16
  136. data/spec/unit/content_model_spec.rb +79 -60
  137. data/spec/unit/datastream_collections_spec.rb +229 -229
  138. data/spec/unit/datastream_spec.rb +51 -63
  139. data/spec/unit/datastreams_spec.rb +87 -87
  140. data/spec/unit/file_configurator_spec.rb +217 -217
  141. data/spec/unit/has_and_belongs_to_many_collection_spec.rb +44 -25
  142. data/spec/unit/has_many_collection_spec.rb +26 -8
  143. data/spec/unit/inheritance_spec.rb +13 -12
  144. data/spec/unit/model_spec.rb +39 -45
  145. data/spec/unit/nom_datastream_spec.rb +15 -15
  146. data/spec/unit/ntriples_datastream_spec.rb +123 -118
  147. data/spec/unit/om_datastream_spec.rb +227 -233
  148. data/spec/unit/persistence_spec.rb +34 -15
  149. data/spec/unit/predicates_spec.rb +73 -73
  150. data/spec/unit/property_spec.rb +17 -9
  151. data/spec/unit/qualified_dublin_core_datastream_spec.rb +33 -33
  152. data/spec/unit/query_spec.rb +222 -198
  153. data/spec/unit/rdf_datastream_spec.rb +21 -28
  154. data/spec/unit/rdf_list_nested_attributes_spec.rb +34 -34
  155. data/spec/unit/rdf_list_spec.rb +65 -64
  156. data/spec/unit/rdf_node_spec.rb +7 -7
  157. data/spec/unit/rdf_xml_writer_spec.rb +10 -10
  158. data/spec/unit/rdfxml_rdf_datastream_spec.rb +27 -27
  159. data/spec/unit/relationship_graph_spec.rb +51 -51
  160. data/spec/unit/rels_ext_datastream_spec.rb +68 -74
  161. data/spec/unit/rspec_matchers/belong_to_associated_active_fedora_object_matcher_spec.rb +15 -15
  162. data/spec/unit/rspec_matchers/have_many_associated_active_fedora_objects_matcher_spec.rb +15 -15
  163. data/spec/unit/rspec_matchers/have_predicate_matcher_spec.rb +15 -15
  164. data/spec/unit/rspec_matchers/match_fedora_datastream_matcher_spec.rb +12 -12
  165. data/spec/unit/rubydora_connection_spec.rb +5 -5
  166. data/spec/unit/semantic_node_spec.rb +48 -107
  167. data/spec/unit/serializers_spec.rb +4 -4
  168. data/spec/unit/service_definitions_spec.rb +26 -26
  169. data/spec/unit/simple_datastream_spec.rb +17 -17
  170. data/spec/unit/solr_config_options_spec.rb +29 -28
  171. data/spec/unit/solr_digital_object_spec.rb +17 -25
  172. data/spec/unit/solr_service_spec.rb +95 -82
  173. data/spec/unit/unsaved_digital_object_spec.rb +24 -23
  174. data/spec/unit/validations_spec.rb +21 -21
  175. metadata +110 -159
  176. data/.rspec +0 -1
  177. data/.rubocop.yml +0 -1
  178. data/.rubocop_todo.yml +0 -938
  179. data/CONSOLE_GETTING_STARTED.textile +0 -1
  180. data/NOKOGIRI_DATASTREAMS.textile +0 -1
  181. data/README.textile +0 -116
  182. data/lib/active_fedora/associations/association_proxy.rb +0 -178
  183. data/lib/active_fedora/delegating.rb +0 -72
  184. data/lib/active_fedora/nokogiri_datastream.rb +0 -11
  185. data/spec/integration/delegating_spec.rb +0 -59
  186. data/spec/rails3_test_app/.gitignore +0 -4
  187. data/spec/rails3_test_app/.rspec +0 -1
  188. data/spec/rails3_test_app/Gemfile +0 -40
  189. data/spec/rails3_test_app/Rakefile +0 -7
  190. data/spec/rails3_test_app/app/controllers/application_controller.rb +0 -3
  191. data/spec/rails3_test_app/app/helpers/application_helper.rb +0 -2
  192. data/spec/rails3_test_app/app/views/layouts/application.html.erb +0 -14
  193. data/spec/rails3_test_app/config.ru +0 -4
  194. data/spec/rails3_test_app/config/application.rb +0 -42
  195. data/spec/rails3_test_app/config/boot.rb +0 -6
  196. data/spec/rails3_test_app/config/database.yml +0 -22
  197. data/spec/rails3_test_app/config/environment.rb +0 -5
  198. data/spec/rails3_test_app/config/environments/development.rb +0 -25
  199. data/spec/rails3_test_app/config/environments/production.rb +0 -49
  200. data/spec/rails3_test_app/config/environments/test.rb +0 -35
  201. data/spec/rails3_test_app/config/initializers/backtrace_silencers.rb +0 -7
  202. data/spec/rails3_test_app/config/initializers/inflections.rb +0 -10
  203. data/spec/rails3_test_app/config/initializers/mime_types.rb +0 -5
  204. data/spec/rails3_test_app/config/initializers/secret_token.rb +0 -7
  205. data/spec/rails3_test_app/config/initializers/session_store.rb +0 -8
  206. data/spec/rails3_test_app/config/locales/en.yml +0 -5
  207. data/spec/rails3_test_app/config/routes.rb +0 -58
  208. data/spec/rails3_test_app/db/seeds.rb +0 -7
  209. data/spec/rails3_test_app/run_tests +0 -3
  210. data/spec/rails3_test_app/script/rails +0 -6
  211. data/spec/rails3_test_app/spec/spec_helper.rb +0 -27
  212. data/spec/rails3_test_app/spec/unit/rails_3_init.rb +0 -15
  213. data/spec/unit/association_proxy_spec.rb +0 -12
  214. data/spec/unit/base_delegate_spec.rb +0 -197
  215. data/spec/unit/base_delegate_to_spec.rb +0 -73
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe ActiveFedora::Attributes::Serializers do
4
4
  subject { ActiveFedora::Base }
5
- describe 'deserialize_dates_from_form' do
5
+ describe "deserialize_dates_from_form" do
6
6
  before do
7
7
  class Foo < ActiveFedora::Base
8
8
  attr_accessor :birthday
@@ -12,9 +12,9 @@ describe ActiveFedora::Attributes::Serializers do
12
12
  Object.send(:remove_const, :Foo)
13
13
  end
14
14
  subject { Foo.new }
15
- it 'should deserialize dates' do
16
- subject.attributes = {'birthday(1i)' => '2012', 'birthday(2i)' => '10', 'birthday(3i)' => '31'}
17
- expect(subject.birthday).to eq('2012-10-31')
15
+ it "should deserialize dates" do
16
+ subject.attributes = {'birthday(1i)' =>'2012', 'birthday(2i)' =>'10', 'birthday(3i)' => '31'}
17
+ subject.birthday.should == '2012-10-31'
18
18
  end
19
19
  end
20
20
 
@@ -14,50 +14,50 @@ describe ActiveFedora::ServiceDefinitions do
14
14
  </fmm:MethodMap>
15
15
  MMAP
16
16
  @repository = ActiveFedora::Base.connection_for_pid(0)
17
- allow(@repository).to receive(:datastream_dissemination).with({:pid => 'test:12', :dsid => 'METHODMAP'}).and_return mmap
18
- Test.has_service_definition 'test:12'
17
+ @repository.stub(:datastream_dissemination).with({:pid=>'test:12',:dsid=>'METHODMAP'}).and_return mmap
18
+ Test.has_service_definition "test:12"
19
19
  end
20
20
 
21
- subject {
21
+ subject {
22
22
  obj = Test.new()
23
- allow(obj).to receive(:pid).and_return('monkey:99')
23
+ obj.stub(:pid).and_return('monkey:99')
24
24
  obj
25
25
  }
26
- describe 'method lookup' do
27
- it 'should find method keys in the YAML config' do
28
- expect(ActiveFedora::ServiceDefinitions.lookup_method('fedora-system:3', 'viewObjectProfile')).to eq(:object_profile)
26
+ describe "method lookup" do
27
+ it "should find method keys in the YAML config" do
28
+ ActiveFedora::ServiceDefinitions.lookup_method("fedora-system:3", "viewObjectProfile").should == :object_profile
29
29
  end
30
30
  end
31
- describe 'method creation' do
32
- it 'should create the system sdef methods' do
33
- expect(subject).to respond_to(:object_profile)
31
+ describe "method creation" do
32
+ it "should create the system sdef methods" do
33
+ subject.should respond_to(:object_profile)
34
34
  end
35
- it 'should create the declared sdef methods' do
36
- expect(subject).to respond_to(:document_style_1)
35
+ it "should create the declared sdef methods" do
36
+ subject.should respond_to(:document_style_1)
37
37
  end
38
38
  end
39
- describe 'generated method' do
40
- it 'should call the appropriate rubydora rest api method' do
41
- expect(@repository).to receive(:dissemination).with({:pid => 'monkey:99', :sdef => 'test:12', :method => 'getDocumentStyle1'})
39
+ describe "generated method" do
40
+ it "should call the appropriate rubydora rest api method" do
41
+ @repository.should_receive(:dissemination).with({:pid=>'monkey:99',:sdef=>'test:12', :method=>'getDocumentStyle1'})
42
42
  #@mock_client.stub(:[]).with('objects/monkey%3A99/methods/test%3A12/getDocumentStyle1')
43
43
 
44
44
  subject.document_style_1
45
45
  end
46
- it 'should call the appropriate rubydora rest api method with parameters' do
47
- expect(@repository).to receive(:dissemination).with({:pid => 'monkey:99', :sdef => 'test:12', :method => 'getDocumentStyle1', :format => 'xml'})
46
+ it "should call the appropriate rubydora rest api method with parameters" do
47
+ @repository.should_receive(:dissemination).with({:pid=>'monkey:99',:sdef=>'test:12', :method=>'getDocumentStyle1', :format=>'xml'})
48
48
  obj = Test.new()
49
- allow(obj).to receive(:pid).and_return('monkey:99')
50
- obj.document_style_1({:format => 'xml'})
49
+ obj.stub(:pid).and_return('monkey:99')
50
+ obj.document_style_1({:format=>'xml'})
51
51
  end
52
- it 'should call the appropriate rubydora rest api method with a block' do
53
- allow(@repository).to receive(:dissemination).with({:pid => 'monkey:99', :sdef => 'test:12', :method => 'getDocumentStyle1'}).and_yield 'ping!', 'pang!'
52
+ it "should call the appropriate rubydora rest api method with a block" do
53
+ @repository.stub(:dissemination).with({:pid=>'monkey:99',:sdef=>'test:12', :method=>'getDocumentStyle1'}).and_yield "ping!","pang!"
54
54
  obj = Test.new()
55
- allow(obj).to receive(:pid).and_return('monkey:99')
56
- block_response = ''
57
- obj.document_style_1 {|res, req|
58
- block_response += 'pong!' if res == 'ping!' and req == 'pang!'
55
+ obj.stub(:pid).and_return('monkey:99')
56
+ block_response = ""
57
+ obj.document_style_1 {|res,req|
58
+ block_response += 'pong!' if res == "ping!" and req == "pang!"
59
59
  }
60
- expect(block_response).to eq('pong!')
60
+ block_response.should == "pong!"
61
61
  end
62
62
  end
63
63
  end
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  describe ActiveFedora::SimpleDatastream do
4
4
 
5
5
  before do
6
- @sample_xml = '<fields><coverage>coverage1</coverage><coverage>coverage2</coverage><creation_date>2012-01-15</creation_date><mydate>fake-date</mydate><publisher>publisher1</publisher></fields>'
6
+ @sample_xml = "<fields><coverage>coverage1</coverage><coverage>coverage2</coverage><creation_date>2012-01-15</creation_date><mydate>fake-date</mydate><publisher>publisher1</publisher></fields>"
7
7
  @test_ds = ActiveFedora::SimpleDatastream.from_xml(@sample_xml )
8
8
  @test_ds.field :coverage
9
9
  @test_ds.field :creation_date, :date
@@ -11,36 +11,36 @@ describe ActiveFedora::SimpleDatastream do
11
11
  @test_ds.field :publisher
12
12
 
13
13
  end
14
- it 'from_xml should parse everything correctly' do
15
- expect(@test_ds.ng_xml).to be_equivalent_to @sample_xml
14
+ it "from_xml should parse everything correctly" do
15
+ @test_ds.ng_xml.should be_equivalent_to @sample_xml
16
16
  end
17
17
 
18
-
18
+
19
19
  describe '#new' do
20
- describe 'model methods' do
20
+ describe "model methods" do
21
21
 
22
22
  [:coverage, :mydate, :publisher].each do |el|
23
23
  it "should respond to getters and setters for the string typed #{el} element" do
24
24
  value = "Hey #{el}"
25
- @test_ds.send("#{el.to_s}=", value)
26
- expect(@test_ds.send(el).first).to eq(value) #Looking at first because creator has 2 nodes
25
+ @test_ds.send("#{el.to_s}=", value)
26
+ @test_ds.send(el).first.should == value #Looking at first because creator has 2 nodes
27
27
  end
28
28
  end
29
29
 
30
- it 'should set date elements' do
30
+ it "should set date elements" do
31
31
  d = Date.parse('1939-05-23')
32
32
  @test_ds.creation_date = d
33
- expect(@test_ds.creation_date.first).to eq(d)
33
+ @test_ds.creation_date.first.should == d
34
34
  end
35
35
  end
36
36
  end
37
-
37
+
38
38
  describe '.to_xml' do
39
39
  it 'should output the fields hash as Qualified Dublin Core XML' do
40
- @test_ds.publisher = 'charlie'
41
- @test_ds.coverage = ['80%', '20%']
40
+ @test_ds.publisher= "charlie"
41
+ @test_ds.coverage= ["80%", "20%"]
42
42
 
43
- expect(@test_ds.to_xml).to be_equivalent_to('
43
+ @test_ds.to_xml.should be_equivalent_to('
44
44
  <fields>
45
45
  <coverage>80%</coverage>
46
46
  <coverage>20%</coverage>
@@ -51,11 +51,11 @@ describe ActiveFedora::SimpleDatastream do
51
51
  end
52
52
  end
53
53
 
54
- describe '#to_solr' do
55
- it 'should have title' do
54
+ describe "#to_solr" do
55
+ it "should have title" do
56
56
  solr = @test_ds.to_solr
57
- expect(solr[ActiveFedora::SolrService.solr_name('publisher', type: :string)]).to eq('publisher1')
58
- expect(solr[ActiveFedora::SolrService.solr_name('creation_date', type: :date)]).to eq('2012-01-15')
57
+ solr[ActiveFedora::SolrService.solr_name('publisher', type: :string)].should == "publisher1"
58
+ solr[ActiveFedora::SolrService.solr_name('creation_date', type: :date)].should == "2012-01-15"
59
59
  end
60
60
  end
61
61
 
@@ -4,64 +4,65 @@ require 'spec_helper'
4
4
  #include ActiveFedora
5
5
 
6
6
  describe ActiveFedora do
7
-
7
+
8
8
  before(:all) do
9
9
  module SolrSpecModel
10
10
  class Basic < ActiveFedora::Base
11
- def init_with_object(inner_obj)
11
+ def init_with(inner_obj)
12
12
  end
13
13
  end
14
14
  end
15
15
  end
16
-
16
+
17
17
  before(:each) do
18
18
  @test_object = ActiveFedora::Base.new
19
19
  end
20
-
21
-
22
- describe 'SOLR_DOCUMENT_ID' do
20
+
21
+
22
+ describe "SOLR_DOCUMENT_ID" do
23
23
  before(:all) do
24
- SOLR_DOCUMENT_ID = 'MY_SAMPLE_ID'
24
+ SOLR_DOCUMENT_ID = "MY_SAMPLE_ID"
25
25
  end
26
26
  after(:all) do
27
- SOLR_DOCUMENT_ID = 'id'
27
+ SOLR_DOCUMENT_ID = "id"
28
28
  end
29
- it 'should be used by ActiveFedora::Base.to_solr' do
29
+ it "should be used by ActiveFedora::Base.to_solr" do
30
30
  @test_object.stub(pid: 'changeme:123')
31
- SOLR_DOCUMENT_ID = 'MY_SAMPLE_ID'
32
- expect(@test_object.to_solr[SOLR_DOCUMENT_ID.to_sym]).to eq('changeme:123')
33
- expect(@test_object.to_solr[:id]).to be_nil
31
+ SOLR_DOCUMENT_ID = "MY_SAMPLE_ID"
32
+ @test_object.to_solr[SOLR_DOCUMENT_ID.to_sym].should == 'changeme:123'
33
+ @test_object.to_solr[:id].should be_nil
34
34
  end
35
35
 
36
- it 'should be used by ActiveFedora::Base#find_with_conditions' do
37
- mock_response = double('SolrResponse')
38
- expect(ActiveFedora::SolrService).to receive(:query).with("_query_:\"{!raw f=#{ActiveFedora::SolrService.solr_name("has_model", :symbol)}}info:fedora/afmodel:SolrSpecModel_Basic\" AND " + SOLR_DOCUMENT_ID + ':"changeme\\:30"', {:sort => ["#{ActiveFedora::SolrService.solr_name("system_create", :stored_sortable, type: :date)} asc"]}).and_return(mock_response)
39
-
40
- expect(SolrSpecModel::Basic.find_with_conditions(:id => 'changeme:30')).to equal(mock_response)
36
+ it "should be used by ActiveFedora::Base#find_with_conditions" do
37
+ mock_response = double("SolrResponse")
38
+ ActiveFedora::SolrService.should_receive(:query).with("_query_:\"{!raw f=#{ActiveFedora::SolrService.solr_name("has_model", :symbol)}}info:fedora/afmodel:SolrSpecModel_Basic\" AND " + SOLR_DOCUMENT_ID + ':"changeme\\:30"', {:sort => ["#{ActiveFedora::SolrService.solr_name("system_create", :stored_sortable, type: :date)} asc"]}).and_return(mock_response)
39
+
40
+ SolrSpecModel::Basic.find_with_conditions(:id=>"changeme:30").should equal(mock_response)
41
41
  end
42
42
  end
43
-
44
- describe 'ENABLE_SOLR_UPDATES' do
45
-
43
+
44
+ describe "ENABLE_SOLR_UPDATES" do
45
+
46
46
  before(:all) do
47
47
  ENABLE_SOLR_UPDATES = false
48
48
  end
49
49
  after(:all) do
50
50
  ENABLE_SOLR_UPDATES = true
51
51
  end
52
-
53
- it 'should prevent Base.save from calling update_index if false' do
52
+
53
+ it "should prevent Base.save from calling update_index if false" do
54
54
  dirty_ds = ActiveFedora::SimpleDatastream.new(@test_object.inner_object, 'ds1')
55
55
  @test_object.datastreams['ds1'] = dirty_ds
56
- allow(@test_object).to receive(:datastreams).and_return({:ds1 => dirty_ds})
57
- expect(@test_object).to receive(:update_index).never
58
- expect(@test_object).to receive(:refresh)
56
+ @test_object.stub(:datastreams).and_return({:ds1 => dirty_ds})
57
+ @test_object.should_receive(:update_index).never
58
+ @test_object.should_receive(:refresh)
59
59
  @test_object.save
60
60
  end
61
- it 'should prevent Base.delete from deleting the corresponding Solr document if false' do
62
- expect(ActiveFedora::SolrService.instance.conn).to receive(:delete).with(@test_object.pid).never
63
- expect(@test_object.inner_object).to receive(:delete)
61
+ it "should prevent Base.delete from deleting the corresponding Solr document if false" do
62
+ ActiveFedora::SolrService.instance.conn.should_receive(:delete).with(@test_object.pid).never
63
+ @test_object.inner_object.should_receive(:delete)
64
64
  @test_object.delete
65
65
  end
66
66
  end
67
67
  end
68
+
@@ -1,26 +1,25 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe ActiveFedora::SolrDigitalObject do
4
-
5
- describe 'repository' do
6
- subject { ActiveFedora::SolrDigitalObject.new({}, {'datastreams' => {}}) }
7
- describe 'when not finished' do
8
- it 'should not respond_to? :repository' do
9
- expect(subject).not_to respond_to :repository
4
+ describe "repository" do
5
+ subject { ActiveFedora::SolrDigitalObject.new({},{'datastreams'=>{}}) }
6
+ describe "when not finished" do
7
+ it "should not respond_to? :repository" do
8
+ subject.should_not respond_to :repository
10
9
  end
11
10
  end
12
- describe 'when finished' do
11
+ describe "when finished" do
13
12
  before do
14
13
  subject.freeze
15
14
  end
16
- it 'should respond_to? :repository' do
17
- expect(subject).to respond_to :repository
15
+ it "should respond_to? :repository" do
16
+ subject.should respond_to :repository
18
17
  end
19
18
  end
20
19
  end
21
20
 
22
- describe 'initializing' do
23
- describe 'without a datastream in the ds spec and an xml mime type in the solr doc' do
21
+ describe "initializing" do
22
+ describe "without a datastream in the ds spec and an xml mime type in the solr doc" do
24
23
  before do
25
24
  class WithoutMetadataDs < ActiveFedora::Base
26
25
  ## No datastreams are defined in this class
@@ -29,22 +28,22 @@ describe ActiveFedora::SolrDigitalObject do
29
28
  after do
30
29
  Object.send(:remove_const, :WithoutMetadataDs)
31
30
  end
32
- subject { ActiveFedora::SolrDigitalObject.new({}, {'datastreams' => {'properties' => {'dsMIME' => 'text/xml'}}}, WithoutMetadataDs) }
33
- it 'should create an xml datastream' do
34
- expect(subject.datastreams['properties']).to be_kind_of ActiveFedora::OmDatastream
31
+ subject { ActiveFedora::SolrDigitalObject.new({}, {'datastreams'=>{'properties'=>{'dsMIME'=>'text/xml'}}},WithoutMetadataDs) }
32
+ it "should create an xml datastream" do
33
+ subject.datastreams['properties'].should be_kind_of ActiveFedora::OmDatastream
35
34
  end
36
35
  end
37
-
36
+
38
37
  describe "with a ds spec that's not part of the solrized object" do
39
38
  before do
40
39
  class MissingMetadataDs < ActiveFedora::Base
41
- has_metadata :name => 'foo', :type => ActiveFedora::OmDatastream, :label => 'Foo Data'
40
+ has_metadata :name => "foo", :type => ActiveFedora::OmDatastream, :label => 'Foo Data'
42
41
  end
43
42
  after do
44
43
  Object.send(:remove_const, MissingMetadataDs)
45
44
  end
46
- subject { ActiveFedora::SolrDigitalObject.new({}, {'datastreams' => {'properties' => {'dsMIME' => 'text/xml'}}}, MissingMetadataDs) }
47
- it 'should have a foo datastream' do
45
+ subject { ActiveFedora::SolrDigitalObject.new({}, {'datastreams'=>{'properties'=>{'dsMIME'=>'text/xml'}}},MissingMetadataDs) }
46
+ it "should have a foo datastream" do
48
47
  subject.datastreams['foo'].label.should == 'Foo Data'
49
48
  end
50
49
  end
@@ -52,11 +51,4 @@ describe ActiveFedora::SolrDigitalObject do
52
51
  end
53
52
 
54
53
 
55
- describe 'new_record?' do
56
- subject { ActiveFedora::SolrDigitalObject.new({}, {'datastreams' => {}}) }
57
- it 'should respond to :new_record? and return false' do
58
- expect(subject.new_record?).to be_falsey
59
- end
60
- end
61
-
62
54
  end
@@ -2,142 +2,155 @@ require 'spec_helper'
2
2
 
3
3
  describe ActiveFedora::SolrService do
4
4
  before do
5
- Thread.current[:solr_service] = nil
5
+ Thread.current[:solr_service]=nil
6
6
  end
7
-
7
+
8
8
  after(:all) do
9
9
  ActiveFedora::SolrService.register(ActiveFedora.solr_config[:url])
10
10
  end
11
-
12
- it 'should take a narg constructor and configure for localhost' do
13
- expect(RSolr).to receive(:connect).with(:read_timeout => 120, :open_timeout => 120, :url => 'http://localhost:8080/solr')
11
+
12
+ it "should take a narg constructor and configure for localhost" do
13
+ RSolr.should_receive(:connect).with(:read_timeout => 120, :open_timeout => 120, :url => 'http://localhost:8080/solr')
14
14
  ActiveFedora::SolrService.register
15
15
  end
16
- it 'should accept host arg into constructor' do
17
- expect(RSolr).to receive(:connect).with(:read_timeout => 120, :open_timeout => 120, :url => 'http://fubar')
16
+ it "should accept host arg into constructor" do
17
+ RSolr.should_receive(:connect).with(:read_timeout => 120, :open_timeout => 120, :url => 'http://fubar')
18
18
  ActiveFedora::SolrService.register('http://fubar')
19
19
  end
20
- it 'should clobber options' do
21
- expect(RSolr).to receive(:connect).with(:read_timeout => 120, :open_timeout => 120, :url => 'http://localhost:8080/solr', :autocommit => :off, :foo => :bar)
22
- ActiveFedora::SolrService.register(nil, {:autocommit => :off, :foo => :bar})
20
+ it "should clobber options" do
21
+ RSolr.should_receive(:connect).with(:read_timeout => 120, :open_timeout => 120, :url => 'http://localhost:8080/solr', :autocommit=>:off, :foo=>:bar)
22
+ ActiveFedora::SolrService.register(nil, {:autocommit=>:off, :foo=>:bar})
23
23
  end
24
24
 
25
- it 'should set the threadlocal solr service' do
26
- expect(RSolr).to receive(:connect).with(:read_timeout => 120, :open_timeout => 120, :url => 'http://localhost:8080/solr', :autocommit => :off, :foo => :bar)
27
- ss = ActiveFedora::SolrService.register(nil, {:autocommit => :off, :foo => :bar})
28
- expect(Thread.current[:solr_service]).to eq(ss)
29
- expect(ActiveFedora::SolrService.instance).to eq(ss)
25
+ it "should set the threadlocal solr service" do
26
+ RSolr.should_receive(:connect).with(:read_timeout => 120, :open_timeout => 120, :url => 'http://localhost:8080/solr', :autocommit=>:off, :foo=>:bar)
27
+ ss = ActiveFedora::SolrService.register(nil, {:autocommit=>:off, :foo=>:bar})
28
+ Thread.current[:solr_service].should == ss
29
+ ActiveFedora::SolrService.instance.should == ss
30
30
  end
31
- it 'should try to initialize if the service not initialized, and fail if it does not succeed' do
32
- expect(Thread.current[:solr_service]).to be_nil
33
- expect(ActiveFedora::SolrService).to receive(:register)
34
- expect{ActiveFedora::SolrService.instance}.to raise_error(ActiveFedora::SolrNotInitialized)
31
+ it "should try to initialize if the service not initialized, and fail if it does not succeed" do
32
+ Thread.current[:solr_service].should be_nil
33
+ ActiveFedora::SolrService.should_receive(:register)
34
+ proc{ActiveFedora::SolrService.instance}.should raise_error(ActiveFedora::SolrNotInitialized)
35
35
  end
36
36
 
37
- describe 'reify solr results' do
37
+ describe "reify solr results" do
38
38
  before(:all) do
39
39
  class AudioRecord
40
40
  attr_accessor :pid
41
- def init_with_object(inner_obj)
41
+ def init_with(inner_obj)
42
42
  self.pid = inner_obj.pid
43
43
  self
44
44
  end
45
45
  def self.connection_for_pid(pid)
46
46
  end
47
47
  end
48
- @sample_solr_hits = [{'id' => 'my:_PID1_', ActiveFedora::SolrService.solr_name('has_model', :symbol) => ['info:fedora/afmodel:AudioRecord']},
49
- {'id' => 'my:_PID2_', ActiveFedora::SolrService.solr_name('has_model', :symbol) => ['info:fedora/afmodel:AudioRecord']},
50
- {'id' => 'my:_PID3_', ActiveFedora::SolrService.solr_name('has_model', :symbol) => ['info:fedora/afmodel:AudioRecord']}]
48
+ @sample_solr_hits = [{"id"=>"my:_PID1_", ActiveFedora::SolrService.solr_name("has_model", :symbol)=>["info:fedora/afmodel:AudioRecord"]},
49
+ {"id"=>"my:_PID2_", ActiveFedora::SolrService.solr_name("has_model", :symbol)=>["info:fedora/afmodel:AudioRecord"]},
50
+ {"id"=>"my:_PID3_", ActiveFedora::SolrService.solr_name("has_model", :symbol)=>["info:fedora/afmodel:AudioRecord"]}]
51
+ end
52
+ describe ".reify_solr_result" do
53
+ it "should use .find to instantiate objects" do
54
+ AudioRecord.should_receive(:find).with("my:_PID1_", cast: true)
55
+ ActiveFedora::SolrService.reify_solr_result(@sample_solr_hits.first)
56
+ end
57
+ it "should use .load_instance_from_solr when called with :load_from_solr option" do
58
+ AudioRecord.should_receive(:load_instance_from_solr).with("my:_PID1_", @sample_solr_hits.first)
59
+ ActiveFedora::SolrService.should_not receive(:query)
60
+ ActiveFedora::SolrService.reify_solr_result(@sample_solr_hits.first, load_from_solr: true)
61
+ end
51
62
  end
52
- describe '.reify_solr_results' do
53
- it 'should use AudioRecord.find to instantiate objects' do
54
- expect(AudioRecord).to receive(:find).with('my:_PID1_', cast: true)
55
- expect(AudioRecord).to receive(:find).with('my:_PID2_', cast: true)
56
- expect(AudioRecord).to receive(:find).with('my:_PID3_', cast: true)
63
+ describe ".reify_solr_results" do
64
+ it "should use AudioRecord.find to instantiate objects" do
65
+ AudioRecord.should_receive(:find).with("my:_PID1_", cast: true)
66
+ AudioRecord.should_receive(:find).with("my:_PID2_", cast: true)
67
+ AudioRecord.should_receive(:find).with("my:_PID3_", cast: true)
57
68
  ActiveFedora::SolrService.reify_solr_results(@sample_solr_hits)
58
69
  end
59
- it 'should use AudioRecord.load_instance_from_solr when called with :load_from_solr option' do
60
- expect(AudioRecord).to receive(:load_instance_from_solr).with('my:_PID1_')
61
- expect(AudioRecord).to receive(:load_instance_from_solr).with('my:_PID2_')
62
- expect(AudioRecord).to receive(:load_instance_from_solr).with('my:_PID3_')
70
+ it "should use AudioRecord.load_instance_from_solr when called with :load_from_solr option" do
71
+ AudioRecord.should_receive(:load_instance_from_solr).with("my:_PID1_", @sample_solr_hits[0])
72
+ AudioRecord.should_receive(:load_instance_from_solr).with("my:_PID2_", @sample_solr_hits[1])
73
+ AudioRecord.should_receive(:load_instance_from_solr).with("my:_PID3_", @sample_solr_hits[2])
74
+ ActiveFedora::SolrService.should_not receive(:query)
63
75
  ActiveFedora::SolrService.reify_solr_results(@sample_solr_hits, load_from_solr: true)
64
76
  end
65
77
  end
66
- describe '.lazy_reify_solr_results' do
67
- it 'should lazily reify solr results' do
68
- expect(AudioRecord).to receive(:find).with('my:_PID1_', cast: true)
69
- expect(AudioRecord).to receive(:find).with('my:_PID2_', cast: true)
70
- expect(AudioRecord).to receive(:find).with('my:_PID3_', cast: true)
78
+ describe ".lazy_reify_solr_results" do
79
+ it "should lazily reify solr results" do
80
+ AudioRecord.should_receive(:find).with("my:_PID1_", cast: true)
81
+ AudioRecord.should_receive(:find).with("my:_PID2_", cast: true)
82
+ AudioRecord.should_receive(:find).with("my:_PID3_", cast: true)
71
83
  ActiveFedora::SolrService.lazy_reify_solr_results(@sample_solr_hits).each {|r| r}
72
84
  end
73
- it 'should use AudioRecord.load_instance_from_solr when called with :load_from_solr option' do
74
- expect(AudioRecord).to receive(:load_instance_from_solr).with('my:_PID1_')
75
- expect(AudioRecord).to receive(:load_instance_from_solr).with('my:_PID2_')
76
- expect(AudioRecord).to receive(:load_instance_from_solr).with('my:_PID3_')
85
+ it "should use AudioRecord.load_instance_from_solr when called with :load_from_solr option" do
86
+ AudioRecord.should_receive(:load_instance_from_solr).with("my:_PID1_", @sample_solr_hits[0])
87
+ AudioRecord.should_receive(:load_instance_from_solr).with("my:_PID2_", @sample_solr_hits[1])
88
+ AudioRecord.should_receive(:load_instance_from_solr).with("my:_PID3_", @sample_solr_hits[2])
89
+ ActiveFedora::SolrService.should_not receive(:query)
77
90
  ActiveFedora::SolrService.lazy_reify_solr_results(@sample_solr_hits, load_from_solr: true).each {|r| r}
78
91
  end
79
92
  end
80
93
  end
81
-
94
+
82
95
  describe '#construct_query_for_pids' do
83
- it 'should generate a useable solr query from an array of Fedora pids' do
84
- expect(ActiveFedora::SolrService.construct_query_for_pids(['my:_PID1_', 'my:_PID2_', 'my:_PID3_'])).to eq('_query_:"{!raw f=id}my:_PID1_" OR _query_:"{!raw f=id}my:_PID2_" OR _query_:"{!raw f=id}my:_PID3_"')
96
+ it "should generate a useable solr query from an array of Fedora pids" do
97
+ ActiveFedora::SolrService.construct_query_for_pids(["my:_PID1_", "my:_PID2_", "my:_PID3_"]).should == '_query_:"{!raw f=id}my:_PID1_" OR _query_:"{!raw f=id}my:_PID2_" OR _query_:"{!raw f=id}my:_PID3_"'
85
98
 
86
99
  end
87
- it 'should return a valid solr query even if given an empty array as input' do
88
- expect(ActiveFedora::SolrService.construct_query_for_pids([''])).to eq('id:NEVER_USE_THIS_ID')
89
-
100
+ it "should return a valid solr query even if given an empty array as input" do
101
+ ActiveFedora::SolrService.construct_query_for_pids([""]).should == "id:NEVER_USE_THIS_ID"
102
+
90
103
  end
91
104
  end
92
-
105
+
93
106
  describe '#escape_uri_for_query' do
94
- it 'should escape : with a backslash' do
95
- expect(ActiveFedora::SolrService.escape_uri_for_query('my:pid')).to eq('my\:pid')
107
+ it "should escape : with a backslash" do
108
+ ActiveFedora::SolrService.escape_uri_for_query("my:pid").should == 'my\:pid'
96
109
  end
97
110
  end
98
111
 
99
- describe '.query' do
100
- it 'should call solr' do
101
- mock_conn = double('Connection')
102
- stub_result = double('Result')
103
- expect(mock_conn).to receive(:get).with('select', :params => {:q => 'querytext', :qt => 'standard'}).and_return(stub_result)
104
- ActiveFedora::SolrService.stub(:instance => double('instance', :conn => mock_conn))
105
- expect(ActiveFedora::SolrService.query('querytext', :raw => true)).to eq(stub_result)
112
+ describe ".query" do
113
+ it "should call solr" do
114
+ mock_conn = double("Connection")
115
+ stub_result = double("Result")
116
+ mock_conn.should_receive(:get).with('select', :params=>{:q=>'querytext', :qt=>'standard'}).and_return(stub_result)
117
+ ActiveFedora::SolrService.stub(:instance =>double("instance", :conn=>mock_conn))
118
+ ActiveFedora::SolrService.query('querytext', :raw=>true).should == stub_result
106
119
  end
107
120
  end
108
- describe '.count' do
109
- it 'should return a count of matching records' do
110
- mock_conn = double('Connection')
111
- stub_result = {'response' => {'numFound' => '7'}}
112
- expect(mock_conn).to receive(:get).with('select', :params => {:rows => 0, :q => 'querytext', :qt => 'standard'}).and_return(stub_result)
113
- ActiveFedora::SolrService.stub(:instance => double('instance', :conn => mock_conn))
114
- expect(ActiveFedora::SolrService.count('querytext')).to eq(7)
121
+ describe ".count" do
122
+ it "should return a count of matching records" do
123
+ mock_conn = double("Connection")
124
+ stub_result = {'response' => {'numFound'=>'7'}}
125
+ mock_conn.should_receive(:get).with('select', :params=>{:rows=>0, :q=>'querytext', :qt=>'standard'}).and_return(stub_result)
126
+ ActiveFedora::SolrService.stub(:instance =>double("instance", :conn=>mock_conn))
127
+ ActiveFedora::SolrService.count('querytext').should == 7
115
128
  end
116
- it 'should accept query args' do
117
- mock_conn = double('Connection')
118
- stub_result = {'response' => {'numFound' => '7'}}
119
- expect(mock_conn).to receive(:get).with('select', :params => {:rows => 0, :q => 'querytext', :qt => 'standard', :fq => 'filter'}).and_return(stub_result)
120
- ActiveFedora::SolrService.stub(:instance => double('instance', :conn => mock_conn))
121
- expect(ActiveFedora::SolrService.count('querytext', :fq => 'filter', :rows => 10)).to eq(7)
129
+ it "should accept query args" do
130
+ mock_conn = double("Connection")
131
+ stub_result = {'response' => {'numFound'=>'7'}}
132
+ mock_conn.should_receive(:get).with('select', :params=>{:rows=>0, :q=>'querytext', :qt=>'standard', :fq=>'filter'}).and_return(stub_result)
133
+ ActiveFedora::SolrService.stub(:instance =>double("instance", :conn=>mock_conn))
134
+ ActiveFedora::SolrService.count('querytext', :fq=>'filter', :rows=>10).should == 7
122
135
  end
123
136
  end
124
- describe '.add' do
125
- it 'should call solr' do
126
- mock_conn = double('Connection')
137
+ describe ".add" do
138
+ it "should call solr" do
139
+ mock_conn = double("Connection")
127
140
  doc = {'id' => '1234'}
128
- expect(mock_conn).to receive(:add).with(doc)
129
- ActiveFedora::SolrService.stub(:instance => double('instance', :conn => mock_conn))
141
+ mock_conn.should_receive(:add).with(doc)
142
+ ActiveFedora::SolrService.stub(:instance =>double("instance", :conn=>mock_conn))
130
143
  ActiveFedora::SolrService.add(doc)
131
144
  end
132
145
  end
133
- describe '.commit' do
134
- it 'should call solr' do
135
- mock_conn = double('Connection')
146
+ describe ".commit" do
147
+ it "should call solr" do
148
+ mock_conn = double("Connection")
136
149
  doc = {'id' => '1234'}
137
- expect(mock_conn).to receive(:commit)
138
- ActiveFedora::SolrService.stub(:instance => double('instance', :conn => mock_conn))
150
+ mock_conn.should_receive(:commit)
151
+ ActiveFedora::SolrService.stub(:instance =>double("instance", :conn=>mock_conn))
139
152
  ActiveFedora::SolrService.commit()
140
153
  end
141
154
  end
142
-
155
+
143
156
  end