active-fedora 9.8.2 → 9.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.txt +29 -0
- data/active-fedora.gemspec +1 -1
- data/config/fedora.yml +2 -2
- data/config/solr.yml +3 -3
- data/lib/active_fedora.rb +1 -1
- data/lib/active_fedora/associations/builder/belongs_to.rb +2 -5
- data/lib/active_fedora/associations/builder/has_and_belongs_to_many.rb +2 -5
- data/lib/active_fedora/config.rb +1 -1
- data/lib/active_fedora/fedora.rb +7 -1
- data/lib/active_fedora/file_configurator.rb +2 -1
- data/lib/active_fedora/rake_support.rb +33 -0
- data/lib/active_fedora/relation/finder_methods.rb +2 -1
- data/lib/active_fedora/solr_service.rb +6 -2
- data/lib/active_fedora/version.rb +1 -1
- data/lib/generators/active_fedora/config/fedora/templates/fedora.yml +2 -2
- data/lib/generators/active_fedora/config/solr/templates/solr.yml +2 -2
- data/lib/generators/active_fedora/config/solr/templates/solr/config/solrconfig.xml +0 -3
- data/lib/tasks/active_fedora_dev.rake +12 -11
- data/solr/config/solrconfig.xml +0 -3
- data/spec/fixtures/rails_root/config/fedora.yml +8 -0
- data/spec/integration/date_time_properties_spec.rb +15 -4
- data/spec/unit/config_spec.rb +8 -3
- data/spec/unit/fedora_spec.rb +20 -0
- data/spec/unit/file_configurator_spec.rb +9 -0
- data/spec/unit/finder_methods_spec.rb +34 -0
- data/spec/unit/solr_service_spec.rb +25 -0
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f5ecd9f636c3db3dc10bd6d83a91f7a279b002ad
|
4
|
+
data.tar.gz: 9d479bd9af1691992fc227386e52cd12f93a9f6e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c791a3b110cce3af5e7a290e5f60f3a0ac505e737ef081ce2e8a8295c5d276cdafe3da753ba02e08a08e2781de9e93c74775a7656c5583aba56ff26b28ee7ba
|
7
|
+
data.tar.gz: 0307cb665d50fe8413bc776a2cb3af74a8dfee911c41ce0a9270a4ce93177ccb72cc4827cb34a61ef21fe85d8937e1931062150e0ce30a00cbb0a9f92d03a3b0
|
data/History.txt
CHANGED
@@ -1,3 +1,32 @@
|
|
1
|
+
v9.9.0
|
2
|
+
2016-02-15: Update development configs to use environment variables [Justin
|
3
|
+
Coyne]
|
4
|
+
|
5
|
+
2016-02-15: Pin to a version of rubocop-rspec that doesn't complain about our
|
6
|
+
code [Justin Coyne]
|
7
|
+
|
8
|
+
2016-02-15: Generalize the with_server method [Justin Coyne]
|
9
|
+
|
10
|
+
2016-02-12: Use local configurations for solr [Justin Coyne]
|
11
|
+
|
12
|
+
2016-02-12: Share the test server method with downstream apps [Justin Coyne]
|
13
|
+
|
14
|
+
2016-02-12: Add support for customizable Solr request handlers. [Olli Lyytinen]
|
15
|
+
|
16
|
+
2016-02-10: Adds SSL options to config (closes #985) [David Chandek-Stark]
|
17
|
+
|
18
|
+
2016-02-09: XMLSchema#dateTime requires a colon in the timezone [Justin Coyne]
|
19
|
+
|
20
|
+
2016-02-09: Add a rake task for running spec without rubocop [Justin Coyne]
|
21
|
+
|
22
|
+
2016-02-09: Use the correct flag to fcrepo_wrapper [Justin Coyne]
|
23
|
+
|
24
|
+
2016-02-09: Fixes for rubocop 0.37.1 [Justin Coyne]
|
25
|
+
|
26
|
+
2016-02-08: Don't default facet.limit [Justin Coyne]
|
27
|
+
|
28
|
+
2016-02-05: Start solr and fedora on a random open port [Justin Coyne]
|
29
|
+
|
1
30
|
v9.8.0
|
2
31
|
2016-02-04: Remove unused files [Justin Coyne]
|
3
32
|
|
data/active-fedora.gemspec
CHANGED
@@ -34,7 +34,7 @@ Gem::Specification.new do |s|
|
|
34
34
|
s.add_development_dependency "equivalent-xml"
|
35
35
|
s.add_development_dependency "simplecov", '~> 0.7.1'
|
36
36
|
s.add_development_dependency "rubocop", '~> 0.34'
|
37
|
-
s.add_development_dependency "rubocop-rspec", '~> 1.3'
|
37
|
+
s.add_development_dependency "rubocop-rspec", '~> 1.3.1'
|
38
38
|
|
39
39
|
s.files = `git ls-files`.split("\n")
|
40
40
|
s.test_files = `git ls-files -- {spec}/*`.split("\n")
|
data/config/fedora.yml
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
development:
|
2
2
|
user: fedoraAdmin
|
3
3
|
password: fedoraAdmin
|
4
|
-
url: http://127.0.0.1
|
4
|
+
url: http://127.0.0.1:<%= ENV['FCREPO_DEVELOPMENT_PORT'] || 8984 %>/rest
|
5
5
|
base_path: /dev
|
6
6
|
test:
|
7
7
|
user: fedoraAdmin
|
8
8
|
password: fedoraAdmin
|
9
|
-
url: http://localhost
|
9
|
+
url: http://localhost:<%= ENV['FCREPO_TEST_PORT'] || 8986 %>/rest
|
10
10
|
base_path: /test
|
11
11
|
production:
|
12
12
|
user: fedoraAdmin
|
data/config/solr.yml
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
development:
|
2
2
|
default:
|
3
|
-
url: http://
|
3
|
+
url: http://127.0.0.1:<%= ENV['SOLR_TEST_PORT'] || 8983 %>/solr/hydra-development
|
4
4
|
full_text:
|
5
5
|
url: http://localhost:8983/solr/development
|
6
6
|
test:
|
7
7
|
default:
|
8
|
-
url: http://localhost
|
8
|
+
url: http://localhost:<%= ENV['SOLR_TEST_PORT'] || 8985 %>/solr/hydra-test
|
9
9
|
full_text:
|
10
|
-
url: http://localhost
|
10
|
+
url: http://localhost:<%= ENV['SOLR_TEST_PORT'] || 8985 %>/solr/test
|
11
11
|
production:
|
12
12
|
default:
|
13
13
|
url: http://localhost:8080/solr/production
|
data/lib/active_fedora.rb
CHANGED
@@ -4,11 +4,8 @@ module ActiveFedora::Associations::Builder
|
|
4
4
|
|
5
5
|
def validate_options
|
6
6
|
super
|
7
|
-
|
8
|
-
|
9
|
-
elsif !options[:predicate].is_a?(RDF::URI)
|
10
|
-
raise ArgumentError, "Predicate must be a kind of RDF::URI"
|
11
|
-
end
|
7
|
+
raise "You must specify a predicate for #{name}" unless options[:predicate]
|
8
|
+
raise ArgumentError, "Predicate must be a kind of RDF::URI" unless options[:predicate].is_a?(RDF::URI)
|
12
9
|
end
|
13
10
|
end
|
14
11
|
end
|
@@ -8,11 +8,8 @@ module ActiveFedora::Associations::Builder
|
|
8
8
|
def validate_options
|
9
9
|
super
|
10
10
|
Deprecation.warn HasAndBelongsToMany, ":solr_page_size doesn't do anything anymore and will be removed in ActiveFedora 10" if options.key?(:solr_page_size)
|
11
|
-
|
12
|
-
|
13
|
-
elsif !options[:predicate].is_a?(RDF::URI)
|
14
|
-
raise ArgumentError, "Predicate must be a kind of RDF::URI"
|
15
|
-
end
|
11
|
+
raise "You must specify a predicate for #{name}" unless options[:predicate]
|
12
|
+
raise ArgumentError, "Predicate must be a kind of RDF::URI" unless options[:predicate].is_a?(RDF::URI)
|
16
13
|
end
|
17
14
|
end
|
18
15
|
end
|
data/lib/active_fedora/config.rb
CHANGED
@@ -2,7 +2,7 @@ module ActiveFedora
|
|
2
2
|
class Config
|
3
3
|
attr_reader :credentials
|
4
4
|
def initialize(val)
|
5
|
-
@credentials = val.
|
5
|
+
@credentials = val.deep_symbolize_keys
|
6
6
|
return if @credentials.key?(:url)
|
7
7
|
raise ActiveFedora::ConfigurationError, "Fedora configuration must provide :url."
|
8
8
|
end
|
data/lib/active_fedora/fedora.rb
CHANGED
@@ -21,6 +21,10 @@ module ActiveFedora
|
|
21
21
|
@config[:password]
|
22
22
|
end
|
23
23
|
|
24
|
+
def ssl_options
|
25
|
+
@config[:ssl]
|
26
|
+
end
|
27
|
+
|
24
28
|
def connection
|
25
29
|
# The InboundRelationConnection does provide more data, useful for
|
26
30
|
# things like ldp:IndirectContainers, but it's imposes a significant
|
@@ -58,7 +62,9 @@ module ActiveFedora
|
|
58
62
|
end
|
59
63
|
|
60
64
|
def authorized_connection
|
61
|
-
|
65
|
+
options = {}
|
66
|
+
options[:ssl] = ssl_options if ssl_options
|
67
|
+
connection = Faraday.new(host, options)
|
62
68
|
connection.basic_auth(user, password)
|
63
69
|
connection
|
64
70
|
end
|
@@ -143,7 +143,8 @@ module ActiveFedora
|
|
143
143
|
|
144
144
|
config = solr_yml.symbolize_keys
|
145
145
|
raise "The #{ActiveFedora.environment.to_sym} environment settings were not found in the solr.yml config. If you already have a solr.yml file defined, make sure it defines settings for the #{ActiveFedora.environment.to_sym} environment" unless config[ActiveFedora.environment.to_sym]
|
146
|
-
|
146
|
+
config = config[ActiveFedora.environment.to_sym].symbolize_keys
|
147
|
+
@solr_config = { url: solr_url(config) }.merge(config.slice(:update_path, :select_path))
|
147
148
|
end
|
148
149
|
|
149
150
|
# Given the solr_config that's been loaded for this environment,
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# Starts a fedora server and a solr server on a random port and then
|
2
|
+
# yields the passed block
|
3
|
+
def with_test_server(&block)
|
4
|
+
with_server('test', &block)
|
5
|
+
end
|
6
|
+
|
7
|
+
def with_server(environment, fcrepo_port: nil, solr_port: nil)
|
8
|
+
return yield if ENV["#{environment}_SERVER_STARTED"]
|
9
|
+
|
10
|
+
ENV["#{environment}_SERVER_STARTED"] = 'true'
|
11
|
+
|
12
|
+
# setting port: nil assigns a random port.
|
13
|
+
solr_params = { port: solr_port, verbose: true, managed: true }
|
14
|
+
fcrepo_params = { port: fcrepo_port, verbose: true, managed: true,
|
15
|
+
enable_jms: false, fcrepo_home_dir: "fcrepo4-#{environment}-data" }
|
16
|
+
SolrWrapper.wrap(solr_params) do |solr|
|
17
|
+
ENV["SOLR_#{environment.upcase}_PORT"] = solr.port
|
18
|
+
solr_config_path = File.join('solr', 'config')
|
19
|
+
# Check to see if configs exist in a path relative to the working directory
|
20
|
+
unless Dir.exist?(solr_config_path)
|
21
|
+
$stderr.puts "Solr configuration not found at #{solr_config_path}. Using ActiveFedora defaults"
|
22
|
+
# Otherwise use the configs delivered with ActiveFedora.
|
23
|
+
solr_config_path = File.join(File.expand_path("../..", File.dirname(__FILE__)), "solr", "config")
|
24
|
+
end
|
25
|
+
solr.with_collection(name: "hydra-#{environment}", dir: solr_config_path) do
|
26
|
+
FcrepoWrapper.wrap(fcrepo_params) do |fcrepo|
|
27
|
+
ENV["FCREPO_#{environment.upcase}_PORT"] = fcrepo.port
|
28
|
+
yield
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
ENV["#{environment}_SERVER_STARTED"] = 'false'
|
33
|
+
end
|
@@ -151,11 +151,12 @@ module ActiveFedora
|
|
151
151
|
opts[:sort] = @klass.default_sort_params unless opts[:sort].present?
|
152
152
|
|
153
153
|
batch_size = opts.delete(:batch_size) || 1000
|
154
|
+
select_path = ActiveFedora::SolrService.select_path
|
154
155
|
|
155
156
|
counter = 0
|
156
157
|
loop do
|
157
158
|
counter += 1
|
158
|
-
response = ActiveFedora::SolrService.instance.conn.paginate counter, batch_size,
|
159
|
+
response = ActiveFedora::SolrService.instance.conn.paginate counter, batch_size, select_path, params: opts
|
159
160
|
docs = response["response"]["docs"]
|
160
161
|
yield docs
|
161
162
|
break unless docs.has_next?
|
@@ -23,11 +23,15 @@ module ActiveFedora
|
|
23
23
|
Thread.current[:solr_service] = nil
|
24
24
|
end
|
25
25
|
|
26
|
+
def select_path
|
27
|
+
ActiveFedora.solr_config.fetch(:select_path, 'select')
|
28
|
+
end
|
29
|
+
|
26
30
|
def instance
|
27
31
|
# Register Solr
|
28
32
|
|
29
33
|
unless Thread.current[:solr_service]
|
30
|
-
register(ActiveFedora.solr_config[:url])
|
34
|
+
register(ActiveFedora.solr_config[:url], ActiveFedora.solr_config)
|
31
35
|
end
|
32
36
|
|
33
37
|
raise SolrNotInitialized unless Thread.current[:solr_service]
|
@@ -104,7 +108,7 @@ module ActiveFedora
|
|
104
108
|
def query(query, args = {})
|
105
109
|
raw = args.delete(:raw)
|
106
110
|
args = args.merge(q: query, qt: 'standard')
|
107
|
-
result = SolrService.instance.conn.get(
|
111
|
+
result = SolrService.instance.conn.get(select_path, params: args)
|
108
112
|
return result if raw
|
109
113
|
result['response']['docs']
|
110
114
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
development:
|
2
2
|
user: fedoraAdmin
|
3
3
|
password: fedoraAdmin
|
4
|
-
url: http://127.0.0.1
|
4
|
+
url: http://127.0.0.1:<%= ENV['FCREPO_DEVELOPMENT_PORT'] || 8984 %>/rest
|
5
5
|
base_path: /dev
|
6
6
|
test:
|
7
7
|
user: fedoraAdmin
|
8
8
|
password: fedoraAdmin
|
9
|
-
url: http://
|
9
|
+
url: http://127.0.0.1:<%= ENV['FCREPO_TEST_PORT'] || 8986 %>/rest
|
10
10
|
base_path: /test
|
11
11
|
production:
|
12
12
|
user: fedoraAdmin
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# This is a sample config file that points to a solr server for each environment
|
2
2
|
development:
|
3
|
-
url: http://
|
3
|
+
url: http://127.0.0.1:<%= ENV['SOLR_TEST_PORT'] || 8983 %>/solr/hydra-development
|
4
4
|
test:
|
5
|
-
url:
|
5
|
+
url: http://127.0.0.1:<%= ENV['SOLR_TEST_PORT'] || 8985 %>/solr/hydra-test
|
6
6
|
production:
|
7
7
|
url: http://your.production.server:8080/bl_solr/core0
|
@@ -119,9 +119,6 @@
|
|
119
119
|
|
120
120
|
<str name="facet">true</str>
|
121
121
|
<str name="facet.mincount">1</str>
|
122
|
-
<str name="facet.limit">10</str>
|
123
|
-
<str name="facet.field">active_fedora_model_ssi</str>
|
124
|
-
<str name="facet.field">subject_sim</str>
|
125
122
|
|
126
123
|
<str name="spellcheck">true</str>
|
127
124
|
<str name="spellcheck.dictionary">default</str>
|
@@ -2,6 +2,7 @@ APP_ROOT = File.expand_path("#{File.dirname(__FILE__)}/../../")
|
|
2
2
|
|
3
3
|
require 'solr_wrapper'
|
4
4
|
require 'fcrepo_wrapper'
|
5
|
+
require 'active_fedora/rake_support'
|
5
6
|
|
6
7
|
namespace :active_fedora do
|
7
8
|
# Use yard to build docs
|
@@ -51,24 +52,24 @@ namespace :active_fedora do
|
|
51
52
|
desc "CI build"
|
52
53
|
task :ci do
|
53
54
|
ENV['environment'] = "test"
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
SolrWrapper.wrap(solr_params) do |solr|
|
58
|
-
solr.with_collection(name: 'hydra-test', dir: File.join(File.expand_path("../..", File.dirname(__FILE__)), "solr", "config")) do
|
59
|
-
FcrepoWrapper.wrap(fcrepo_params) do
|
60
|
-
Rake::Task['active_fedora:coverage'].invoke
|
61
|
-
end
|
62
|
-
end
|
55
|
+
with_test_server do
|
56
|
+
Rake::Task['active_fedora:rubocop'].invoke unless ENV['NO_RUBOCOP']
|
57
|
+
Rake::Task['active_fedora:coverage'].invoke
|
63
58
|
end
|
64
59
|
end
|
65
60
|
|
66
61
|
desc "Execute specs with coverage"
|
67
|
-
task coverage
|
62
|
+
task :coverage do
|
68
63
|
# Put spec opts in a file named .rspec in root
|
69
64
|
ruby_engine = defined?(RUBY_ENGINE) ? RUBY_ENGINE : "ruby"
|
70
65
|
ENV['COVERAGE'] = 'true' unless ruby_engine == 'jruby'
|
71
|
-
Rake::Task["active_fedora:
|
66
|
+
Rake::Task["active_fedora:spec"].invoke
|
72
67
|
end
|
73
68
|
|
69
|
+
desc "Execute specs with coverage"
|
70
|
+
task :spec do
|
71
|
+
with_test_server do
|
72
|
+
Rake::Task["active_fedora:rspec"].invoke
|
73
|
+
end
|
74
|
+
end
|
74
75
|
end
|
data/solr/config/solrconfig.xml
CHANGED
@@ -119,9 +119,6 @@
|
|
119
119
|
|
120
120
|
<str name="facet">true</str>
|
121
121
|
<str name="facet.mincount">1</str>
|
122
|
-
<str name="facet.limit">10</str>
|
123
|
-
<str name="facet.field">active_fedora_model_ssi</str>
|
124
|
-
<str name="facet.field">subject_sim</str>
|
125
122
|
|
126
123
|
<str name="spellcheck">true</str>
|
127
124
|
<str name="spellcheck.dictionary">default</str>
|
@@ -22,17 +22,28 @@ describe ActiveFedora::Base do
|
|
22
22
|
|
23
23
|
let(:date) { DateTime.parse("2015-10-22T10:20:03.653+01:00") }
|
24
24
|
let(:date2) { DateTime.parse("2015-10-22T15:34:20.323-11:00") }
|
25
|
-
subject { Foo.create(date: [date], single_date: date2, empty_date: '', integer: 1).reload }
|
26
25
|
|
27
26
|
describe "saving and loading in Fedora" do
|
27
|
+
let(:object) { Foo.create!(date: [date], single_date: date2, empty_date: '', integer: 1).reload }
|
28
28
|
it "loads the correct time" do
|
29
|
-
expect(
|
30
|
-
expect(
|
29
|
+
expect(object.date.first).to eql date
|
30
|
+
expect(object.single_date).to eql date2
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe 'serializing' do
|
35
|
+
let(:object) { Foo.new(date: [date]) }
|
36
|
+
let(:triple) { object.resource.query(predicate: ::RDF::Vocab::DC.date).to_a.first }
|
37
|
+
subject { triple.to_s }
|
38
|
+
it 'time zone must have semicolin to be a cannonical XMLSchema#dateTime' do
|
39
|
+
expect(subject).to match(/\+01:00/)
|
31
40
|
end
|
32
41
|
end
|
33
42
|
|
34
43
|
describe "saving and loading in Solr" do
|
35
|
-
let(:
|
44
|
+
let(:object) { Foo.create!(date: [date], single_date: date2, empty_date: '', integer: 1) }
|
45
|
+
|
46
|
+
let(:subject_solr) { object.class.load_instance_from_solr(object.id) }
|
36
47
|
it "uses DateTime objects" do
|
37
48
|
expect(subject_solr.date.first).to be_a DateTime
|
38
49
|
expect(subject_solr.single_date).to be_a DateTime
|
data/spec/unit/config_spec.rb
CHANGED
@@ -2,12 +2,17 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe ActiveFedora::Config do
|
4
4
|
context "with a single fedora instance" do
|
5
|
-
let(:yaml) { Psych.load(File.read('spec/fixtures/rails_root/config/fedora.yml'))
|
6
|
-
let(:
|
5
|
+
let(:yaml) { Psych.load(File.read('spec/fixtures/rails_root/config/fedora.yml')) }
|
6
|
+
let(:section) { 'test' }
|
7
|
+
let(:conf) { described_class.new(yaml[section]) }
|
7
8
|
|
8
9
|
describe "#credentials" do
|
9
10
|
subject { conf.credentials }
|
10
|
-
it {
|
11
|
+
it { is_expected.to eq(url: 'http://testhost.com:8983/fedora', user: 'fedoraAdmin', password: 'fedoraAdmin') }
|
12
|
+
describe "with SSL options" do
|
13
|
+
let(:section) { 'test_ssl' }
|
14
|
+
its([:ssl]) { is_expected.to eq(verify: false, ca_path: '/path/to/certs') }
|
15
|
+
end
|
11
16
|
end
|
12
17
|
end
|
13
18
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe ActiveFedora::Fedora do
|
4
|
+
subject { 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
|
+
}
|
14
|
+
specify {
|
15
|
+
expect(Faraday).to receive(:new).with("https://example.com", ssl: { ca_path: '/path/to/certs' }).twice.and_call_original
|
16
|
+
subject.authorized_connection
|
17
|
+
}
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -230,6 +230,15 @@ describe ActiveFedora::FileConfigurator do
|
|
230
230
|
expect(subject.load_solr_config).to eq(url: "http://mysolr:8081")
|
231
231
|
expect(subject.solr_config).to eq(url: "http://mysolr:8081")
|
232
232
|
end
|
233
|
+
|
234
|
+
it "includes update_path and select_path in solr_config" do
|
235
|
+
allow(subject).to receive(:load_solrizer_config)
|
236
|
+
expect(subject).to receive(:config_path).with(:solr).and_return("/path/to/solr.yml")
|
237
|
+
expect(subject).to receive(:load_fedora_config)
|
238
|
+
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")
|
239
|
+
expect(subject.solr_config[:update_path]).to eq('update_test')
|
240
|
+
expect(subject.solr_config[:select_path]).to eq('select_test')
|
241
|
+
end
|
233
242
|
end
|
234
243
|
|
235
244
|
describe "load_configs" do
|
@@ -6,6 +6,14 @@ describe ActiveFedora::FinderMethods do
|
|
6
6
|
def self.delegated_attributes
|
7
7
|
{}
|
8
8
|
end
|
9
|
+
|
10
|
+
def self.solr_query_handler
|
11
|
+
'standard'
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.default_sort_params
|
15
|
+
["system_create_dtsi asc"]
|
16
|
+
end
|
9
17
|
end
|
10
18
|
end
|
11
19
|
|
@@ -47,4 +55,30 @@ describe ActiveFedora::FinderMethods do
|
|
47
55
|
"_query_:\"{!raw f=library_id}four\"" }
|
48
56
|
end
|
49
57
|
end
|
58
|
+
|
59
|
+
describe "#find_in_batches" do
|
60
|
+
let(:docs) { double('docs', has_next?: false) }
|
61
|
+
let(:select_handler) { 'select' }
|
62
|
+
let(:connection) { double('conn') }
|
63
|
+
before do
|
64
|
+
expect(finder).to receive(:create_query).with('age_t' => '21').and_return('dummy query')
|
65
|
+
allow(ActiveFedora::SolrService.instance).to receive(:conn).and_return(connection)
|
66
|
+
allow(ActiveFedora::SolrService).to receive(:select_path).and_return(select_handler)
|
67
|
+
expect(connection).to receive(:paginate) \
|
68
|
+
.with(1, 1000, select_handler, params: hash_including(other_opt: 'test')) \
|
69
|
+
.and_return('response' => { 'docs' => docs })
|
70
|
+
end
|
71
|
+
it "yields the docs" do
|
72
|
+
expect { |b|
|
73
|
+
finder.find_in_batches({ 'age_t' => '21' }, { other_opt: 'test' }, &b)
|
74
|
+
}.to yield_with_args(docs)
|
75
|
+
end
|
76
|
+
|
77
|
+
context "with custom select handler" do
|
78
|
+
let(:select_handler) { 'select_test' }
|
79
|
+
it "uses the custom select handler" do
|
80
|
+
finder.find_in_batches({ 'age_t' => '21' }, other_opt: 'test') do end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
50
84
|
end
|
@@ -33,6 +33,13 @@ describe ActiveFedora::SolrService do
|
|
33
33
|
expect(described_class).to receive(:register)
|
34
34
|
expect(proc { described_class.instance }).to raise_error(ActiveFedora::SolrNotInitialized)
|
35
35
|
end
|
36
|
+
it "passes on solr_config when initializing the service" do
|
37
|
+
allow(RSolr).to receive(:connect)
|
38
|
+
expect(Thread.current[:solr_service]).to be_nil
|
39
|
+
allow(ActiveFedora).to receive(:solr_config).and_return(url: 'http://fubar', update_path: 'update_test')
|
40
|
+
expect(described_class).to receive(:register).with('http://fubar', hash_including(update_path: 'update_test')).and_call_original
|
41
|
+
described_class.instance
|
42
|
+
end
|
36
43
|
|
37
44
|
describe '#construct_query_for_pids' do
|
38
45
|
it "generates a useable solr query from an array of Fedora ids" do
|
@@ -49,6 +56,14 @@ describe ActiveFedora::SolrService do
|
|
49
56
|
allow(described_class).to receive(:instance).and_return(double("instance", conn: mock_conn))
|
50
57
|
expect(described_class.query('querytext', raw: true)).to eq stub_result
|
51
58
|
end
|
59
|
+
it "uses select_path" do
|
60
|
+
mock_conn = double("Connection")
|
61
|
+
stub_result = double("Result")
|
62
|
+
expect(mock_conn).to receive(:get).with('select_test', params: { q: 'querytext', qt: 'standard' }).and_return(stub_result)
|
63
|
+
expect(described_class).to receive(:select_path).and_return('select_test')
|
64
|
+
allow(described_class).to receive(:instance).and_return(double("instance", conn: mock_conn))
|
65
|
+
expect(described_class.query('querytext', raw: true)).to eq stub_result
|
66
|
+
end
|
52
67
|
end
|
53
68
|
describe ".count" do
|
54
69
|
it "returns a count of matching records" do
|
@@ -66,6 +81,16 @@ describe ActiveFedora::SolrService do
|
|
66
81
|
expect(described_class.count('querytext', fq: 'filter', rows: 10)).to eq 7
|
67
82
|
end
|
68
83
|
end
|
84
|
+
describe ".select_path" do
|
85
|
+
it "gets :select_path from solr_config" do
|
86
|
+
expect(ActiveFedora).to receive(:solr_config).and_return(select_path: 'select_test')
|
87
|
+
expect(described_class.select_path).to eq 'select_test'
|
88
|
+
end
|
89
|
+
it "uses 'select' as default" do
|
90
|
+
expect(ActiveFedora).to receive(:solr_config).and_return({})
|
91
|
+
expect(described_class.select_path).to eq 'select'
|
92
|
+
end
|
93
|
+
end
|
69
94
|
|
70
95
|
describe ".add" do
|
71
96
|
it "calls solr" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active-fedora
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 9.
|
4
|
+
version: 9.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Zumwalt
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-02-
|
13
|
+
date: 2016-02-15 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rsolr
|
@@ -284,14 +284,14 @@ dependencies:
|
|
284
284
|
requirements:
|
285
285
|
- - "~>"
|
286
286
|
- !ruby/object:Gem::Version
|
287
|
-
version:
|
287
|
+
version: 1.3.1
|
288
288
|
type: :development
|
289
289
|
prerelease: false
|
290
290
|
version_requirements: !ruby/object:Gem::Requirement
|
291
291
|
requirements:
|
292
292
|
- - "~>"
|
293
293
|
- !ruby/object:Gem::Version
|
294
|
-
version:
|
294
|
+
version: 1.3.1
|
295
295
|
description: ActiveFedora provides for creating and managing objects in the Fedora
|
296
296
|
Repository Architecture.
|
297
297
|
email:
|
@@ -431,6 +431,7 @@ files:
|
|
431
431
|
- lib/active_fedora/query_result_builder.rb
|
432
432
|
- lib/active_fedora/querying.rb
|
433
433
|
- lib/active_fedora/railtie.rb
|
434
|
+
- lib/active_fedora/rake_support.rb
|
434
435
|
- lib/active_fedora/rdf.rb
|
435
436
|
- lib/active_fedora/rdf/datastream_indexing.rb
|
436
437
|
- lib/active_fedora/rdf/fcrepo.rb
|
@@ -610,6 +611,7 @@ files:
|
|
610
611
|
- spec/unit/core/fedora_id_translator_spec.rb
|
611
612
|
- spec/unit/core/fedora_uri_translator_spec.rb
|
612
613
|
- spec/unit/core_spec.rb
|
614
|
+
- spec/unit/fedora_spec.rb
|
613
615
|
- spec/unit/file_configurator_spec.rb
|
614
616
|
- spec/unit/file_path_builder_spec.rb
|
615
617
|
- spec/unit/file_spec.rb
|