active-fedora 2.2.1 → 2.2.2
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.
- data/README.textile +21 -8
- data/lib/active_fedora.rb +27 -12
- data/lib/active_fedora/version.rb +1 -1
- data/lib/tasks/active_fedora_dev.rake +2 -1
- data/spec/unit/active_fedora_spec.rb +69 -1
- metadata +4 -4
data/README.textile
CHANGED
@@ -18,7 +18,7 @@ h2. Getting Started
|
|
18
18
|
|
19
19
|
The "ActiveFedora Console Tour":https://github.com/mediashelf/active_fedora/blob/master/CONSOLE_GETTING_STARTED.textile gives you a brief tour through ActiveFedora's features on the command line.
|
20
20
|
|
21
|
-
h2.
|
21
|
+
h2. Testing
|
22
22
|
|
23
23
|
In order to run the RSpec tests, you need to have a copy of the ActiveFedora source code, and then run bundle install in the source directory.
|
24
24
|
|
@@ -26,9 +26,11 @@ In order to run the RSpec tests, you need to have a copy of the ActiveFedora sou
|
|
26
26
|
git clone https://github.com/mediashelf/active_fedora.git
|
27
27
|
cd /wherever/active_fedora/is
|
28
28
|
bundle install
|
29
|
+
git submodule init
|
30
|
+
git submodule update
|
29
31
|
</pre>
|
30
32
|
|
31
|
-
|
33
|
+
h3. Testing with Hudson Rake Task
|
32
34
|
|
33
35
|
The hudson rake task will spin up jetty, import the fixtures, and run the tests for you.
|
34
36
|
|
@@ -36,7 +38,7 @@ The hudson rake task will spin up jetty, import the fixtures, and run the tests
|
|
36
38
|
rake hudson
|
37
39
|
</pre>
|
38
40
|
|
39
|
-
|
41
|
+
h3. Testing Manually
|
40
42
|
|
41
43
|
If you want to run the tests manually, follow these instructions.
|
42
44
|
|
@@ -49,16 +51,15 @@ java -jar start.jar
|
|
49
51
|
Then open a new terminal, go to your ActiveFedora source directory, and import fedora's demo objects.
|
50
52
|
|
51
53
|
<pre>
|
54
|
+
export FEDORA_HOME=/path/to/hydra/jetty/fedora/default
|
52
55
|
rake active_fedora:load_fixtures RAILS_ENV=test
|
53
56
|
</pre>
|
54
57
|
|
55
58
|
This does the equivalent of:
|
56
59
|
|
57
60
|
<pre>
|
58
|
-
|
59
|
-
|
60
|
-
$FEDORA_HOME/client/bin/fedora-ingest-demos.sh localhost 8983 fedoraAdmin fedoraAdmin http
|
61
|
-
rake af:import_fixture pid=hydrangea:fixture_mods_article1 RAILS_ENV=test
|
61
|
+
$FEDORA_HOME/client/bin/fedora-ingest-demos.sh localhost 8983 fedoraAdmin fedoraAdmin http
|
62
|
+
rake af:import_fixture pid=hydrangea:fixture_mods_article1 RAILS_ENV=test
|
62
63
|
</pre>
|
63
64
|
|
64
65
|
Now you're ready to run the tests. In the directory where active_fedora is installed, run
|
@@ -67,6 +68,18 @@ Now you're ready to run the tests. In the directory where active_fedora is inst
|
|
67
68
|
rake spec
|
68
69
|
</pre>
|
69
70
|
|
71
|
+
h2. Predicate Mappings
|
72
|
+
|
73
|
+
ActiveFedora versions 2.2.1 and higher provides specialized control over the predicate mappings used by SemanticNode. In order to provide your own mappings,
|
74
|
+
you must supply a predicate_mappings.yml in the same format as the config/predicate_mappings.yml file shipped with the ActiveFedora gem. Place the file in the same directory
|
75
|
+
as your fedora.yml file and use the current method of initializing ActiveFedora:
|
76
|
+
|
77
|
+
<pre>
|
78
|
+
ActiveFedora.init("/path/to/my/config/fedora.yml")
|
79
|
+
</pre>
|
80
|
+
|
81
|
+
If no predicate_mappings.yml file is found, ActiveFedora will use the default mappings.
|
82
|
+
|
70
83
|
h2. Acknowledgements
|
71
84
|
|
72
85
|
Creator: Matt Zumwalt ("MediaShelf":http://yourmediashelf.com)
|
@@ -101,4 +114,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
101
114
|
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
102
115
|
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
103
116
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
104
|
-
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
117
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/lib/active_fedora.rb
CHANGED
@@ -58,7 +58,6 @@ module ActiveFedora #:nodoc:
|
|
58
58
|
|
59
59
|
|
60
60
|
logger.info("FEDORA: loading ActiveFedora config from #{File.expand_path(config_path)}")
|
61
|
-
|
62
61
|
fedora_config = YAML::load(File.open(config_path))
|
63
62
|
raise "The #{config_env} environment settings were not found in the fedora.yml config. If you already have a fedora.yml file defined, make sure it defines settings for the #{config_env} environment" unless fedora_config[config_env]
|
64
63
|
|
@@ -77,16 +76,7 @@ module ActiveFedora #:nodoc:
|
|
77
76
|
logger.info("FEDORA: initialized Fedora as: #{Fedora::Repository.instance.inspect}")
|
78
77
|
|
79
78
|
# Retrieve the valid path for the predicate mappings config file
|
80
|
-
|
81
|
-
pred_config_paths.each do |path|
|
82
|
-
testfile = File.join(path,"predicate_mappings.yml")
|
83
|
-
if File.exist?(testfile)
|
84
|
-
@predicate_config_path = testfile
|
85
|
-
break
|
86
|
-
end
|
87
|
-
end
|
88
|
-
raise "Could not find predicate_mappings.yml in these locations: #{pred_config_paths.join("; ")}." unless @predicate_config_path
|
89
|
-
|
79
|
+
@predicate_config_path = build_predicate_config_path(File.dirname(config_path))
|
90
80
|
|
91
81
|
end
|
92
82
|
|
@@ -103,17 +93,41 @@ module ActiveFedora #:nodoc:
|
|
103
93
|
end
|
104
94
|
|
105
95
|
def self.predicate_config
|
106
|
-
@predicate_config_path
|
96
|
+
@predicate_config_path ||= build_predicate_config_path
|
107
97
|
end
|
108
98
|
|
109
99
|
def self.version
|
110
100
|
ActiveFedora::VERSION
|
111
101
|
end
|
102
|
+
|
103
|
+
protected
|
104
|
+
|
105
|
+
def self.build_predicate_config_path(config_path=nil)
|
106
|
+
pred_config_paths = [File.expand_path(File.join(File.dirname(__FILE__),"..","config"))]
|
107
|
+
pred_config_paths.unshift config_path if config_path
|
108
|
+
pred_config_paths.each do |path|
|
109
|
+
testfile = File.join(path,"predicate_mappings.yml")
|
110
|
+
if File.exist?(testfile) && valid_predicate_mapping?(testfile)
|
111
|
+
return testfile
|
112
|
+
end
|
113
|
+
end
|
114
|
+
raise PredicateMappingsNotFoundError #"Could not find predicate_mappings.yml in these locations: #{pred_config_paths.join("; ")}." unless @predicate_config_path
|
115
|
+
end
|
116
|
+
|
117
|
+
def self.valid_predicate_mapping?(testfile)
|
118
|
+
mapping = YAML::load(File.open(testfile))
|
119
|
+
return false unless mapping.has_key?(:default_namespace) && mapping[:default_namespace].is_a?(String)
|
120
|
+
return false unless mapping.has_key?(:predicate_mapping) && mapping[:predicate_mapping].is_a?(Hash)
|
121
|
+
true
|
122
|
+
end
|
123
|
+
|
124
|
+
|
112
125
|
end
|
113
126
|
|
114
127
|
|
115
128
|
|
116
129
|
|
130
|
+
|
117
131
|
# if ![].respond_to?(:count)
|
118
132
|
# class Array
|
119
133
|
# puts "active_fedora is Adding count method to Array"
|
@@ -129,5 +143,6 @@ end
|
|
129
143
|
module ActiveFedora
|
130
144
|
class ServerError < Fedora::ServerError; end # :nodoc:
|
131
145
|
class ObjectNotFoundError < RuntimeError; end # :nodoc:
|
146
|
+
class PredicateMappingsNotFoundError < RuntimeError; end # :nodoc:
|
132
147
|
end
|
133
148
|
|
@@ -38,6 +38,7 @@ task :hudson do
|
|
38
38
|
:startup_wait=>30
|
39
39
|
}
|
40
40
|
error = Jettywrapper.wrap(jetty_params) do
|
41
|
+
ENV["FEDORA_HOME"]=File.expand_path(File.join(File.dirname(__FILE__),'..','..','jetty','fedora','default'))
|
41
42
|
Rake::Task["active_fedora:load_fixtures"].invoke
|
42
43
|
Rake::Task["active_fedora:rspec"].invoke
|
43
44
|
end
|
@@ -94,7 +95,7 @@ namespace :active_fedora do
|
|
94
95
|
require 'solrizer'
|
95
96
|
require 'solrizer-fedora'
|
96
97
|
require 'spec/samples/models/hydrangea_article'
|
97
|
-
ENV["FEDORA_HOME"]
|
98
|
+
ENV["FEDORA_HOME"] ||= File.expand_path(File.join(File.dirname(__FILE__),'..','..','jetty','fedora','default'))
|
98
99
|
retval = `$FEDORA_HOME/client/bin/fedora-ingest-demos.sh localhost 8983 fedoraAdmin fedoraAdmin http`
|
99
100
|
puts "loaded demo objects #{retval}"
|
100
101
|
ActiveFedora.init unless Thread.current[:repo]
|
@@ -12,4 +12,72 @@ describe ActiveFedora do
|
|
12
12
|
# push the model definition into the cmodel's datastream (ie. dsname: oral_history.rb vs dsname: ruby)
|
13
13
|
end
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
|
+
describe ".build_predicate_config_path" do
|
17
|
+
it "should return the path to the default config/predicate_mappings.yml if no valid path is given" do
|
18
|
+
ActiveFedora.send(:build_predicate_config_path, nil).should == default_predicate_mapping_file
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should return the path to the default config/predicate_mappings.yml if specified config file not found" do
|
22
|
+
File.expects(:exist?).with("/path/to/predicate_mappings.yml").returns(false)
|
23
|
+
File.expects(:exist?).with(default_predicate_mapping_file).returns(true)
|
24
|
+
ActiveFedora.send(:build_predicate_config_path,"/path/to").should == default_predicate_mapping_file
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should return the path to the specified config_path if it exists" do
|
28
|
+
File.expects(:exist?).with("/path/to/predicate_mappings.yml").returns(true)
|
29
|
+
ActiveFedora.expects(:valid_predicate_mapping?).returns(true)
|
30
|
+
ActiveFedora.send(:build_predicate_config_path,"/path/to").should == "/path/to/predicate_mappings.yml"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe ".predicate_config" do
|
35
|
+
it "should return the default mapping if it has not been initialized" do
|
36
|
+
ActiveFedora.instance_variable_set("@predicate_config_path",nil)
|
37
|
+
ActiveFedora.predicate_config().should == default_predicate_mapping_file
|
38
|
+
end
|
39
|
+
it "should return the path that was set at initialization" do
|
40
|
+
pending()
|
41
|
+
File.expects(:exist?).with("/path/to/my/files/predicate_mappings.yml").returns(true)
|
42
|
+
mock_file = mock("fedora.yml")
|
43
|
+
File.expects(:open).returns(mock_file)
|
44
|
+
YAML.expects(:load).returns({"test"=>{"solr"=>{"url"=>"http://127.0.0.1:8983/solr/development"}, "fedora"=>{"url"=>"http://fedoraAdmin:fedoraAdmin@127.0.0.1:8983/fedora"}}})
|
45
|
+
ActiveFedora.init("/path/to/my/files/fedora.yml")
|
46
|
+
ActiveFedora.predicate_config.should == "/path/to/my/files/predicate_mappings.yml"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe ".valid_predicate_mapping" do
|
51
|
+
it "should return true if the predicate mapping has the appropriate keys and value types" do
|
52
|
+
ActiveFedora.send(:valid_predicate_mapping?,default_predicate_mapping_file).should be_true
|
53
|
+
end
|
54
|
+
it "should return false if the mapping is missing the :default_namespace" do
|
55
|
+
mock_yaml({:default_namespace0=>"my_namespace",:predicate_mapping=>{:key0=>"value0", :key1=>"value1"}})
|
56
|
+
ActiveFedora.send(:valid_predicate_mapping?,"/path/to/predicate_mappings.yml").should be_false
|
57
|
+
end
|
58
|
+
it "should return false if the :default_namespace is not a string" do
|
59
|
+
mock_yaml({:default_namespace=>{:foo=>"bar"}, :predicate_mapping=>{:key0=>"value0", :key1=>"value1"}})
|
60
|
+
ActiveFedora.send(:valid_predicate_mapping?,"/path/to/predicate_mappings.yml").should be_false
|
61
|
+
end
|
62
|
+
it "should return false if the :predicate_mappings key is missing" do
|
63
|
+
mock_yaml({:default_namespace=>"a string"})
|
64
|
+
ActiveFedora.send(:valid_predicate_mapping?,"/path/to/predicate_mappings.yml").should be_false
|
65
|
+
end
|
66
|
+
it "should return false if the :predicate_mappings key is not a hash" do
|
67
|
+
mock_yaml({:default_namespace=>"a string",:predicate_mapping=>"another string"})
|
68
|
+
ActiveFedora.send(:valid_predicate_mapping?,"/path/to/predicate_mappings.yml").should be_false
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
def mock_yaml(hash)
|
76
|
+
mock_file = mock("predicate_mappings.yml")
|
77
|
+
File.expects(:open).with("/path/to/predicate_mappings.yml").returns(mock_file)
|
78
|
+
YAML.expects(:load).returns(hash)
|
79
|
+
end
|
80
|
+
|
81
|
+
def default_predicate_mapping_file
|
82
|
+
File.expand_path(File.join(File.dirname(__FILE__),"..","..","config","predicate_mappings.yml"))
|
83
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active-fedora
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 3
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 2.2.
|
9
|
+
- 2
|
10
|
+
version: 2.2.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Matt Zumwalt
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-05
|
19
|
+
date: 2011-06-05 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: solr-ruby
|