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.
- checksums.yaml +4 -4
- data/.github_changelog_generator +2 -0
- data/CHANGELOG.md +3362 -0
- data/CONTRIBUTING.md +23 -1
- data/README.md +4 -0
- data/active-fedora.gemspec +14 -13
- data/lib/active_fedora/version.rb +1 -1
- metadata +104 -206
- data/spec/config_helper.rb +0 -17
- data/spec/fixtures/dino.jpg +0 -0
- data/spec/fixtures/dino_jpg_no_file_ext +0 -0
- data/spec/fixtures/minivan.jpg +0 -0
- data/spec/fixtures/rails_root/config/fake_fedora.yml +0 -7
- data/spec/fixtures/rails_root/config/fedora.yml +0 -12
- data/spec/fixtures/rails_root/config/solr.yml +0 -15
- data/spec/fixtures/rails_root/config/solr_mappings.yml +0 -16
- data/spec/fixtures/rails_root/config/solr_mappings_af_0.1.yml +0 -9
- data/spec/fixtures/rails_root/config/solr_mappings_bl_2.4.yml +0 -17
- data/spec/integration/associations/rdf_spec.rb +0 -61
- data/spec/integration/associations_spec.rb +0 -680
- data/spec/integration/attached_files_spec.rb +0 -146
- data/spec/integration/attributes_spec.rb +0 -73
- data/spec/integration/autosave_association_spec.rb +0 -24
- data/spec/integration/base_spec.rb +0 -184
- data/spec/integration/basic_contains_association_spec.rb +0 -121
- data/spec/integration/belongs_to_association_spec.rb +0 -260
- data/spec/integration/caching_spec.rb +0 -59
- data/spec/integration/clean_connection_spec.rb +0 -21
- data/spec/integration/collection_association_spec.rb +0 -166
- data/spec/integration/date_time_properties_spec.rb +0 -41
- data/spec/integration/delete_all_spec.rb +0 -64
- data/spec/integration/direct_container_spec.rb +0 -250
- data/spec/integration/directly_contains_one_association_spec.rb +0 -96
- data/spec/integration/eradicate_spec.rb +0 -52
- data/spec/integration/fedora_solr_sync_spec.rb +0 -30
- data/spec/integration/file_fixity_spec.rb +0 -36
- data/spec/integration/file_spec.rb +0 -221
- data/spec/integration/generators/fedora_generator_spec.rb +0 -26
- data/spec/integration/generators/solr_generator_spec.rb +0 -23
- data/spec/integration/gone_spec.rb +0 -41
- data/spec/integration/has_and_belongs_to_many_associations_spec.rb +0 -414
- data/spec/integration/has_many_associations_spec.rb +0 -436
- data/spec/integration/has_subresource_spec.rb +0 -34
- data/spec/integration/indexing/descendant_fetcher_spec.rb +0 -64
- data/spec/integration/indexing_spec.rb +0 -110
- data/spec/integration/indirect_container_spec.rb +0 -290
- data/spec/integration/json_serialization_spec.rb +0 -32
- data/spec/integration/marshal_spec.rb +0 -39
- data/spec/integration/nested_attribute_spec.rb +0 -177
- data/spec/integration/nested_hash_resources_spec.rb +0 -43
- data/spec/integration/persistence_spec.rb +0 -37
- data/spec/integration/query_result_builder_spec.rb +0 -37
- data/spec/integration/rdf_nested_attributes_spec.rb +0 -85
- data/spec/integration/relation_delegation_spec.rb +0 -52
- data/spec/integration/relation_spec.rb +0 -117
- data/spec/integration/scoped_query_spec.rb +0 -134
- data/spec/integration/scoping_spec.rb +0 -48
- data/spec/integration/solr_hit_spec.rb +0 -32
- data/spec/integration/versionable_spec.rb +0 -256
- data/spec/integration/with_metadata_spec.rb +0 -111
- data/spec/lib/active_fedora/null_logger_spec.rb +0 -10
- data/spec/rcov.opts +0 -2
- data/spec/spec.opts +0 -5
- data/spec/spec_helper.rb +0 -106
- data/spec/support/an_active_model.rb +0 -29
- data/spec/unit/active_fedora/indexing/inserter_spec.rb +0 -35
- data/spec/unit/active_fedora_spec.rb +0 -118
- data/spec/unit/aggregation/list_source_spec.rb +0 -134
- data/spec/unit/aggregation/ordered_reader_spec.rb +0 -43
- data/spec/unit/association_hash_spec.rb +0 -64
- data/spec/unit/attached_files_spec.rb +0 -218
- data/spec/unit/attributes_spec.rb +0 -146
- data/spec/unit/base_active_model_spec.rb +0 -28
- data/spec/unit/base_cma_spec.rb +0 -15
- data/spec/unit/base_extra_spec.rb +0 -33
- data/spec/unit/base_spec.rb +0 -328
- data/spec/unit/builder/has_and_belongs_to_many_spec.rb +0 -8
- data/spec/unit/callback_spec.rb +0 -65
- data/spec/unit/change_set_spec.rb +0 -60
- data/spec/unit/checksum_spec.rb +0 -25
- data/spec/unit/code_configurator_spec.rb +0 -41
- data/spec/unit/collection_proxy_spec.rb +0 -25
- data/spec/unit/config_spec.rb +0 -18
- data/spec/unit/core/fedora_id_translator_spec.rb +0 -29
- data/spec/unit/core/fedora_uri_translator_spec.rb +0 -19
- data/spec/unit/core/logger_spec.rb +0 -18
- data/spec/unit/core_spec.rb +0 -242
- data/spec/unit/default_model_mapper_spec.rb +0 -39
- data/spec/unit/fedora_spec.rb +0 -31
- data/spec/unit/file/streaming_spec.rb +0 -33
- data/spec/unit/file_configurator_spec.rb +0 -295
- data/spec/unit/file_io_spec.rb +0 -137
- data/spec/unit/file_path_builder_spec.rb +0 -18
- data/spec/unit/file_spec.rb +0 -489
- data/spec/unit/files_hash_spec.rb +0 -52
- data/spec/unit/filter_spec.rb +0 -133
- data/spec/unit/finder_methods_spec.rb +0 -154
- data/spec/unit/fixity_service_spec.rb +0 -128
- data/spec/unit/forbidden_attributes_protection_spec.rb +0 -50
- data/spec/unit/has_and_belongs_to_many_association_spec.rb +0 -125
- data/spec/unit/has_many_association_spec.rb +0 -131
- data/spec/unit/indexers/global_indexer_spec.rb +0 -41
- data/spec/unit/indexing/map/index_object_spec.rb +0 -25
- data/spec/unit/indexing/map_spec.rb +0 -27
- data/spec/unit/indexing_service_spec.rb +0 -28
- data/spec/unit/indexing_spec.rb +0 -86
- data/spec/unit/inheritance_spec.rb +0 -60
- data/spec/unit/ldp_resource_spec.rb +0 -15
- data/spec/unit/loadable_from_json_spec.rb +0 -40
- data/spec/unit/logger_spec.rb +0 -19
- data/spec/unit/model_classifier_spec.rb +0 -49
- data/spec/unit/ordered_spec.rb +0 -367
- data/spec/unit/orders/list_node_spec.rb +0 -151
- data/spec/unit/orders/ordered_list_spec.rb +0 -335
- data/spec/unit/orders/reflection_spec.rb +0 -22
- data/spec/unit/pathing_spec.rb +0 -35
- data/spec/unit/persistence_spec.rb +0 -115
- data/spec/unit/property_predicate_spec.rb +0 -35
- data/spec/unit/property_spec.rb +0 -25
- data/spec/unit/query_result_builder_spec.rb +0 -31
- data/spec/unit/query_spec.rb +0 -307
- data/spec/unit/querying_spec.rb +0 -24
- data/spec/unit/rdf/indexing_service_spec.rb +0 -114
- data/spec/unit/rdf_vocab_spec.rb +0 -30
- data/spec/unit/readonly_spec.rb +0 -24
- data/spec/unit/reflection_spec.rb +0 -42
- data/spec/unit/rspec_matchers/belong_to_associated_active_fedora_object_matcher_spec.rb +0 -37
- data/spec/unit/rspec_matchers/have_many_associated_active_fedora_objects_matcher_spec.rb +0 -38
- data/spec/unit/rspec_matchers/have_predicate_matcher_spec.rb +0 -38
- data/spec/unit/schema_indexing_strategy_spec.rb +0 -68
- data/spec/unit/scoping_spec.rb +0 -67
- data/spec/unit/serializers_spec.rb +0 -19
- data/spec/unit/solr_config_options_spec.rb +0 -57
- data/spec/unit/solr_hit_spec.rb +0 -57
- data/spec/unit/solr_query_builder_spec.rb +0 -18
- data/spec/unit/solr_service_spec.rb +0 -165
- data/spec/unit/sparql_insert_spec.rb +0 -31
- data/spec/unit/validations_spec.rb +0 -92
- data/spec/unit/with_metadata/default_metadata_class_factory_spec.rb +0 -29
- data/spec/unit/with_metadata/metadata_node_spec.rb +0 -69
@@ -1,111 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe ActiveFedora::WithMetadata do
|
4
|
-
before do
|
5
|
-
class AdditionalSchema < ActiveTriples::Schema
|
6
|
-
property :new_property, predicate: ::RDF::URI("http://my.new.property/")
|
7
|
-
end
|
8
|
-
|
9
|
-
ActiveFedora::WithMetadata::DefaultMetadataClassFactory.file_metadata_schemas << AdditionalSchema
|
10
|
-
|
11
|
-
class SampleFile < ActiveFedora::File
|
12
|
-
include ActiveFedora::WithMetadata
|
13
|
-
|
14
|
-
metadata do
|
15
|
-
property :title, predicate: ::RDF::Vocab::DC.title
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
after do
|
21
|
-
Object.send(:remove_const, :SampleFile)
|
22
|
-
Object.send(:remove_const, :AdditionalSchema)
|
23
|
-
ActiveFedora::WithMetadata::DefaultMetadataClassFactory.file_metadata_schemas = [ActiveFedora::WithMetadata::DefaultSchema]
|
24
|
-
end
|
25
|
-
|
26
|
-
let(:file) { SampleFile.new }
|
27
|
-
|
28
|
-
describe "properties" do
|
29
|
-
before do
|
30
|
-
file.title = ['one', 'two']
|
31
|
-
end
|
32
|
-
it "sets and retrieve properties" do
|
33
|
-
expect(file.title).to contain_exactly 'one', 'two'
|
34
|
-
end
|
35
|
-
|
36
|
-
it "tracks changes" do
|
37
|
-
expect(file.title_changed?).to be true
|
38
|
-
end
|
39
|
-
|
40
|
-
context "with defaults" do
|
41
|
-
subject { file }
|
42
|
-
it { is_expected.to respond_to(:label) }
|
43
|
-
it { is_expected.to respond_to(:file_name) }
|
44
|
-
it { is_expected.to respond_to(:file_size) }
|
45
|
-
it { is_expected.to respond_to(:date_created) }
|
46
|
-
it { is_expected.to respond_to(:mime_type) }
|
47
|
-
it { is_expected.to respond_to(:date_modified) }
|
48
|
-
it { is_expected.to respond_to(:byte_order) }
|
49
|
-
it { is_expected.to respond_to(:file_hash) }
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
describe "#save" do
|
54
|
-
before do
|
55
|
-
file.title = ["foo"]
|
56
|
-
end
|
57
|
-
|
58
|
-
context "if the object saves (because it has content)" do
|
59
|
-
before do
|
60
|
-
file.content = "Hey"
|
61
|
-
file.save
|
62
|
-
end
|
63
|
-
|
64
|
-
let(:reloaded) { SampleFile.new(file.uri) }
|
65
|
-
|
66
|
-
it "saves the metadata too" do
|
67
|
-
expect(reloaded.title).to eq ['foo']
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
context "if the object is a new_record (didn't save)" do
|
72
|
-
it "doesn't save the metadata" do
|
73
|
-
expect(file.metadata_node).not_to receive(:save)
|
74
|
-
file.save
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
context "when RDF.type is set" do
|
80
|
-
let(:book) { RDF::URI.new("http://example.com/ns/Book") }
|
81
|
-
|
82
|
-
before do
|
83
|
-
class SampleBook < ActiveFedora::File
|
84
|
-
include ActiveFedora::WithMetadata
|
85
|
-
|
86
|
-
metadata do
|
87
|
-
configure type: RDF::URI.new("http://example.com/ns/Book")
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
file.content = 'foo'
|
92
|
-
file.save
|
93
|
-
end
|
94
|
-
|
95
|
-
after do
|
96
|
-
Object.send(:remove_const, :SampleBook)
|
97
|
-
end
|
98
|
-
|
99
|
-
let(:file) { SampleBook.new }
|
100
|
-
let(:reloaded_file) { SampleBook.new(file.uri) }
|
101
|
-
|
102
|
-
it "persists the configured type" do
|
103
|
-
expect(reloaded_file.metadata_node.query(predicate: ::RDF.type).map(&:object)).to include book
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
context "when using additional schema" do
|
108
|
-
subject { SampleFile.new }
|
109
|
-
it { is_expected.to respond_to(:new_property) }
|
110
|
-
end
|
111
|
-
end
|
@@ -1,10 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
RSpec.describe ActiveFedora::NullLogger do
|
4
|
-
[:debug?, :info?, :warn?, :error?, :fatal?].each do |method_name|
|
5
|
-
describe "##{method_name}" do
|
6
|
-
subject { described_class.new.public_send(method_name) }
|
7
|
-
it { is_expected.to be_falsey }
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
data/spec/rcov.opts
DELETED
data/spec/spec.opts
DELETED
data/spec/spec_helper.rb
DELETED
@@ -1,106 +0,0 @@
|
|
1
|
-
ENV["environment"] ||= "test"
|
2
|
-
|
3
|
-
require "bundler/setup"
|
4
|
-
require 'simplecov'
|
5
|
-
require 'coveralls'
|
6
|
-
|
7
|
-
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(
|
8
|
-
[
|
9
|
-
SimpleCov::Formatter::HTMLFormatter,
|
10
|
-
Coveralls::SimpleCov::Formatter
|
11
|
-
]
|
12
|
-
)
|
13
|
-
|
14
|
-
SimpleCov.start "rails" do
|
15
|
-
add_filter "/spec/"
|
16
|
-
end
|
17
|
-
|
18
|
-
require 'active-fedora'
|
19
|
-
require 'rspec'
|
20
|
-
require 'rspec/its'
|
21
|
-
require 'equivalent-xml/rspec_matchers'
|
22
|
-
require 'logger'
|
23
|
-
require 'pry' unless ENV['CI']
|
24
|
-
|
25
|
-
ActiveFedora::Base.logger = Logger.new(STDERR)
|
26
|
-
ActiveFedora::Base.logger.level = Logger::WARN
|
27
|
-
|
28
|
-
Dir[File.expand_path("../support/**/*.rb", __FILE__)].each { |f| require f }
|
29
|
-
|
30
|
-
$VERBOSE = nil
|
31
|
-
|
32
|
-
# This loads the Fedora and Solr config info from /config/fedora.yml
|
33
|
-
# You can load it from a different location by passing a file path as an argument.
|
34
|
-
def restore_spec_configuration
|
35
|
-
ActiveFedora.init(fedora_config_path: File.join(File.dirname(__FILE__), "..", "config", "fedora.yml"))
|
36
|
-
end
|
37
|
-
restore_spec_configuration
|
38
|
-
|
39
|
-
require 'active_fedora/cleaner'
|
40
|
-
RSpec.configure do |config|
|
41
|
-
# Stub out test stuff.
|
42
|
-
config.before(:each) do
|
43
|
-
begin
|
44
|
-
ActiveFedora::Cleaner.clean!
|
45
|
-
rescue Faraday::ConnectionFailed, RSolr::Error::ConnectionRefused => e
|
46
|
-
$stderr.puts e.message
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
# rspec-expectations config goes here. You can use an alternate
|
51
|
-
# assertion/expectation library such as wrong or the stdlib/minitest
|
52
|
-
# assertions if you prefer.
|
53
|
-
config.expect_with :rspec do |expectations|
|
54
|
-
# This option will default to `true` in RSpec 4. It makes the `description`
|
55
|
-
# and `failure_message` of custom matchers include text for helper methods
|
56
|
-
# defined using `chain`, e.g.:
|
57
|
-
# be_bigger_than(2).and_smaller_than(4).description
|
58
|
-
# # => "be bigger than 2 and smaller than 4"
|
59
|
-
# ...rather than:
|
60
|
-
# # => "be bigger than 2"
|
61
|
-
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
62
|
-
end
|
63
|
-
|
64
|
-
config.default_formatter = 'doc' if config.files_to_run.one?
|
65
|
-
|
66
|
-
config.shared_context_metadata_behavior = :apply_to_host_groups
|
67
|
-
|
68
|
-
# This allows you to limit a spec run to individual examples or groups
|
69
|
-
# you care about by tagging them with `:focus` metadata. When nothing
|
70
|
-
# is tagged with `:focus`, all examples get run. RSpec also provides
|
71
|
-
# aliases for `it`, `describe`, and `context` that include `:focus`
|
72
|
-
# metadata: `fit`, `fdescribe` and `fcontext`, respectively.
|
73
|
-
config.filter_run_when_matching :focus
|
74
|
-
|
75
|
-
config.example_status_persistence_file_path = 'spec/examples.txt'
|
76
|
-
# Many RSpec users commonly either run the entire suite or an individual
|
77
|
-
# file, and it's useful to allow more verbose output when running an
|
78
|
-
# individual spec file.
|
79
|
-
if config.files_to_run.one?
|
80
|
-
# Use the documentation formatter for detailed output,
|
81
|
-
# unless a formatter has already been configured
|
82
|
-
# (e.g. via a command-line flag).
|
83
|
-
config.default_formatter = 'doc'
|
84
|
-
end
|
85
|
-
|
86
|
-
# Print the 10 slowest examples and example groups at the
|
87
|
-
# end of the spec run, to help surface which specs are running
|
88
|
-
# particularly slow.
|
89
|
-
config.profile_examples = 10
|
90
|
-
|
91
|
-
# Run specs in random order to surface order dependencies. If you find an
|
92
|
-
# order dependency and want to debug it, you can fix the order by providing
|
93
|
-
# the seed, which is printed after each run.
|
94
|
-
# --seed 1234
|
95
|
-
config.order = :random
|
96
|
-
|
97
|
-
# Seed global randomization in this process using the `--seed` CLI option.
|
98
|
-
# Setting this allows you to use `--seed` to deterministically reproduce
|
99
|
-
# test failures related to randomization by passing the same `--seed` value
|
100
|
-
# as the one that triggered the failure.
|
101
|
-
Kernel.srand config.seed
|
102
|
-
end
|
103
|
-
|
104
|
-
def fixture(file)
|
105
|
-
File.open(File.join(File.dirname(__FILE__), 'fixtures', file), 'rb')
|
106
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
shared_examples_for "An ActiveModel" do
|
2
|
-
def assert(test, *_args)
|
3
|
-
expect(test).to be true
|
4
|
-
end
|
5
|
-
|
6
|
-
def assert_kind_of(klass, inspected_object)
|
7
|
-
expect(inspected_object).to be_kind_of(klass)
|
8
|
-
end
|
9
|
-
|
10
|
-
def assert_equal(the_other, one)
|
11
|
-
expect(one).to eq the_other
|
12
|
-
end
|
13
|
-
|
14
|
-
def assert_respond_to(obj, meth, _msg = nil)
|
15
|
-
expect(obj).to respond_to meth
|
16
|
-
end
|
17
|
-
|
18
|
-
include ActiveModel::Lint::Tests
|
19
|
-
|
20
|
-
ActiveModel::Lint::Tests.public_instance_methods.map(&:to_s).grep(/^test/).each do |m|
|
21
|
-
example m.tr('_', ' ') do
|
22
|
-
send m
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def model
|
27
|
-
subject
|
28
|
-
end
|
29
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
RSpec.describe ActiveFedora::Indexing::Inserter do
|
4
|
-
let(:solr_doc) { {} }
|
5
|
-
|
6
|
-
it "handles many field types" do
|
7
|
-
described_class.create_and_insert_terms('my_name', 'value', [:displayable, :searchable, :sortable], solr_doc)
|
8
|
-
expect(solr_doc).to eq('my_name_ssm' => ['value'], 'my_name_si' => 'value', 'my_name_teim' => ['value'])
|
9
|
-
end
|
10
|
-
|
11
|
-
it "handles dates that are searchable" do
|
12
|
-
described_class.create_and_insert_terms('my_name', Date.parse('2013-01-10'), [:stored_searchable], solr_doc)
|
13
|
-
expect(solr_doc).to eq('my_name_dtsim' => ['2013-01-10T00:00:00Z'])
|
14
|
-
end
|
15
|
-
|
16
|
-
it "handles dates that are stored_sortable" do
|
17
|
-
described_class.create_and_insert_terms('my_name', Date.parse('2013-01-10'), [:stored_sortable], solr_doc)
|
18
|
-
expect(solr_doc).to eq('my_name_dtsi' => '2013-01-10T00:00:00Z')
|
19
|
-
end
|
20
|
-
|
21
|
-
it "handles dates that are displayable" do
|
22
|
-
described_class.create_and_insert_terms('my_name', Date.parse('2013-01-10'), [:displayable], solr_doc)
|
23
|
-
expect(solr_doc).to eq('my_name_ssm' => ['2013-01-10'])
|
24
|
-
end
|
25
|
-
|
26
|
-
it "handles dates that are sortable" do
|
27
|
-
described_class.create_and_insert_terms('my_name', Date.parse('2013-01-10'), [:sortable], solr_doc)
|
28
|
-
expect(solr_doc).to eq('my_name_dti' => '2013-01-10T00:00:00Z')
|
29
|
-
end
|
30
|
-
|
31
|
-
it "handles floating point integers" do
|
32
|
-
described_class.create_and_insert_terms('my_number', (6.022140857*10**23).to_f, [:displayable, :searchable], solr_doc)
|
33
|
-
expect(solr_doc).to eq('my_number_ssm' => ['6.0221408569999995e+23'], 'my_number_fim' => ['6.0221408569999995e+23'])
|
34
|
-
end
|
35
|
-
end
|
@@ -1,118 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'config_helper'
|
3
|
-
|
4
|
-
# For testing Module-level methods like ActiveFedora.init
|
5
|
-
|
6
|
-
describe ActiveFedora do
|
7
|
-
before do
|
8
|
-
restore_spec_configuration
|
9
|
-
end
|
10
|
-
|
11
|
-
after :all do
|
12
|
-
unstub_rails
|
13
|
-
# Restore to default fedora configs
|
14
|
-
restore_spec_configuration
|
15
|
-
end
|
16
|
-
|
17
|
-
describe "validate Fedora URL" do
|
18
|
-
let(:good_url) { described_class.fedora_config.credentials[:url] }
|
19
|
-
let(:bad_url) { good_url.gsub('/rest', '/') }
|
20
|
-
let(:user) { described_class.fedora_config.credentials[:user] }
|
21
|
-
let(:password) { described_class.fedora_config.credentials[:password] }
|
22
|
-
|
23
|
-
it "connects OK" do
|
24
|
-
expect(ActiveFedora::Base.logger).to_not receive(:warn)
|
25
|
-
ActiveFedora::Fedora.new(url: good_url, base_path: '/test', user: user, password: password)
|
26
|
-
end
|
27
|
-
|
28
|
-
it "does not connect and warn" do
|
29
|
-
expect(ActiveFedora::Base.logger).to receive(:warn)
|
30
|
-
expect {
|
31
|
-
ActiveFedora::Fedora.new(url: bad_url, base_path: '/test', user: user, password: password).connection.head
|
32
|
-
}.to raise_error Ldp::HttpError
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe "initialization methods" do
|
37
|
-
describe "environment" do
|
38
|
-
it "uses config_options[:environment] if set" do
|
39
|
-
allow(described_class).to receive(:config_options).and_return(environment: "ballyhoo")
|
40
|
-
expect(described_class.environment).to eql("ballyhoo")
|
41
|
-
end
|
42
|
-
|
43
|
-
it "uses Rails.env if no config_options and Rails.env is set" do
|
44
|
-
stub_rails(env: "bedbugs")
|
45
|
-
allow(described_class).to receive(:config_options).and_return({})
|
46
|
-
expect(described_class.environment).to eql("bedbugs")
|
47
|
-
unstub_rails
|
48
|
-
end
|
49
|
-
|
50
|
-
it "uses ENV['environment'] if neither config_options nor Rails.env are set" do
|
51
|
-
ENV['environment'] = "wichita"
|
52
|
-
allow(described_class).to receive(:config_options).and_return({})
|
53
|
-
expect(described_class.environment).to eql("wichita")
|
54
|
-
ENV['environment'] = 'test'
|
55
|
-
end
|
56
|
-
|
57
|
-
it "uses ENV['RAILS_ENV'] and log a warning if none of the above are set" do
|
58
|
-
ENV['environment'] = nil
|
59
|
-
ENV['RAILS_ENV'] = "rails_env"
|
60
|
-
expect { described_class.environment }.to raise_error(RuntimeError, "You're depending on RAILS_ENV for setting your environment. Please use ENV['environment'] for non-rails environment setting: 'rake foo:bar environment=test'")
|
61
|
-
ENV['environment'] = 'test'
|
62
|
-
end
|
63
|
-
|
64
|
-
it "is development if none of the above are present" do
|
65
|
-
ENV['environment'] = nil
|
66
|
-
ENV['RAILS_ENV'] = nil
|
67
|
-
allow(described_class).to receive(:config_options).and_return({})
|
68
|
-
expect(described_class.environment).to eq 'development'
|
69
|
-
ENV['environment'] = "test"
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
describe ".init" do
|
75
|
-
after do
|
76
|
-
# Restore to default fedora configs
|
77
|
-
described_class.init(environment: "test", fedora_config_path: File.join(File.dirname(__FILE__), "..", "..", "config", "fedora.yml"))
|
78
|
-
end
|
79
|
-
|
80
|
-
describe "outside of rails" do
|
81
|
-
it "loads the passed config if explicit config passed in as a string" do
|
82
|
-
described_class.init(fedora_config_path: './spec/fixtures/rails_root/config/fedora.yml', environment: 'test')
|
83
|
-
expect(described_class.config.credentials).to eq(url: "http://testhost.com:8983/fedora", user: 'fedoraAdmin', password: 'fedoraAdmin')
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
describe "within rails" do
|
88
|
-
after do
|
89
|
-
unstub_rails
|
90
|
-
end
|
91
|
-
|
92
|
-
describe "versions prior to 3.0" do
|
93
|
-
describe "with explicit config path passed in" do
|
94
|
-
it "loads the specified config path" do
|
95
|
-
fedora_config = "test:\n url: http://fedoraAdmin:fedoraAdmin@127.0.0.1:8983/fedora"
|
96
|
-
solr_config = "test:\n default:\n url: http://foosolr:8983"
|
97
|
-
|
98
|
-
fedora_config_path = File.expand_path(File.join(File.dirname(__FILE__), "../fixtures/rails_root/config/fedora.yml"))
|
99
|
-
solr_config_path = File.expand_path(File.join(File.dirname(__FILE__), "../fixtures/rails_root/config/solr.yml"))
|
100
|
-
allow(File).to receive(:open).with(fedora_config_path).and_return(fedora_config)
|
101
|
-
allow(File).to receive(:open).with(solr_config_path).and_return(solr_config)
|
102
|
-
|
103
|
-
described_class.init(fedora_config_path: fedora_config_path, solr_config_path: solr_config_path)
|
104
|
-
expect(described_class.solr.class).to eq ActiveFedora::SolrService
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
describe "with no explicit config path" do
|
109
|
-
it "looks for the file in the path defined at Rails.root" do
|
110
|
-
stub_rails(root: File.join(File.dirname(__FILE__), "../fixtures/rails_root"))
|
111
|
-
described_class.init
|
112
|
-
expect(described_class.config.credentials[:url]).to eq "http://testhost.com:8983/fedora"
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
117
|
-
end
|
118
|
-
end
|
@@ -1,134 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
RSpec.describe ActiveFedora::Aggregation::ListSource do
|
4
|
-
subject(:list_source) { described_class.new }
|
5
|
-
|
6
|
-
describe "#head" do
|
7
|
-
it "is nil by default" do
|
8
|
-
expect(list_source.head).to eq nil
|
9
|
-
end
|
10
|
-
|
11
|
-
it "is settable" do
|
12
|
-
list_source.head = RDF::URI("test.org")
|
13
|
-
|
14
|
-
expect(list_source.head_id.first).to eq RDF::URI("test.org")
|
15
|
-
end
|
16
|
-
|
17
|
-
it "maps to IANA.first" do
|
18
|
-
expect(list_source.class.properties["head"].predicate).to eq ::RDF::Vocab::IANA["first"]
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
describe "#order_will_change!" do
|
23
|
-
it "marks it as changed" do
|
24
|
-
expect(list_source).not_to be_changed
|
25
|
-
list_source.order_will_change!
|
26
|
-
expect(list_source).to be_changed
|
27
|
-
expect(list_source.ordered_self).to be_changed
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
describe "#tail" do
|
32
|
-
it "is nil by default" do
|
33
|
-
expect(list_source.tail).to eq nil
|
34
|
-
end
|
35
|
-
|
36
|
-
it "is settable" do
|
37
|
-
list_source.tail = RDF::URI("test.org")
|
38
|
-
|
39
|
-
expect(list_source.tail_id.first).to eq RDF::URI("test.org")
|
40
|
-
end
|
41
|
-
|
42
|
-
it "maps to IANA.last" do
|
43
|
-
expect(list_source.class.properties["tail"].predicate).to eq ::RDF::Vocab::IANA["last"]
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
describe "#changed?" do
|
48
|
-
context "when nothing has changed" do
|
49
|
-
it "is false" do
|
50
|
-
expect(list_source).not_to be_changed
|
51
|
-
end
|
52
|
-
end
|
53
|
-
context "when the ordered list is changed" do
|
54
|
-
it "is true" do
|
55
|
-
allow(list_source.ordered_self).to receive(:changed?).and_return(true)
|
56
|
-
|
57
|
-
expect(list_source).to be_changed
|
58
|
-
end
|
59
|
-
end
|
60
|
-
context "when the ordered list is not changed" do
|
61
|
-
it "is false" do
|
62
|
-
allow(list_source.ordered_self).to receive(:changed?).and_return(false)
|
63
|
-
|
64
|
-
expect(list_source).not_to be_changed
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
describe "#save" do
|
70
|
-
context "when nothing has changed" do
|
71
|
-
it "does not persist ordered_self" do
|
72
|
-
allow(list_source.ordered_self).to receive(:to_graph)
|
73
|
-
|
74
|
-
list_source.save
|
75
|
-
|
76
|
-
expect(list_source.ordered_self).not_to have_received(:to_graph)
|
77
|
-
end
|
78
|
-
end
|
79
|
-
context "when attributes have changed, but not ordered list" do
|
80
|
-
it "does not persist ordered self" do
|
81
|
-
allow(list_source.ordered_self).to receive(:to_graph)
|
82
|
-
list_source.nodes += [RDF::URI("http://test.org")]
|
83
|
-
|
84
|
-
list_source.save
|
85
|
-
|
86
|
-
expect(list_source.ordered_self).not_to have_received(:to_graph)
|
87
|
-
end
|
88
|
-
end
|
89
|
-
context "when ordered list has changed" do
|
90
|
-
it "persists it" do
|
91
|
-
allow(list_source.ordered_self).to receive(:to_graph).and_call_original
|
92
|
-
allow(list_source.ordered_self).to receive(:changed?).and_return(true)
|
93
|
-
|
94
|
-
list_source.save
|
95
|
-
|
96
|
-
expect(list_source.ordered_self).to have_received(:to_graph)
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
describe "#serializable_hash" do
|
102
|
-
it "does not serialize nodes" do
|
103
|
-
list_source.nodes += [RDF::URI("http://test.org")]
|
104
|
-
|
105
|
-
expect(list_source.serializable_hash).not_to have_key "nodes"
|
106
|
-
end
|
107
|
-
it "does not serialize head" do
|
108
|
-
list_source.head = RDF::URI("http://test.org")
|
109
|
-
|
110
|
-
expect(list_source.serializable_hash).not_to have_key "head"
|
111
|
-
end
|
112
|
-
it "does not serialize tail" do
|
113
|
-
list_source.tail = RDF::URI("http://test.org")
|
114
|
-
|
115
|
-
expect(list_source.serializable_hash).not_to have_key "tail"
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
describe "#to_solr" do
|
120
|
-
before do
|
121
|
-
class Member < ActiveFedora::Base
|
122
|
-
end
|
123
|
-
end
|
124
|
-
after do
|
125
|
-
Object.send(:remove_const, :Member)
|
126
|
-
end
|
127
|
-
it "can index" do
|
128
|
-
m = Member.create
|
129
|
-
proxy_in = RDF::URI(ActiveFedora::Base.translate_id_to_uri.call("banana"))
|
130
|
-
list_source.ordered_self.append_target m, proxy_in: proxy_in
|
131
|
-
expect(list_source.to_solr).to include ordered_targets_ssim: [m.id], proxy_in_ssi: "banana"
|
132
|
-
end
|
133
|
-
end
|
134
|
-
end
|