active-fedora 6.7.8 → 6.8.0
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.
- checksums.yaml +4 -4
- data/.rspec +1 -0
- data/.rubocop.yml +1 -0
- data/.rubocop_todo.yml +938 -0
- data/.travis.yml +5 -6
- data/Gemfile +3 -1
- data/Rakefile +7 -5
- data/active-fedora.gemspec +7 -8
- data/lib/active_fedora/om_datastream.rb +1 -0
- data/lib/active_fedora/rdf_xml_writer.rb +31 -62
- data/lib/active_fedora/version.rb +1 -1
- data/spec/config_helper.rb +14 -14
- data/spec/integration/associations_spec.rb +232 -232
- data/spec/integration/attributes_spec.rb +11 -12
- data/spec/integration/auditable_spec.rb +10 -10
- data/spec/integration/base_spec.rb +163 -163
- data/spec/integration/bug_spec.rb +7 -7
- data/spec/integration/complex_rdf_datastream_spec.rb +88 -88
- data/spec/integration/datastream_collections_spec.rb +69 -69
- data/spec/integration/datastream_spec.rb +43 -43
- data/spec/integration/datastreams_spec.rb +63 -63
- data/spec/integration/delegating_spec.rb +14 -14
- data/spec/integration/delete_all_spec.rb +38 -42
- data/spec/integration/fedora_solr_sync_spec.rb +5 -5
- data/spec/integration/full_featured_model_spec.rb +101 -101
- data/spec/integration/has_many_associations_spec.rb +24 -24
- data/spec/integration/model_spec.rb +30 -30
- data/spec/integration/nested_attribute_spec.rb +41 -41
- data/spec/integration/ntriples_datastream_spec.rb +107 -107
- data/spec/integration/om_datastream_spec.rb +67 -67
- data/spec/integration/persistence_spec.rb +6 -6
- data/spec/integration/rdf_nested_attributes_spec.rb +56 -56
- data/spec/integration/relation_delegation_spec.rb +24 -26
- data/spec/integration/rels_ext_datastream_spec.rb +20 -20
- data/spec/integration/scoped_query_spec.rb +40 -41
- data/spec/integration/solr_instance_loader_spec.rb +4 -4
- data/spec/integration/solr_service_spec.rb +46 -46
- data/spec/rails3_test_app/config/application.rb +1 -1
- data/spec/rails3_test_app/config/environments/development.rb +0 -1
- data/spec/rails3_test_app/config/environments/production.rb +1 -1
- data/spec/rails3_test_app/spec/spec_helper.rb +3 -3
- data/spec/rails3_test_app/spec/unit/rails_3_init.rb +4 -4
- data/spec/samples/hydra-mods_article_datastream.rb +334 -334
- data/spec/samples/hydra-rights_metadata_datastream.rb +57 -57
- data/spec/samples/marpa-dc_datastream.rb +17 -17
- data/spec/samples/models/audio_record.rb +16 -16
- data/spec/samples/models/image.rb +2 -2
- data/spec/samples/models/mods_article.rb +5 -5
- data/spec/samples/models/oral_history.rb +18 -18
- data/spec/samples/models/seminar.rb +24 -24
- data/spec/samples/models/seminar_audio_file.rb +17 -17
- data/spec/samples/oral_history_sample_model.rb +21 -21
- data/spec/samples/special_thing.rb +14 -14
- data/spec/spec_helper.rb +7 -11
- data/spec/support/an_active_model.rb +2 -2
- data/spec/support/mock_fedora.rb +16 -17
- data/spec/unit/active_fedora_spec.rb +58 -58
- data/spec/unit/association_proxy_spec.rb +5 -7
- data/spec/unit/base_active_model_spec.rb +25 -26
- data/spec/unit/base_cma_spec.rb +5 -5
- data/spec/unit/base_datastream_management_spec.rb +27 -27
- data/spec/unit/base_delegate_spec.rb +80 -82
- data/spec/unit/base_delegate_to_spec.rb +37 -39
- data/spec/unit/base_extra_spec.rb +48 -48
- data/spec/unit/base_spec.rb +300 -300
- data/spec/unit/callback_spec.rb +19 -19
- data/spec/unit/code_configurator_spec.rb +17 -17
- data/spec/unit/config_spec.rb +16 -8
- data/spec/unit/content_model_spec.rb +60 -60
- data/spec/unit/datastream_collections_spec.rb +229 -229
- data/spec/unit/datastream_spec.rb +57 -54
- data/spec/unit/datastreams_spec.rb +77 -77
- data/spec/unit/file_configurator_spec.rb +217 -217
- data/spec/unit/has_and_belongs_to_many_collection_spec.rb +26 -26
- data/spec/unit/has_many_collection_spec.rb +9 -9
- data/spec/unit/inheritance_spec.rb +12 -13
- data/spec/unit/model_spec.rb +41 -51
- data/spec/unit/nom_datastream_spec.rb +15 -15
- data/spec/unit/ntriples_datastream_spec.rb +112 -112
- data/spec/unit/om_datastream_spec.rb +233 -227
- data/spec/unit/persistence_spec.rb +6 -6
- data/spec/unit/predicates_spec.rb +73 -73
- data/spec/unit/property_spec.rb +9 -17
- data/spec/unit/qualified_dublin_core_datastream_spec.rb +33 -33
- data/spec/unit/query_spec.rb +188 -217
- data/spec/unit/rdf_datastream_spec.rb +28 -21
- data/spec/unit/rdf_list_nested_attributes_spec.rb +34 -34
- data/spec/unit/rdf_list_spec.rb +80 -104
- data/spec/unit/rdf_node_spec.rb +7 -7
- data/spec/unit/rdf_xml_writer_spec.rb +10 -10
- data/spec/unit/rdfxml_rdf_datastream_spec.rb +27 -27
- data/spec/unit/relationship_graph_spec.rb +51 -51
- data/spec/unit/rels_ext_datastream_spec.rb +75 -69
- data/spec/unit/rspec_matchers/belong_to_associated_active_fedora_object_matcher_spec.rb +15 -15
- data/spec/unit/rspec_matchers/have_many_associated_active_fedora_objects_matcher_spec.rb +15 -15
- data/spec/unit/rspec_matchers/have_predicate_matcher_spec.rb +15 -15
- data/spec/unit/rspec_matchers/match_fedora_datastream_matcher_spec.rb +12 -12
- data/spec/unit/rubydora_connection_spec.rb +5 -5
- data/spec/unit/semantic_node_spec.rb +59 -59
- data/spec/unit/serializers_spec.rb +4 -4
- data/spec/unit/service_definitions_spec.rb +26 -26
- data/spec/unit/simple_datastream_spec.rb +17 -17
- data/spec/unit/solr_config_options_spec.rb +27 -28
- data/spec/unit/solr_digital_object_spec.rb +21 -21
- data/spec/unit/solr_service_spec.rb +81 -81
- data/spec/unit/unsaved_digital_object_spec.rb +20 -20
- data/spec/unit/validations_spec.rb +21 -21
- metadata +70 -58
- data/gemfiles/gemfile.rails3 +0 -11
- data/gemfiles/gemfile.rails4 +0 -10
|
@@ -2,370 +2,370 @@ require 'spec_helper'
|
|
|
2
2
|
require 'config_helper'
|
|
3
3
|
|
|
4
4
|
describe ActiveFedora::FileConfigurator do
|
|
5
|
-
|
|
5
|
+
|
|
6
6
|
subject {ActiveFedora.configurator }
|
|
7
|
-
|
|
7
|
+
|
|
8
8
|
after :all do
|
|
9
9
|
unstub_rails
|
|
10
10
|
# Restore to default fedora configs
|
|
11
11
|
restore_spec_configuration
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
describe
|
|
15
|
-
it
|
|
16
|
-
ActiveFedora::FileConfigurator.
|
|
14
|
+
describe '#initialize' do
|
|
15
|
+
it 'should trigger configuration reset (to empty defaults)' do
|
|
16
|
+
expect_any_instance_of(ActiveFedora::FileConfigurator).to receive(:reset!)
|
|
17
17
|
ActiveFedora::FileConfigurator.new
|
|
18
|
-
end
|
|
18
|
+
end
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
describe
|
|
21
|
+
describe '#config_options' do
|
|
22
22
|
before do
|
|
23
23
|
subject.reset!
|
|
24
24
|
end
|
|
25
|
-
it
|
|
26
|
-
subject.config_options.
|
|
25
|
+
it 'should be an empty hash' do
|
|
26
|
+
expect(subject.config_options).to eq({})
|
|
27
27
|
end
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
-
describe
|
|
30
|
+
describe '#fedora_config' do
|
|
31
31
|
before do
|
|
32
32
|
subject.reset!
|
|
33
33
|
end
|
|
34
|
-
it
|
|
35
|
-
subject.
|
|
34
|
+
it 'should trigger configuration to load' do
|
|
35
|
+
expect(subject).to receive(:load_fedora_config)
|
|
36
36
|
subject.fedora_config
|
|
37
|
-
end
|
|
37
|
+
end
|
|
38
38
|
end
|
|
39
|
-
describe
|
|
39
|
+
describe '#solr_config' do
|
|
40
40
|
before do
|
|
41
41
|
subject.reset!
|
|
42
42
|
end
|
|
43
|
-
it
|
|
44
|
-
subject.
|
|
43
|
+
it 'should trigger configuration to load' do
|
|
44
|
+
expect(subject).to receive(:load_solr_config)
|
|
45
45
|
subject.solr_config
|
|
46
|
-
end
|
|
46
|
+
end
|
|
47
47
|
end
|
|
48
48
|
|
|
49
|
-
describe
|
|
49
|
+
describe '#reset!' do
|
|
50
50
|
before { subject.reset! }
|
|
51
|
-
it
|
|
52
|
-
subject.instance_variable_get(:@fedora_config).
|
|
51
|
+
it 'should clear @fedora_config' do
|
|
52
|
+
expect(subject.instance_variable_get(:@fedora_config)).to eq({})
|
|
53
53
|
end
|
|
54
|
-
it
|
|
55
|
-
subject.instance_variable_get(:@solr_config).
|
|
54
|
+
it 'should clear @solr_config' do
|
|
55
|
+
expect(subject.instance_variable_get(:@solr_config)).to eq({})
|
|
56
56
|
end
|
|
57
|
-
it
|
|
58
|
-
subject.instance_variable_get(:@config_options).
|
|
57
|
+
it 'should clear @config_options' do
|
|
58
|
+
expect(subject.instance_variable_get(:@config_options)).to eq({})
|
|
59
59
|
end
|
|
60
60
|
end
|
|
61
61
|
|
|
62
|
-
describe
|
|
63
|
-
|
|
64
|
-
describe
|
|
65
|
-
it
|
|
66
|
-
subject.
|
|
67
|
-
File.
|
|
68
|
-
subject.get_config_path(:fedora).
|
|
62
|
+
describe 'initialization methods' do
|
|
63
|
+
|
|
64
|
+
describe 'get_config_path(:fedora)' do
|
|
65
|
+
it 'should use the config_options[:config_path] if it exists' do
|
|
66
|
+
expect(subject).to receive(:config_options).and_return({:fedora_config_path => '/path/to/fedora.yml'})
|
|
67
|
+
expect(File).to receive(:file?).with('/path/to/fedora.yml').and_return(true)
|
|
68
|
+
expect(subject.get_config_path(:fedora)).to eql('/path/to/fedora.yml')
|
|
69
69
|
end
|
|
70
70
|
|
|
71
|
-
it
|
|
72
|
-
subject.
|
|
73
|
-
stub_rails(:root =>
|
|
74
|
-
File.
|
|
75
|
-
subject.get_config_path(:fedora).
|
|
71
|
+
it 'should look in Rails.root/config/fedora.yml if it exists and no fedora_config_path passed in' do
|
|
72
|
+
expect(subject).to receive(:config_options).and_return({})
|
|
73
|
+
stub_rails(:root => '/rails/root')
|
|
74
|
+
expect(File).to receive(:file?).with('/rails/root/config/fedora.yml').and_return(true)
|
|
75
|
+
expect(subject.get_config_path(:fedora)).to eql('/rails/root/config/fedora.yml')
|
|
76
76
|
unstub_rails
|
|
77
77
|
end
|
|
78
78
|
|
|
79
|
-
it
|
|
80
|
-
subject.
|
|
81
|
-
Dir.stub(:getwd =>
|
|
82
|
-
File.
|
|
83
|
-
subject.get_config_path(:fedora).
|
|
79
|
+
it 'should look in ./config/fedora.yml if neither rails.root nor :fedora_config_path are set' do
|
|
80
|
+
expect(subject).to receive(:config_options).and_return({})
|
|
81
|
+
Dir.stub(:getwd => '/current/working/directory')
|
|
82
|
+
expect(File).to receive(:file?).with('/current/working/directory/config/fedora.yml').and_return(true)
|
|
83
|
+
expect(subject.get_config_path(:fedora)).to eql('/current/working/directory/config/fedora.yml')
|
|
84
84
|
end
|
|
85
85
|
|
|
86
|
-
it
|
|
87
|
-
subject.
|
|
88
|
-
Dir.
|
|
89
|
-
File.
|
|
90
|
-
File.
|
|
91
|
-
logger.
|
|
92
|
-
subject.get_config_path(:fedora).
|
|
86
|
+
it 'should return default fedora.yml that ships with active-fedora if none of the above' do
|
|
87
|
+
expect(subject).to receive(:config_options).and_return({})
|
|
88
|
+
expect(Dir).to receive(:getwd).and_return('/current/working/directory')
|
|
89
|
+
expect(File).to receive(:file?).with('/current/working/directory/config/fedora.yml').and_return(false)
|
|
90
|
+
expect(File).to receive(:file?).with(File.expand_path(File.join(File.dirname('__FILE__'), 'config', 'fedora.yml'))).and_return(true)
|
|
91
|
+
expect(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.")
|
|
92
|
+
expect(subject.get_config_path(:fedora)).to eql(File.expand_path(File.join(File.dirname('__FILE__'), 'config', 'fedora.yml')))
|
|
93
93
|
end
|
|
94
94
|
end
|
|
95
95
|
|
|
96
|
-
describe
|
|
97
|
-
it
|
|
98
|
-
subject.
|
|
99
|
-
File.
|
|
100
|
-
subject.get_config_path(:predicate_mappings).
|
|
96
|
+
describe 'get_config_path(:predicate_mappings)' do
|
|
97
|
+
it 'should use the config_options[:config_path] if it exists' do
|
|
98
|
+
expect(subject).to receive(:config_options).and_return({:predicate_mappings_config_path => '/path/to/predicate_mappings.yml'})
|
|
99
|
+
expect(File).to receive(:file?).with('/path/to/predicate_mappings.yml').and_return(true)
|
|
100
|
+
expect(subject.get_config_path(:predicate_mappings)).to eql('/path/to/predicate_mappings.yml')
|
|
101
101
|
end
|
|
102
102
|
|
|
103
|
-
it
|
|
104
|
-
subject.
|
|
105
|
-
stub_rails(:root =>
|
|
106
|
-
File.
|
|
107
|
-
subject.get_config_path(:predicate_mappings).
|
|
103
|
+
it 'should look in Rails.root/config/predicate_mappings.yml if it exists and no predicate_mappings_config_path passed in' do
|
|
104
|
+
expect(subject).to receive(:config_options).and_return({})
|
|
105
|
+
stub_rails(:root => '/rails/root')
|
|
106
|
+
expect(File).to receive(:file?).with('/rails/root/config/predicate_mappings.yml').and_return(true)
|
|
107
|
+
expect(subject.get_config_path(:predicate_mappings)).to eql('/rails/root/config/predicate_mappings.yml')
|
|
108
108
|
unstub_rails
|
|
109
109
|
end
|
|
110
110
|
|
|
111
|
-
it
|
|
112
|
-
subject.
|
|
113
|
-
Dir.stub(:getwd =>
|
|
114
|
-
File.
|
|
115
|
-
subject.get_config_path(:predicate_mappings).
|
|
111
|
+
it 'should look in ./config/predicate_mappings.yml if neither rails.root nor :predicate_mappings_config_path are set' do
|
|
112
|
+
expect(subject).to receive(:config_options).and_return({})
|
|
113
|
+
Dir.stub(:getwd => '/current/working/directory')
|
|
114
|
+
expect(File).to receive(:file?).with('/current/working/directory/config/predicate_mappings.yml').and_return(true)
|
|
115
|
+
expect(subject.get_config_path(:predicate_mappings)).to eql('/current/working/directory/config/predicate_mappings.yml')
|
|
116
116
|
end
|
|
117
117
|
|
|
118
|
-
it
|
|
119
|
-
subject.
|
|
120
|
-
Dir.
|
|
121
|
-
File.
|
|
122
|
-
File.
|
|
123
|
-
logger.
|
|
124
|
-
subject.get_config_path(:predicate_mappings).
|
|
118
|
+
it 'should return default predicate_mappings.yml that ships with active-fedora if none of the above' do
|
|
119
|
+
expect(subject).to receive(:config_options).and_return({})
|
|
120
|
+
expect(Dir).to receive(:getwd).and_return('/current/working/directory')
|
|
121
|
+
expect(File).to receive(:file?).with('/current/working/directory/config/predicate_mappings.yml').and_return(false)
|
|
122
|
+
expect(File).to receive(:file?).with(File.expand_path(File.join(File.dirname('__FILE__'), 'config', 'predicate_mappings.yml'))).and_return(true)
|
|
123
|
+
expect(logger).to receive(:warn).with("Using the default predicate_mappings.yml that comes with active-fedora. If you want to override this, pass the path to predicate_mappings.yml to ActiveFedora - ie. ActiveFedora.init(:predicate_mappings_config_path => '/path/to/predicate_mappings.yml') - or set Rails.root and put predicate_mappings.yml into \#{Rails.root}/config.")
|
|
124
|
+
expect(subject.get_config_path(:predicate_mappings)).to eql(File.expand_path(File.join(File.dirname('__FILE__'), 'config', 'predicate_mappings.yml')))
|
|
125
125
|
end
|
|
126
126
|
end
|
|
127
127
|
|
|
128
|
-
describe
|
|
129
|
-
it
|
|
130
|
-
subject.stub(:config_options => {:solr_config_path =>
|
|
131
|
-
File.
|
|
132
|
-
subject.get_config_path(:solr).
|
|
128
|
+
describe 'get_config_path(:solr)' do
|
|
129
|
+
it 'should return the solr_config_path if set in config_options hash' do
|
|
130
|
+
subject.stub(:config_options => {:solr_config_path => '/path/to/solr.yml'})
|
|
131
|
+
expect(File).to receive(:file?).with('/path/to/solr.yml').and_return(true)
|
|
132
|
+
expect(subject.get_config_path(:solr)).to eql('/path/to/solr.yml')
|
|
133
133
|
end
|
|
134
|
-
|
|
135
|
-
it
|
|
136
|
-
subject.
|
|
137
|
-
File.
|
|
138
|
-
subject.get_config_path(:solr).
|
|
134
|
+
|
|
135
|
+
it 'should return the solr.yml file in the same directory as the fedora.yml if it exists' do
|
|
136
|
+
expect(subject).to receive(:path).and_return('/path/to/fedora/config/fedora.yml')
|
|
137
|
+
expect(File).to receive(:file?).with('/path/to/fedora/config/solr.yml').and_return(true)
|
|
138
|
+
expect(subject.get_config_path(:solr)).to eql('/path/to/fedora/config/solr.yml')
|
|
139
139
|
end
|
|
140
|
-
|
|
141
|
-
context
|
|
140
|
+
|
|
141
|
+
context 'no solr.yml in same directory as fedora.yml and fedora.yml does not contain solr url' do
|
|
142
142
|
|
|
143
143
|
before :each do
|
|
144
144
|
subject.stub(:config_options => {})
|
|
145
|
-
subject.
|
|
146
|
-
File.
|
|
145
|
+
expect(subject).to receive(:path).and_return('/path/to/fedora/config/fedora.yml')
|
|
146
|
+
expect(File).to receive(:file?).with('/path/to/fedora/config/solr.yml').and_return(false)
|
|
147
147
|
end
|
|
148
148
|
after :each do
|
|
149
149
|
unstub_rails
|
|
150
150
|
end
|
|
151
151
|
|
|
152
|
-
it
|
|
153
|
-
stub_rails(:root=>
|
|
154
|
-
File.
|
|
155
|
-
subject.get_config_path(:solr).
|
|
152
|
+
it 'should 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
|
|
153
|
+
stub_rails(:root => '/rails/root')
|
|
154
|
+
expect(File).to receive(:file?).with('/rails/root/config/solr.yml').and_return(true)
|
|
155
|
+
expect(subject.get_config_path(:solr)).to eql('/rails/root/config/solr.yml')
|
|
156
156
|
end
|
|
157
157
|
|
|
158
|
-
it
|
|
159
|
-
Dir.stub(:getwd =>
|
|
160
|
-
File.
|
|
161
|
-
subject.get_config_path(:solr).
|
|
158
|
+
it 'should look in ./config/solr.yml if no rails root' do
|
|
159
|
+
Dir.stub(:getwd => '/current/working/directory')
|
|
160
|
+
expect(File).to receive(:file?).with('/current/working/directory/config/solr.yml').and_return(true)
|
|
161
|
+
expect(subject.get_config_path(:solr)).to eql('/current/working/directory/config/solr.yml')
|
|
162
162
|
end
|
|
163
163
|
|
|
164
|
-
it
|
|
165
|
-
Dir.stub(:getwd =>
|
|
166
|
-
File.
|
|
167
|
-
File.
|
|
168
|
-
logger.
|
|
169
|
-
subject.get_config_path(:solr).
|
|
164
|
+
it 'should return the default solr.yml file that ships with active-fedora if no other option is set' do
|
|
165
|
+
Dir.stub(:getwd => '/current/working/directory')
|
|
166
|
+
expect(File).to receive(:file?).with('/current/working/directory/config/solr.yml').and_return(false)
|
|
167
|
+
expect(File).to receive(:file?).with(File.expand_path(File.join(File.dirname('__FILE__'), 'config', 'solr.yml'))).and_return(true)
|
|
168
|
+
expect(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.")
|
|
169
|
+
expect(subject.get_config_path(:solr)).to eql(File.expand_path(File.join(File.dirname('__FILE__'), 'config', 'solr.yml')))
|
|
170
170
|
end
|
|
171
171
|
end
|
|
172
172
|
|
|
173
173
|
end
|
|
174
174
|
|
|
175
|
-
describe
|
|
175
|
+
describe 'load_fedora_config' do
|
|
176
176
|
before(:each) do
|
|
177
177
|
subject.reset!
|
|
178
178
|
end
|
|
179
|
-
it
|
|
180
|
-
subject.
|
|
181
|
-
subject.
|
|
182
|
-
subject.
|
|
183
|
-
IO.
|
|
184
|
-
subject.load_fedora_config.
|
|
185
|
-
subject.fedora_config.
|
|
179
|
+
it 'should load the file specified in fedora_config_path' do
|
|
180
|
+
allow(subject).to receive(:load_solrizer_config)
|
|
181
|
+
expect(subject).to receive(:get_config_path).with(:fedora).and_return('/path/to/fedora.yml')
|
|
182
|
+
expect(subject).to receive(:load_solr_config)
|
|
183
|
+
expect(IO).to receive(:read).with('/path/to/fedora.yml').and_return("development:\n url: http://devfedora:8983\ntest:\n url: http://myfedora:8080")
|
|
184
|
+
expect(subject.load_fedora_config).to eq({:url => 'http://myfedora:8080'})
|
|
185
|
+
expect(subject.fedora_config).to eq({:url => 'http://myfedora:8080'})
|
|
186
186
|
end
|
|
187
187
|
|
|
188
|
-
it
|
|
189
|
-
subject.
|
|
190
|
-
subject.
|
|
191
|
-
subject.
|
|
192
|
-
IO.
|
|
193
|
-
subject.load_fedora_config.
|
|
194
|
-
subject.fedora_config.
|
|
188
|
+
it 'should allow sharding' do
|
|
189
|
+
allow(subject).to receive(:load_solrizer_config)
|
|
190
|
+
expect(subject).to receive(:get_config_path).with(:fedora).and_return('/path/to/fedora.yml')
|
|
191
|
+
expect(subject).to receive(:load_solr_config)
|
|
192
|
+
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")
|
|
193
|
+
expect(subject.load_fedora_config).to eq([{:url => 'http://myfedora:8080'}, {:url => 'http://myfedora:8081'}])
|
|
194
|
+
expect(subject.fedora_config).to eq([{:url => 'http://myfedora:8080'}, {:url => 'http://myfedora:8081'}])
|
|
195
195
|
end
|
|
196
196
|
|
|
197
|
-
it
|
|
198
|
-
subject.
|
|
199
|
-
subject.
|
|
200
|
-
subject.
|
|
201
|
-
IO.
|
|
202
|
-
subject.load_fedora_config.
|
|
203
|
-
subject.fedora_config.
|
|
197
|
+
it 'should parse the file using ERb' do
|
|
198
|
+
allow(subject).to receive(:load_solrizer_config)
|
|
199
|
+
expect(subject).to receive(:get_config_path).with(:fedora).and_return('/path/to/fedora.yml')
|
|
200
|
+
expect(subject).to receive(:load_solr_config)
|
|
201
|
+
expect(IO).to receive(:read).with('/path/to/fedora.yml').and_return("development:\n url: http://devfedora:<%= 8983 %>\ntest:\n url: http://myfedora:<%= 8081 %>")
|
|
202
|
+
expect(subject.load_fedora_config).to eq({:url => 'http://myfedora:8081'})
|
|
203
|
+
expect(subject.fedora_config).to eq({:url => 'http://myfedora:8081'})
|
|
204
204
|
end
|
|
205
205
|
end
|
|
206
206
|
|
|
207
|
-
describe
|
|
207
|
+
describe 'load_solr_config' do
|
|
208
208
|
before(:each) do
|
|
209
209
|
subject.reset!
|
|
210
210
|
end
|
|
211
|
-
it
|
|
212
|
-
subject.
|
|
213
|
-
subject.
|
|
214
|
-
subject.
|
|
215
|
-
IO.
|
|
216
|
-
subject.load_solr_config.
|
|
217
|
-
subject.solr_config.
|
|
211
|
+
it 'should load the file specified in solr_config_path' do
|
|
212
|
+
allow(subject).to receive(:load_solrizer_config)
|
|
213
|
+
expect(subject).to receive(:get_config_path).with(:solr).and_return('/path/to/solr.yml')
|
|
214
|
+
expect(subject).to receive(:load_fedora_config)
|
|
215
|
+
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")
|
|
216
|
+
expect(subject.load_solr_config).to eq({:url => 'http://mysolr:8080'})
|
|
217
|
+
expect(subject.solr_config).to eq({:url => 'http://mysolr:8080'})
|
|
218
218
|
end
|
|
219
219
|
|
|
220
|
-
it
|
|
221
|
-
subject.
|
|
222
|
-
subject.
|
|
223
|
-
subject.
|
|
224
|
-
IO.
|
|
225
|
-
subject.load_solr_config.
|
|
226
|
-
subject.solr_config.
|
|
220
|
+
it 'should parse the file using ERb' do
|
|
221
|
+
allow(subject).to receive(:load_solrizer_config)
|
|
222
|
+
expect(subject).to receive(:get_config_path).with(:solr).and_return('/path/to/solr.yml')
|
|
223
|
+
expect(subject).to receive(:load_fedora_config)
|
|
224
|
+
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 %>")
|
|
225
|
+
expect(subject.load_solr_config).to eq({:url => 'http://mysolr:8081'})
|
|
226
|
+
expect(subject.solr_config).to eq({:url => 'http://mysolr:8081'})
|
|
227
227
|
end
|
|
228
228
|
end
|
|
229
229
|
|
|
230
|
-
describe
|
|
231
|
-
describe
|
|
230
|
+
describe 'load_configs' do
|
|
231
|
+
describe 'when config is not loaded' do
|
|
232
232
|
before do
|
|
233
233
|
subject.instance_variable_set :@config_loaded, nil
|
|
234
234
|
end
|
|
235
|
-
it
|
|
236
|
-
subject.config_loaded
|
|
235
|
+
it 'should load the fedora and solr configs' do
|
|
236
|
+
expect(subject.config_loaded?).to be_falsey
|
|
237
237
|
subject.load_configs
|
|
238
|
-
subject.config_loaded
|
|
238
|
+
expect(subject.config_loaded?).to be_truthy
|
|
239
239
|
end
|
|
240
240
|
end
|
|
241
|
-
describe
|
|
241
|
+
describe 'when config is loaded' do
|
|
242
242
|
before do
|
|
243
243
|
subject.instance_variable_set :@config_loaded, true
|
|
244
244
|
end
|
|
245
|
-
it
|
|
246
|
-
subject.
|
|
247
|
-
subject.config_loaded
|
|
245
|
+
it 'should load the fedora and solr configs' do
|
|
246
|
+
expect(subject).to receive(:load_config).never
|
|
247
|
+
expect(subject.config_loaded?).to be_truthy
|
|
248
248
|
subject.load_configs
|
|
249
|
-
subject.config_loaded
|
|
249
|
+
expect(subject.config_loaded?).to be_truthy
|
|
250
250
|
end
|
|
251
251
|
end
|
|
252
252
|
end
|
|
253
253
|
|
|
254
|
-
describe
|
|
255
|
-
it
|
|
256
|
-
subject.
|
|
257
|
-
File.
|
|
258
|
-
subject.check_fedora_path_for_solr.
|
|
254
|
+
describe 'check_fedora_path_for_solr' do
|
|
255
|
+
it 'should find the solr.yml file and return it if it exists' do
|
|
256
|
+
expect(subject).to receive(:path).and_return('/path/to/fedora/fedora.yml')
|
|
257
|
+
expect(File).to receive(:file?).with('/path/to/fedora/solr.yml').and_return(true)
|
|
258
|
+
expect(subject.check_fedora_path_for_solr).to eq('/path/to/fedora/solr.yml')
|
|
259
259
|
end
|
|
260
|
-
it
|
|
261
|
-
subject.
|
|
262
|
-
File.
|
|
263
|
-
subject.check_fedora_path_for_solr.
|
|
260
|
+
it 'should return nil if the solr.yml file is not there' do
|
|
261
|
+
expect(subject).to receive(:path).and_return('/path/to/fedora/fedora.yml')
|
|
262
|
+
expect(File).to receive(:file?).with('/path/to/fedora/solr.yml').and_return(false)
|
|
263
|
+
expect(subject.check_fedora_path_for_solr).to be_nil
|
|
264
264
|
end
|
|
265
265
|
end
|
|
266
266
|
end
|
|
267
|
-
|
|
268
|
-
describe
|
|
269
|
-
|
|
267
|
+
|
|
268
|
+
describe 'setting the environment and loading configuration' do
|
|
269
|
+
|
|
270
270
|
before(:all) do
|
|
271
271
|
@fake_rails_root = File.expand_path(File.dirname(__FILE__) + '/../fixtures/rails_root')
|
|
272
272
|
end
|
|
273
273
|
|
|
274
|
-
|
|
274
|
+
|
|
275
275
|
after(:all) do
|
|
276
|
-
config_file = File.join(File.dirname(__FILE__),
|
|
277
|
-
environment =
|
|
278
|
-
ActiveFedora.init(:environment=>environment, :fedora_config_path=>config_file)
|
|
276
|
+
config_file = File.join(File.dirname(__FILE__), '..', '..', 'config', 'fedora.yml')
|
|
277
|
+
environment = 'test'
|
|
278
|
+
ActiveFedora.init(:environment => environment, :fedora_config_path => config_file)
|
|
279
279
|
end
|
|
280
|
-
|
|
281
|
-
it
|
|
280
|
+
|
|
281
|
+
it 'can tell its config paths' do
|
|
282
282
|
subject.init
|
|
283
|
-
subject.
|
|
283
|
+
expect(subject).to respond_to(:solr_config_path)
|
|
284
284
|
end
|
|
285
|
-
it
|
|
286
|
-
subject.
|
|
287
|
-
Dir.
|
|
285
|
+
it 'loads a config from the current working directory as a second choice' do
|
|
286
|
+
allow(subject).to receive(:load_solrizer_config)
|
|
287
|
+
allow(Dir).to receive(:getwd).and_return(@fake_rails_root)
|
|
288
288
|
subject.init
|
|
289
|
-
subject.get_config_path(:fedora).
|
|
290
|
-
subject.solr_config_path.
|
|
289
|
+
expect(subject.get_config_path(:fedora)).to eql("#{@fake_rails_root}/config/fedora.yml")
|
|
290
|
+
expect(subject.solr_config_path).to eql("#{@fake_rails_root}/config/solr.yml")
|
|
291
291
|
end
|
|
292
|
-
it
|
|
293
|
-
Dir.
|
|
294
|
-
subject.
|
|
295
|
-
logger.
|
|
292
|
+
it 'loads the config that ships with this gem as a last choice' do
|
|
293
|
+
allow(Dir).to receive(:getwd).and_return('/fake/path')
|
|
294
|
+
allow(subject).to receive(:load_solrizer_config)
|
|
295
|
+
expect(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
|
|
296
296
|
subject.init
|
|
297
|
-
expected_config = File.expand_path(File.join(File.dirname(__FILE__),
|
|
298
|
-
subject.get_config_path(:fedora).
|
|
299
|
-
subject.solr_config_path.
|
|
297
|
+
expected_config = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'config'))
|
|
298
|
+
expect(subject.get_config_path(:fedora)).to eql(expected_config + '/fedora.yml')
|
|
299
|
+
expect(subject.solr_config_path).to eql(expected_config + '/solr.yml')
|
|
300
300
|
end
|
|
301
|
-
it
|
|
302
|
-
|
|
301
|
+
it 'raises an error if you pass in a string' do
|
|
302
|
+
expect{ subject.init("#{@fake_rails_root}/config/fake_fedora.yml") }.to raise_exception(ArgumentError)
|
|
303
303
|
end
|
|
304
|
-
it
|
|
305
|
-
|
|
304
|
+
it 'raises an error if you pass in a non-existant config file' do
|
|
305
|
+
expect{ subject.init(:fedora_config_path => 'really_fake_fedora.yml') }.to raise_exception(ActiveFedora::ConfigurationError)
|
|
306
306
|
end
|
|
307
|
-
|
|
308
|
-
describe
|
|
309
|
-
before(:all) do
|
|
310
|
-
stub_rails(:root=>File.dirname(__FILE__) + '/../fixtures/rails_root')
|
|
307
|
+
|
|
308
|
+
describe 'within Rails' do
|
|
309
|
+
before(:all) do
|
|
310
|
+
stub_rails(:root => File.dirname(__FILE__) + '/../fixtures/rails_root')
|
|
311
311
|
end
|
|
312
312
|
|
|
313
313
|
after(:all) do
|
|
314
314
|
unstub_rails
|
|
315
315
|
end
|
|
316
|
-
|
|
317
|
-
it
|
|
318
|
-
subject.
|
|
316
|
+
|
|
317
|
+
it 'loads a config from Rails.root as a first choice' do
|
|
318
|
+
allow(subject).to receive(:load_solrizer_config)
|
|
319
319
|
subject.init
|
|
320
|
-
subject.get_config_path(:fedora).
|
|
321
|
-
subject.solr_config_path.
|
|
320
|
+
expect(subject.get_config_path(:fedora)).to eql("#{Rails.root}/config/fedora.yml")
|
|
321
|
+
expect(subject.solr_config_path).to eql("#{Rails.root}/config/solr.yml")
|
|
322
322
|
end
|
|
323
|
-
|
|
324
|
-
it
|
|
325
|
-
stub_rails(:env=>
|
|
323
|
+
|
|
324
|
+
it 'can tell what environment it is set to run in' do
|
|
325
|
+
stub_rails(:env => 'development')
|
|
326
326
|
subject.init
|
|
327
|
-
ActiveFedora.environment.
|
|
327
|
+
expect(ActiveFedora.environment).to eql('development')
|
|
328
328
|
end
|
|
329
|
-
|
|
329
|
+
|
|
330
330
|
end
|
|
331
331
|
end
|
|
332
|
-
|
|
332
|
+
|
|
333
333
|
##########################
|
|
334
|
-
|
|
335
|
-
describe
|
|
336
|
-
it
|
|
337
|
-
subject.send(:build_predicate_config_path).
|
|
334
|
+
|
|
335
|
+
describe '.build_predicate_config_path' do
|
|
336
|
+
it 'should return the path to the default config/predicate_mappings.yml if no valid path is given' do
|
|
337
|
+
expect(subject.send(:build_predicate_config_path)).to eq(default_predicate_mapping_file)
|
|
338
338
|
end
|
|
339
339
|
end
|
|
340
340
|
|
|
341
|
-
describe
|
|
341
|
+
describe '.predicate_config' do
|
|
342
342
|
before do
|
|
343
343
|
subject.instance_variable_set :@config_loaded, nil
|
|
344
344
|
end
|
|
345
|
-
it
|
|
346
|
-
subject.predicate_config().
|
|
345
|
+
it 'should return the default mapping if it has not been initialized' do
|
|
346
|
+
expect(subject.predicate_config()).to eq(YAMLAdaptor.load(File.read(default_predicate_mapping_file)))
|
|
347
347
|
end
|
|
348
348
|
end
|
|
349
349
|
|
|
350
|
-
describe
|
|
351
|
-
it
|
|
352
|
-
subject.send(:valid_predicate_mapping?,default_predicate_mapping_file).
|
|
350
|
+
describe '.valid_predicate_mapping' do
|
|
351
|
+
it 'should return true if the predicate mapping has the appropriate keys and value types' do
|
|
352
|
+
expect(subject.send(:valid_predicate_mapping?, default_predicate_mapping_file)).to be_truthy
|
|
353
353
|
end
|
|
354
|
-
it
|
|
355
|
-
mock_yaml({:default_namespace0=>
|
|
356
|
-
subject.send(:valid_predicate_mapping?,
|
|
354
|
+
it 'should return false if the mapping is missing the :default_namespace' do
|
|
355
|
+
mock_yaml({:default_namespace0 => 'my_namespace', :predicate_mapping => {:key0 => 'value0', :key1 => 'value1'}}, '/path/to/predicate_mappings.yml')
|
|
356
|
+
expect(subject.send(:valid_predicate_mapping?, '/path/to/predicate_mappings.yml')).to be_falsey
|
|
357
357
|
end
|
|
358
|
-
it
|
|
359
|
-
mock_yaml({:default_namespace=>{:foo=>
|
|
360
|
-
subject.send(:valid_predicate_mapping?,
|
|
358
|
+
it 'should return false if the :default_namespace is not a string' do
|
|
359
|
+
mock_yaml({:default_namespace => {:foo => 'bar'}, :predicate_mapping => {:key0 => 'value0', :key1 => 'value1'}}, '/path/to/predicate_mappings.yml')
|
|
360
|
+
expect(subject.send(:valid_predicate_mapping?, '/path/to/predicate_mappings.yml')).to be_falsey
|
|
361
361
|
end
|
|
362
|
-
it
|
|
363
|
-
mock_yaml({:default_namespace=>
|
|
364
|
-
subject.send(:valid_predicate_mapping?,
|
|
362
|
+
it 'should return false if the :predicate_mappings key is missing' do
|
|
363
|
+
mock_yaml({:default_namespace => 'a string'}, '/path/to/predicate_mappings.yml')
|
|
364
|
+
expect(subject.send(:valid_predicate_mapping?, '/path/to/predicate_mappings.yml')).to be_falsey
|
|
365
365
|
end
|
|
366
|
-
it
|
|
367
|
-
mock_yaml({:default_namespace=>
|
|
368
|
-
subject.send(:valid_predicate_mapping?,
|
|
366
|
+
it 'should return false if the :predicate_mappings key is not a hash' do
|
|
367
|
+
mock_yaml({:default_namespace => 'a string', :predicate_mapping => 'another string'}, '/path/to/predicate_mappings.yml')
|
|
368
|
+
expect(subject.send(:valid_predicate_mapping?, '/path/to/predicate_mappings.yml')).to be_falsey
|
|
369
369
|
end
|
|
370
370
|
|
|
371
371
|
end
|