active-fedora 13.1.2 → 13.1.3

Sign up to get free protection for your applications and to get access to all the features.
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