active-fedora 13.1.2 → 13.1.3

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 (140) hide show
  1. checksums.yaml +4 -4
  2. data/.github_changelog_generator +2 -0
  3. data/CHANGELOG.md +3362 -0
  4. data/CONTRIBUTING.md +23 -1
  5. data/README.md +4 -0
  6. data/active-fedora.gemspec +14 -13
  7. data/lib/active_fedora/version.rb +1 -1
  8. metadata +104 -206
  9. data/spec/config_helper.rb +0 -17
  10. data/spec/fixtures/dino.jpg +0 -0
  11. data/spec/fixtures/dino_jpg_no_file_ext +0 -0
  12. data/spec/fixtures/minivan.jpg +0 -0
  13. data/spec/fixtures/rails_root/config/fake_fedora.yml +0 -7
  14. data/spec/fixtures/rails_root/config/fedora.yml +0 -12
  15. data/spec/fixtures/rails_root/config/solr.yml +0 -15
  16. data/spec/fixtures/rails_root/config/solr_mappings.yml +0 -16
  17. data/spec/fixtures/rails_root/config/solr_mappings_af_0.1.yml +0 -9
  18. data/spec/fixtures/rails_root/config/solr_mappings_bl_2.4.yml +0 -17
  19. data/spec/integration/associations/rdf_spec.rb +0 -61
  20. data/spec/integration/associations_spec.rb +0 -680
  21. data/spec/integration/attached_files_spec.rb +0 -146
  22. data/spec/integration/attributes_spec.rb +0 -73
  23. data/spec/integration/autosave_association_spec.rb +0 -24
  24. data/spec/integration/base_spec.rb +0 -184
  25. data/spec/integration/basic_contains_association_spec.rb +0 -121
  26. data/spec/integration/belongs_to_association_spec.rb +0 -260
  27. data/spec/integration/caching_spec.rb +0 -59
  28. data/spec/integration/clean_connection_spec.rb +0 -21
  29. data/spec/integration/collection_association_spec.rb +0 -166
  30. data/spec/integration/date_time_properties_spec.rb +0 -41
  31. data/spec/integration/delete_all_spec.rb +0 -64
  32. data/spec/integration/direct_container_spec.rb +0 -250
  33. data/spec/integration/directly_contains_one_association_spec.rb +0 -96
  34. data/spec/integration/eradicate_spec.rb +0 -52
  35. data/spec/integration/fedora_solr_sync_spec.rb +0 -30
  36. data/spec/integration/file_fixity_spec.rb +0 -36
  37. data/spec/integration/file_spec.rb +0 -221
  38. data/spec/integration/generators/fedora_generator_spec.rb +0 -26
  39. data/spec/integration/generators/solr_generator_spec.rb +0 -23
  40. data/spec/integration/gone_spec.rb +0 -41
  41. data/spec/integration/has_and_belongs_to_many_associations_spec.rb +0 -414
  42. data/spec/integration/has_many_associations_spec.rb +0 -436
  43. data/spec/integration/has_subresource_spec.rb +0 -34
  44. data/spec/integration/indexing/descendant_fetcher_spec.rb +0 -64
  45. data/spec/integration/indexing_spec.rb +0 -110
  46. data/spec/integration/indirect_container_spec.rb +0 -290
  47. data/spec/integration/json_serialization_spec.rb +0 -32
  48. data/spec/integration/marshal_spec.rb +0 -39
  49. data/spec/integration/nested_attribute_spec.rb +0 -177
  50. data/spec/integration/nested_hash_resources_spec.rb +0 -43
  51. data/spec/integration/persistence_spec.rb +0 -37
  52. data/spec/integration/query_result_builder_spec.rb +0 -37
  53. data/spec/integration/rdf_nested_attributes_spec.rb +0 -85
  54. data/spec/integration/relation_delegation_spec.rb +0 -52
  55. data/spec/integration/relation_spec.rb +0 -117
  56. data/spec/integration/scoped_query_spec.rb +0 -134
  57. data/spec/integration/scoping_spec.rb +0 -48
  58. data/spec/integration/solr_hit_spec.rb +0 -32
  59. data/spec/integration/versionable_spec.rb +0 -256
  60. data/spec/integration/with_metadata_spec.rb +0 -111
  61. data/spec/lib/active_fedora/null_logger_spec.rb +0 -10
  62. data/spec/rcov.opts +0 -2
  63. data/spec/spec.opts +0 -5
  64. data/spec/spec_helper.rb +0 -106
  65. data/spec/support/an_active_model.rb +0 -29
  66. data/spec/unit/active_fedora/indexing/inserter_spec.rb +0 -35
  67. data/spec/unit/active_fedora_spec.rb +0 -118
  68. data/spec/unit/aggregation/list_source_spec.rb +0 -134
  69. data/spec/unit/aggregation/ordered_reader_spec.rb +0 -43
  70. data/spec/unit/association_hash_spec.rb +0 -64
  71. data/spec/unit/attached_files_spec.rb +0 -218
  72. data/spec/unit/attributes_spec.rb +0 -146
  73. data/spec/unit/base_active_model_spec.rb +0 -28
  74. data/spec/unit/base_cma_spec.rb +0 -15
  75. data/spec/unit/base_extra_spec.rb +0 -33
  76. data/spec/unit/base_spec.rb +0 -328
  77. data/spec/unit/builder/has_and_belongs_to_many_spec.rb +0 -8
  78. data/spec/unit/callback_spec.rb +0 -65
  79. data/spec/unit/change_set_spec.rb +0 -60
  80. data/spec/unit/checksum_spec.rb +0 -25
  81. data/spec/unit/code_configurator_spec.rb +0 -41
  82. data/spec/unit/collection_proxy_spec.rb +0 -25
  83. data/spec/unit/config_spec.rb +0 -18
  84. data/spec/unit/core/fedora_id_translator_spec.rb +0 -29
  85. data/spec/unit/core/fedora_uri_translator_spec.rb +0 -19
  86. data/spec/unit/core/logger_spec.rb +0 -18
  87. data/spec/unit/core_spec.rb +0 -242
  88. data/spec/unit/default_model_mapper_spec.rb +0 -39
  89. data/spec/unit/fedora_spec.rb +0 -31
  90. data/spec/unit/file/streaming_spec.rb +0 -33
  91. data/spec/unit/file_configurator_spec.rb +0 -295
  92. data/spec/unit/file_io_spec.rb +0 -137
  93. data/spec/unit/file_path_builder_spec.rb +0 -18
  94. data/spec/unit/file_spec.rb +0 -489
  95. data/spec/unit/files_hash_spec.rb +0 -52
  96. data/spec/unit/filter_spec.rb +0 -133
  97. data/spec/unit/finder_methods_spec.rb +0 -154
  98. data/spec/unit/fixity_service_spec.rb +0 -128
  99. data/spec/unit/forbidden_attributes_protection_spec.rb +0 -50
  100. data/spec/unit/has_and_belongs_to_many_association_spec.rb +0 -125
  101. data/spec/unit/has_many_association_spec.rb +0 -131
  102. data/spec/unit/indexers/global_indexer_spec.rb +0 -41
  103. data/spec/unit/indexing/map/index_object_spec.rb +0 -25
  104. data/spec/unit/indexing/map_spec.rb +0 -27
  105. data/spec/unit/indexing_service_spec.rb +0 -28
  106. data/spec/unit/indexing_spec.rb +0 -86
  107. data/spec/unit/inheritance_spec.rb +0 -60
  108. data/spec/unit/ldp_resource_spec.rb +0 -15
  109. data/spec/unit/loadable_from_json_spec.rb +0 -40
  110. data/spec/unit/logger_spec.rb +0 -19
  111. data/spec/unit/model_classifier_spec.rb +0 -49
  112. data/spec/unit/ordered_spec.rb +0 -367
  113. data/spec/unit/orders/list_node_spec.rb +0 -151
  114. data/spec/unit/orders/ordered_list_spec.rb +0 -335
  115. data/spec/unit/orders/reflection_spec.rb +0 -22
  116. data/spec/unit/pathing_spec.rb +0 -35
  117. data/spec/unit/persistence_spec.rb +0 -115
  118. data/spec/unit/property_predicate_spec.rb +0 -35
  119. data/spec/unit/property_spec.rb +0 -25
  120. data/spec/unit/query_result_builder_spec.rb +0 -31
  121. data/spec/unit/query_spec.rb +0 -307
  122. data/spec/unit/querying_spec.rb +0 -24
  123. data/spec/unit/rdf/indexing_service_spec.rb +0 -114
  124. data/spec/unit/rdf_vocab_spec.rb +0 -30
  125. data/spec/unit/readonly_spec.rb +0 -24
  126. data/spec/unit/reflection_spec.rb +0 -42
  127. data/spec/unit/rspec_matchers/belong_to_associated_active_fedora_object_matcher_spec.rb +0 -37
  128. data/spec/unit/rspec_matchers/have_many_associated_active_fedora_objects_matcher_spec.rb +0 -38
  129. data/spec/unit/rspec_matchers/have_predicate_matcher_spec.rb +0 -38
  130. data/spec/unit/schema_indexing_strategy_spec.rb +0 -68
  131. data/spec/unit/scoping_spec.rb +0 -67
  132. data/spec/unit/serializers_spec.rb +0 -19
  133. data/spec/unit/solr_config_options_spec.rb +0 -57
  134. data/spec/unit/solr_hit_spec.rb +0 -57
  135. data/spec/unit/solr_query_builder_spec.rb +0 -18
  136. data/spec/unit/solr_service_spec.rb +0 -165
  137. data/spec/unit/sparql_insert_spec.rb +0 -31
  138. data/spec/unit/validations_spec.rb +0 -92
  139. data/spec/unit/with_metadata/default_metadata_class_factory_spec.rb +0 -29
  140. data/spec/unit/with_metadata/metadata_node_spec.rb +0 -69
@@ -1,39 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ActiveFedora::DefaultModelMapper do
4
- subject(:mapper) { described_class.new classifier_class: classifier, solr_field: solr_field, predicate: predicate }
5
- let(:classifier) { class_double(ActiveFedora::ModelClassifier) }
6
- let(:classifier_instance) { instance_double(ActiveFedora::ModelClassifier) }
7
- let(:solr_field) { 'solr_field' }
8
- let(:predicate) { 'info:predicate' }
9
-
10
- describe '#classifier' do
11
- context 'with a solr document' do
12
- let(:solr_document) { { 'solr_field' => ['xyz'] } }
13
-
14
- before do
15
- expect(classifier).to receive(:new).with(['xyz']).and_return(classifier_instance)
16
- end
17
-
18
- it 'creates a classifier from the solr field data' do
19
- expect(mapper.classifier(solr_document)).to eq classifier_instance
20
- end
21
- end
22
-
23
- context 'with a resource' do
24
- let(:graph) do
25
- RDF::Graph.new << [:hello, predicate, 'xyz']
26
- end
27
-
28
- let(:resource) { instance_double(ActiveFedora::LdpResource, graph: graph) }
29
-
30
- before do
31
- expect(classifier).to receive(:new).with(['xyz']).and_return(classifier_instance)
32
- end
33
-
34
- it 'creates a classifier from the resource model predicate' do
35
- expect(mapper.classifier(resource)).to eq classifier_instance
36
- end
37
- end
38
- end
39
- end
@@ -1,31 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ActiveFedora::Fedora do
4
- subject(:fedora) { described_class.new(config) }
5
- describe "#authorized_connection" do
6
- describe "with SSL options" do
7
- let(:config) {
8
- { url: "https://example.com",
9
- user: "fedoraAdmin",
10
- password: "fedoraAdmin",
11
- ssl: { ca_path: '/path/to/certs' } }
12
- }
13
- specify {
14
- expect(Faraday).to receive(:new).with("https://example.com", ssl: { ca_path: '/path/to/certs' }).and_call_original
15
- fedora.authorized_connection
16
- }
17
- end
18
- describe "with request options" do
19
- let(:config) {
20
- { url: "https://example.com",
21
- user: "fedoraAdmin",
22
- password: "fedoraAdmin",
23
- request: { timeout: 600, open_timeout: 60 } }
24
- }
25
- specify {
26
- expect(Faraday).to receive(:new).with("https://example.com", request: { timeout: 600, open_timeout: 60 }).and_call_original
27
- fedora.authorized_connection
28
- }
29
- end
30
- end
31
- end
@@ -1,33 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ActiveFedora::File::Streaming do
4
- let(:test_class) do
5
- tc = Class.new
6
- tc.send(:include, described_class)
7
- tc
8
- end
9
- let(:streamer) do
10
- streamer = test_class.new
11
- allow(streamer).to receive(:uri).and_return(uri)
12
- allow(streamer).to receive(:authorization_key).and_return("authorization_key")
13
- streamer
14
- end
15
-
16
- context "without ssl" do
17
- let(:uri) { "http://localhost/file/1" }
18
-
19
- it do
20
- expect(Net::HTTP).to receive(:start).with('localhost', 80, use_ssl: false).and_return(nil)
21
- streamer.stream.each
22
- end
23
- end
24
-
25
- context "with ssl" do
26
- let(:uri) { "https://localhost/file/1" }
27
-
28
- it do
29
- expect(Net::HTTP).to receive(:start).with('localhost', 443, use_ssl: true).and_return(nil)
30
- streamer.stream.each
31
- end
32
- end
33
- end
@@ -1,295 +0,0 @@
1
- require 'spec_helper'
2
- require 'config_helper'
3
-
4
- describe ActiveFedora::FileConfigurator do
5
- subject(:configurator) { ActiveFedora.configurator }
6
-
7
- after :all do
8
- unstub_rails
9
- # Restore to default fedora configs
10
- restore_spec_configuration
11
- end
12
-
13
- describe "#initialize" do
14
- it "triggers configuration reset (to empty defaults)" do
15
- expect_any_instance_of(described_class).to receive(:reset!)
16
- described_class.new
17
- end
18
- end
19
-
20
- describe "#config_options" do
21
- before do
22
- configurator.reset!
23
- end
24
- it "is an empty hash" do
25
- expect(configurator.config_options).to eq({})
26
- end
27
- end
28
-
29
- describe "#fedora_config" do
30
- before do
31
- configurator.reset!
32
- end
33
- it "triggers configuration to load" do
34
- expect(configurator).to receive(:load_fedora_config)
35
- configurator.fedora_config
36
- end
37
- end
38
- describe "#solr_config" do
39
- before do
40
- configurator.reset!
41
- end
42
- it "triggers configuration to load" do
43
- expect(configurator).to receive(:load_solr_config)
44
- configurator.solr_config
45
- end
46
- end
47
-
48
- describe "#reset!" do
49
- before { configurator.reset! }
50
- it "clears @fedora_config" do
51
- expect(configurator.instance_variable_get(:@fedora_config)).to eq({})
52
- end
53
- it "clears @solr_config" do
54
- expect(configurator.instance_variable_get(:@solr_config)).to eq({})
55
- end
56
- it "clears @config_options" do
57
- expect(configurator.instance_variable_get(:@config_options)).to eq({})
58
- end
59
- end
60
-
61
- describe "initialization methods" do
62
- describe "config_path(:fedora)" do
63
- it "uses the config_options[:config_path] if it exists" do
64
- expect(configurator).to receive(:config_options).and_return(fedora_config_path: "/path/to/fedora.yml")
65
- expect(File).to receive(:file?).with("/path/to/fedora.yml").and_return(true)
66
- expect(configurator.config_path(:fedora)).to eql("/path/to/fedora.yml")
67
- end
68
-
69
- it "looks in Rails.root/config/fedora.yml if it exists and no fedora_config_path passed in" do
70
- expect(configurator).to receive(:config_options).and_return({})
71
- stub_rails(root: "/rails/root")
72
- expect(File).to receive(:file?).with("/rails/root/config/fedora.yml").and_return(true)
73
- expect(configurator.config_path(:fedora)).to eql("/rails/root/config/fedora.yml")
74
- unstub_rails
75
- end
76
-
77
- it "looks in ./config/fedora.yml if neither rails.root nor :fedora_config_path are set" do
78
- expect(configurator).to receive(:config_options).and_return({})
79
- allow(Dir).to receive(:getwd).and_return("/current/working/directory")
80
- expect(File).to receive(:file?).with("/current/working/directory/config/fedora.yml").and_return(true)
81
- expect(configurator.config_path(:fedora)).to eql("/current/working/directory/config/fedora.yml")
82
- end
83
-
84
- it "returns default fedora.yml that ships with active-fedora if none of the above" do
85
- expect(configurator).to receive(:config_options).and_return({})
86
- expect(Dir).to receive(:getwd).and_return("/current/working/directory")
87
- expect(File).to receive(:file?).with("/current/working/directory/config/fedora.yml").and_return(false)
88
- expect(File).to receive(:file?).with(File.expand_path(File.join(File.dirname("__FILE__"), 'config', 'fedora.yml'))).and_return(true)
89
- expect(ActiveFedora::Base.logger).to receive(:warn).with("Using the default fedora.yml that comes with active-fedora. If you want to override this, pass the path to fedora.yml to ActiveFedora - ie. ActiveFedora.init(:fedora_config_path => '/path/to/fedora.yml') - or set Rails.root and put fedora.yml into \#{Rails.root}/config.")
90
- expect(configurator.config_path(:fedora)).to eql(File.expand_path(File.join(File.dirname("__FILE__"), 'config', 'fedora.yml')))
91
- end
92
- end
93
-
94
- describe "config_path(:solr)" do
95
- it "returns the solr_config_path if set in config_options hash" do
96
- allow(configurator).to receive(:config_options).and_return(solr_config_path: "/path/to/solr.yml")
97
- expect(File).to receive(:file?).with("/path/to/solr.yml").and_return(true)
98
- expect(configurator.config_path(:solr)).to eql("/path/to/solr.yml")
99
- end
100
-
101
- it "returns the solr.yml file in the same directory as the fedora.yml if it exists" do
102
- expect(configurator).to receive(:path).and_return("/path/to/fedora/config/fedora.yml")
103
- expect(File).to receive(:file?).with("/path/to/fedora/config/solr.yml").and_return(true)
104
- expect(configurator.config_path(:solr)).to eql("/path/to/fedora/config/solr.yml")
105
- end
106
-
107
- context "no solr.yml in same directory as fedora.yml and fedora.yml does not contain solr url" do
108
- before do
109
- allow(configurator).to receive(:config_options).and_return({})
110
- expect(configurator).to receive(:path).and_return("/path/to/fedora/config/fedora.yml")
111
- expect(File).to receive(:file?).with("/path/to/fedora/config/solr.yml").and_return(false)
112
- end
113
- after do
114
- unstub_rails
115
- end
116
-
117
- it "does not raise an error if there is not a solr.yml in the same directory as the fedora.yml and the fedora.yml has a solr url defined and look in rails.root" do
118
- stub_rails(root: "/rails/root")
119
- expect(File).to receive(:file?).with("/rails/root/config/solr.yml").and_return(true)
120
- expect(configurator.config_path(:solr)).to eql("/rails/root/config/solr.yml")
121
- end
122
-
123
- it "looks in ./config/solr.yml if no rails root" do
124
- allow(Dir).to receive(:getwd).and_return("/current/working/directory")
125
- expect(File).to receive(:file?).with("/current/working/directory/config/solr.yml").and_return(true)
126
- expect(configurator.config_path(:solr)).to eql("/current/working/directory/config/solr.yml")
127
- end
128
-
129
- it "returns the default solr.yml file that ships with active-fedora if no other option is set" do
130
- allow(Dir).to receive(:getwd).and_return("/current/working/directory")
131
- expect(File).to receive(:file?).with("/current/working/directory/config/solr.yml").and_return(false)
132
- expect(File).to receive(:file?).with(File.expand_path(File.join(File.dirname("__FILE__"), 'config', 'solr.yml'))).and_return(true)
133
- expect(ActiveFedora::Base.logger).to receive(:warn).with("Using the default solr.yml that comes with active-fedora. If you want to override this, pass the path to solr.yml to ActiveFedora - ie. ActiveFedora.init(:solr_config_path => '/path/to/solr.yml') - or set Rails.root and put solr.yml into \#{Rails.root}/config.")
134
- expect(configurator.config_path(:solr)).to eql(File.expand_path(File.join(File.dirname("__FILE__"), 'config', 'solr.yml')))
135
- end
136
- end
137
- end
138
-
139
- describe "load_fedora_config" do
140
- before do
141
- configurator.reset!
142
- end
143
- it "loads the file specified in fedora_config_path" do
144
- expect(configurator).to receive(:config_path).with(:fedora).and_return("/path/to/fedora.yml")
145
- expect(configurator).to receive(:load_solr_config)
146
- expect(IO).to receive(:read).with("/path/to/fedora.yml").and_return("development:\n url: http://devfedora:8983\ntest:\n url: http://myfedora:8080")
147
- expect(configurator.load_fedora_config).to eq(url: "http://myfedora:8080")
148
- expect(configurator.fedora_config).to eq(url: "http://myfedora:8080")
149
- end
150
-
151
- it "allows sharding" do
152
- expect(configurator).to receive(:config_path).with(:fedora).and_return("/path/to/fedora.yml")
153
- expect(configurator).to receive(:load_solr_config)
154
- expect(IO).to receive(:read).with("/path/to/fedora.yml").and_return("development:\n url: http://devfedora:8983\ntest:\n- url: http://myfedora:8080\n- url: http://myfedora:8081")
155
- expect(configurator.load_fedora_config).to eq [{ url: "http://myfedora:8080" }, { url: "http://myfedora:8081" }]
156
- expect(configurator.fedora_config).to eq [{ url: "http://myfedora:8080" }, { url: "http://myfedora:8081" }]
157
- end
158
-
159
- it "parses the file using ERb" do
160
- expect(configurator).to receive(:config_path).with(:fedora).and_return("/path/to/fedora.yml")
161
- expect(configurator).to receive(:load_solr_config)
162
- expect(IO).to receive(:read).with("/path/to/fedora.yml").and_return("development:\n url: http://devfedora:<%= 8983 %>\ntest:\n url: http://myfedora:<%= 8081 %>")
163
- expect(configurator.load_fedora_config).to eq(url: "http://myfedora:8081")
164
- expect(configurator.fedora_config).to eq(url: "http://myfedora:8081")
165
- end
166
- end
167
-
168
- describe "load_solr_config" do
169
- before do
170
- configurator.reset!
171
- end
172
- it "loads the file specified in solr_config_path" do
173
- expect(configurator).to receive(:config_path).with(:solr).and_return("/path/to/solr.yml")
174
- expect(configurator).to receive(:load_fedora_config)
175
- expect(IO).to receive(:read).with("/path/to/solr.yml").and_return("development:\n default:\n url: http://devsolr:8983\ntest:\n default:\n url: http://mysolr:8080")
176
- expect(configurator.load_solr_config).to eq(url: "http://mysolr:8080")
177
- expect(configurator.solr_config).to eq(url: "http://mysolr:8080")
178
- end
179
-
180
- it "parses the file using ERb" do
181
- expect(configurator).to receive(:config_path).with(:solr).and_return("/path/to/solr.yml")
182
- expect(configurator).to receive(:load_fedora_config)
183
- expect(IO).to receive(:read).with("/path/to/solr.yml").and_return("development:\n default:\n url: http://devsolr:<%= 8983 %>\ntest:\n default:\n url: http://mysolr:<%= 8081 %>")
184
- expect(configurator.load_solr_config).to eq(url: "http://mysolr:8081")
185
- expect(configurator.solr_config).to eq(url: "http://mysolr:8081")
186
- end
187
-
188
- it "includes update_path and select_path in solr_config" do
189
- expect(configurator).to receive(:config_path).with(:solr).and_return("/path/to/solr.yml")
190
- expect(configurator).to receive(:load_fedora_config)
191
- expect(IO).to receive(:read).with("/path/to/solr.yml").and_return("test:\n url: http://mysolr:8080\n update_path: update_test\n select_path: select_test\n")
192
- expect(configurator.solr_config[:update_path]).to eq('update_test')
193
- expect(configurator.solr_config[:select_path]).to eq('select_test')
194
- end
195
- end
196
-
197
- describe "load_configs" do
198
- describe "when config is not loaded" do
199
- before do
200
- configurator.instance_variable_set :@config_loaded, nil
201
- end
202
- it "loads the fedora and solr configs" do
203
- expect(configurator).to_not be_config_loaded
204
- configurator.load_configs
205
- expect(configurator).to be_config_loaded
206
- end
207
- end
208
- describe "when config is loaded" do
209
- before do
210
- configurator.instance_variable_set :@config_loaded, true
211
- end
212
- it "loads the fedora and solr configs" do
213
- expect(configurator).to receive(:load_config).never
214
- expect(configurator).to be_config_loaded
215
- configurator.load_configs
216
- expect(configurator).to be_config_loaded
217
- end
218
- end
219
- end
220
-
221
- describe "check_fedora_path_for_solr" do
222
- it "finds the solr.yml file and return it if it exists" do
223
- expect(configurator).to receive(:path).and_return("/path/to/fedora/fedora.yml")
224
- expect(File).to receive(:file?).with("/path/to/fedora/solr.yml").and_return(true)
225
- expect(configurator.check_fedora_path_for_solr).to eq "/path/to/fedora/solr.yml"
226
- end
227
- it "returns nil if the solr.yml file is not there" do
228
- expect(configurator).to receive(:path).and_return("/path/to/fedora/fedora.yml")
229
- expect(File).to receive(:file?).with("/path/to/fedora/solr.yml").and_return(false)
230
- expect(configurator.check_fedora_path_for_solr).to be_nil
231
- end
232
- end
233
- end
234
-
235
- describe "setting the environment and loading configuration" do
236
- before(:all) do
237
- @fake_rails_root = File.expand_path(File.dirname(__FILE__) + '/../fixtures/rails_root')
238
- end
239
-
240
- after(:all) do
241
- config_file = File.join(File.dirname(__FILE__), "..", "..", "config", "fedora.yml")
242
- environment = "test"
243
- ActiveFedora.init(environment: environment, fedora_config_path: config_file)
244
- end
245
-
246
- it "can tell its config paths" do
247
- configurator.init
248
- expect(configurator).to respond_to(:solr_config_path)
249
- end
250
-
251
- it "loads a config from the current working directory as a second choice" do
252
- allow(Dir).to receive(:getwd).and_return(@fake_rails_root)
253
- configurator.init
254
- expect(configurator.config_path(:fedora)).to eql("#{@fake_rails_root}/config/fedora.yml")
255
- expect(configurator.solr_config_path).to eql("#{@fake_rails_root}/config/solr.yml")
256
- end
257
-
258
- it "loads the config that ships with this gem as a last choice" do
259
- allow(Dir).to receive(:getwd).and_return("/fake/path")
260
- expect(ActiveFedora::Base.logger).to receive(:warn).with("Using the default fedora.yml that comes with active-fedora. If you want to override this, pass the path to fedora.yml to ActiveFedora - ie. ActiveFedora.init(:fedora_config_path => '/path/to/fedora.yml') - or set Rails.root and put fedora.yml into \#{Rails.root}/config.").exactly(3).times
261
- configurator.init
262
- expected_config = File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "config"))
263
- expect(configurator.config_path(:fedora)).to eql(expected_config + '/fedora.yml')
264
- expect(configurator.solr_config_path).to eql(expected_config + '/solr.yml')
265
- end
266
- it "raises an error if you pass in a string" do
267
- expect(lambda { configurator.init("#{@fake_rails_root}/config/fake_fedora.yml") }).to raise_exception(ArgumentError)
268
- end
269
- it "raises an error if you pass in a non-existant config file" do
270
- expect(lambda { configurator.init(fedora_config_path: "really_fake_fedora.yml") }).to raise_exception(ActiveFedora::ConfigurationError)
271
- end
272
-
273
- describe "within Rails" do
274
- before do
275
- stub_rails(root: File.dirname(__FILE__) + '/../fixtures/rails_root')
276
- end
277
-
278
- after do
279
- unstub_rails
280
- end
281
-
282
- it "loads a config from Rails.root as a first choice" do
283
- configurator.init
284
- expect(configurator.config_path(:fedora)).to eql("#{Rails.root}/config/fedora.yml")
285
- expect(configurator.solr_config_path).to eql("#{Rails.root}/config/solr.yml")
286
- end
287
-
288
- it "can tell what environment it is set to run in" do
289
- stub_rails(env: "development")
290
- configurator.init
291
- expect(ActiveFedora.environment).to eql("development")
292
- end
293
- end
294
- end
295
- end
@@ -1,137 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ActiveFedora::FileIO do
4
- # 300,000 byte test string
5
- test_file = (0..300_000).reduce('') do |s, c| s << (c % 256).chr end
6
-
7
- let(:file_contents) { test_file }
8
- let(:fedora_file) {
9
- ActiveFedora::File.new .tap do |file|
10
- file.content = file_contents
11
- file.save
12
- end
13
- }
14
- let(:io) { described_class.new(fedora_file) }
15
-
16
- describe "#read" do
17
- it "reads the entire file when called without parameters" do
18
- expect(io.read).to eql(file_contents)
19
- end
20
-
21
- it "returns nil at end of file when requested with length" do
22
- io.read
23
- expect(io.read(10)).to be_nil
24
- end
25
-
26
- it "returns only requested amount of bytes" do
27
- expect(io.read(5)).to eql(file_contents[0..4])
28
- expect(io.read(5)).to eql(file_contents[5..9])
29
- expect(io.read(100_000)).to eql(file_contents[10..100_009])
30
- expect(io.read(200_000)).to eql(file_contents[100_010..-1])
31
- end
32
-
33
- it "returns an empty string if 0 bytes is requested" do
34
- expect(io.read(0)).to eql('')
35
- end
36
-
37
- it "raises an error with negative length parameter" do
38
- expect { io.read(-1) }.to raise_error(ArgumentError)
39
- end
40
-
41
- it "returns ASCII-8BIT strings" do
42
- expect(io.read(10).encoding.to_s).to eql("ASCII-8BIT")
43
- expect(io.read.encoding.to_s).to eql("ASCII-8BIT")
44
- end
45
-
46
- it "can take a buffer parameter" do
47
- buffer = ''
48
- expect(io.read(100, buffer)).to eql(file_contents[0..99])
49
- expect(buffer).to eql(file_contents[0..99])
50
- # IO.read will clear the buffer if it's not empty
51
- expect(io.read(100, buffer)).to eql(file_contents[100..199])
52
- expect(buffer).to eql(file_contents[100..199])
53
- end
54
-
55
- context "with empty file" do
56
- let(:file_contents) { '' }
57
- it "returns an empty string when called without parameters" do
58
- expect(io.read).to eql('')
59
- end
60
-
61
- it "returns nil when called with length parameter" do
62
- expect(io.read(10)).to be_nil
63
- end
64
- end
65
-
66
- context "edge cases" do
67
- let(:stream) {
68
- instance_double(ActiveFedora::File::Streaming::FileBody).tap do |stream|
69
- allow(stream).to receive(:each) do |&block|
70
- ['abcd', 'efghijkl', 'mnopqrst', 'uvwxy', 'z'].each(&block)
71
- end
72
- end
73
- }
74
- before {
75
- allow(fedora_file).to receive(:stream).and_return(stream)
76
- }
77
- let(:file_contents) { 'abcdefghijklmnopqrstuvwxyz' }
78
- it "are handled correctly" do
79
- expect(io.read(4)).to eql('abcd')
80
- expect(io.read(7)).to eql('efghijk')
81
- expect(io.read(9)).to eql('lmnopqrst')
82
- expect(io.read(6)).to eql('uvwxyz')
83
- expect(io.read(4)).to be_nil
84
- end
85
- end
86
- end
87
-
88
- describe "#pos" do
89
- it "returns current position" do
90
- expect(io.pos).to be(0)
91
- io.read(5)
92
- expect(io.pos).to be(5)
93
- io.read(100_000)
94
- expect(io.pos).to be(100_005)
95
- io.read
96
- expect(io.pos).to be(file_contents.length)
97
- io.rewind
98
- expect(io.pos).to be(0)
99
- end
100
- end
101
-
102
- describe "#rewind" do
103
- it "restarts the stream" do
104
- io.read(10)
105
- io.rewind
106
- expect(io.read(10)).to eql(file_contents[0..9])
107
- end
108
- end
109
-
110
- describe "#close" do
111
- it "closes the stream" do
112
- io.read(10)
113
- io.close
114
- expect { io.read(10) } .to raise_error(IOError)
115
- end
116
- end
117
-
118
- describe "#binmode" do
119
- it "responds to binmode" do
120
- expect { io.binmode } .not_to raise_error
121
- end
122
- end
123
-
124
- describe "#binmode?" do
125
- it "returns true" do
126
- expect(io.binmode?).to be(true)
127
- end
128
- end
129
-
130
- describe "working with IO.copy_stream" do
131
- let(:output_stream) { StringIO.new .tap(&:binmode) }
132
- it "copies the stream" do
133
- IO.copy_stream(io, output_stream)
134
- expect(output_stream.string).to eql(file_contents)
135
- end
136
- end
137
- end