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
data/spec/unit/querying_spec.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe ActiveFedora::Querying do
|
4
|
-
before do
|
5
|
-
class SpecModel < ActiveFedora::Base
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
after do
|
10
|
-
Object.send(:remove_const, :SpecModel)
|
11
|
-
end
|
12
|
-
|
13
|
-
describe '.solr_query_handler' do
|
14
|
-
subject { SpecModel.solr_query_handler }
|
15
|
-
|
16
|
-
it { is_expected.to eq 'standard' }
|
17
|
-
|
18
|
-
context "when setting to something besides the default" do
|
19
|
-
before { SpecModel.solr_query_handler = 'search' }
|
20
|
-
|
21
|
-
it { is_expected.to eq 'search' }
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,114 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe ActiveFedora::RDF::IndexingService do
|
4
|
-
before do
|
5
|
-
class MyObj < ActiveFedora::Base
|
6
|
-
property :created, predicate: ::RDF::Vocab::DC.created
|
7
|
-
property :title, predicate: ::RDF::Vocab::DC.title
|
8
|
-
property :publisher, predicate: ::RDF::Vocab::DC.publisher
|
9
|
-
property :based_near, predicate: ::RDF::Vocab::FOAF.based_near
|
10
|
-
property :related_url, predicate: ::RDF::Vocab::RDFS.seeAlso
|
11
|
-
property :rights, predicate: ::RDF::Vocab::DC.rights
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
after do
|
16
|
-
Object.send(:remove_const, :MyObj)
|
17
|
-
end
|
18
|
-
|
19
|
-
let(:f2) do
|
20
|
-
MyObj.new.tap do |obj|
|
21
|
-
obj.created = [Date.parse("2012-03-04")]
|
22
|
-
obj.title = ["Of Mice and Men, The Sequel"]
|
23
|
-
obj.publisher = [RDF::Literal.new("Bob's Blogtastic Publishing", language: :fr)]
|
24
|
-
obj.based_near = ["Tacoma, WA", "Renton, WA"]
|
25
|
-
obj.related_url = ["http://example.org/blogtastic/"]
|
26
|
-
obj.rights = ["Totally open, y'all"]
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
let(:index_config) do
|
31
|
-
{}.tap do |index_config|
|
32
|
-
index_config[:created] = ActiveFedora::Indexing::Map::IndexObject.new(:created) do |index|
|
33
|
-
index.as :sortable, :displayable
|
34
|
-
index.type :date
|
35
|
-
end
|
36
|
-
index_config[:title] = ActiveFedora::Indexing::Map::IndexObject.new(:title) do |index|
|
37
|
-
index.as :stored_searchable, :sortable
|
38
|
-
index.type :text
|
39
|
-
end
|
40
|
-
index_config[:publisher] = ActiveFedora::Indexing::Map::IndexObject.new(:publisher) do |index|
|
41
|
-
index.as :facetable, :sortable, :stored_searchable
|
42
|
-
end
|
43
|
-
index_config[:based_near] = ActiveFedora::Indexing::Map::IndexObject.new(:based_near) do |index|
|
44
|
-
index.as :facetable, :stored_searchable
|
45
|
-
index.type :text
|
46
|
-
end
|
47
|
-
index_config[:related_url] = ActiveFedora::Indexing::Map::IndexObject.new(:related_url) do |index|
|
48
|
-
index.as :stored_searchable
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
describe "#index_config" do
|
54
|
-
subject { indexer.index_config }
|
55
|
-
context "without passing one in" do
|
56
|
-
before do
|
57
|
-
expect(Deprecation).to receive(:warn)
|
58
|
-
allow(MyObj).to receive(:index_config).and_return(index_config)
|
59
|
-
end
|
60
|
-
|
61
|
-
let(:indexer) { described_class.new(f2) }
|
62
|
-
it { is_expected.to eq(index_config) }
|
63
|
-
end
|
64
|
-
|
65
|
-
context "when passing one in" do
|
66
|
-
let(:indexer) { described_class.new(f2, index_config) }
|
67
|
-
it { is_expected.to eq(index_config) }
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
let(:indexer) { described_class.new(f2, index_config) }
|
72
|
-
|
73
|
-
describe "#generate_solr_document" do
|
74
|
-
let(:solr_obj) { indexer.generate_solr_document(lambda { |key| "solr_rdf__#{key}" }) }
|
75
|
-
it "returns the right fields" do
|
76
|
-
expect(solr_obj.keys).to include(ActiveFedora.index_field_mapper.solr_name("solr_rdf__related_url", type: :string),
|
77
|
-
ActiveFedora.index_field_mapper.solr_name("solr_rdf__publisher", type: :string),
|
78
|
-
ActiveFedora.index_field_mapper.solr_name("solr_rdf__publisher", :sortable),
|
79
|
-
ActiveFedora.index_field_mapper.solr_name("solr_rdf__publisher", :facetable),
|
80
|
-
ActiveFedora.index_field_mapper.solr_name("solr_rdf__created", :sortable, type: :date),
|
81
|
-
ActiveFedora.index_field_mapper.solr_name("solr_rdf__created", :displayable),
|
82
|
-
ActiveFedora.index_field_mapper.solr_name("solr_rdf__title", type: :string),
|
83
|
-
ActiveFedora.index_field_mapper.solr_name("solr_rdf__title", :sortable),
|
84
|
-
ActiveFedora.index_field_mapper.solr_name("solr_rdf__based_near", type: :string),
|
85
|
-
ActiveFedora.index_field_mapper.solr_name("solr_rdf__based_near", :facetable))
|
86
|
-
end
|
87
|
-
|
88
|
-
it "returns the right values" do
|
89
|
-
expect(solr_obj[ActiveFedora.index_field_mapper.solr_name("solr_rdf__related_url", type: :string)]).to eq ["http://example.org/blogtastic/"]
|
90
|
-
expect(solr_obj[ActiveFedora.index_field_mapper.solr_name("solr_rdf__based_near", type: :string)]).to contain_exactly "Tacoma, WA", "Renton, WA"
|
91
|
-
expect(solr_obj[ActiveFedora.index_field_mapper.solr_name("solr_rdf__based_near", :facetable)]).to contain_exactly "Tacoma, WA", "Renton, WA"
|
92
|
-
expect(solr_obj[ActiveFedora.index_field_mapper.solr_name("solr_rdf__publisher", type: :string)]).to eq ["Bob's Blogtastic Publishing"]
|
93
|
-
expect(solr_obj[ActiveFedora.index_field_mapper.solr_name("solr_rdf__publisher", :sortable)]).to eq "Bob's Blogtastic Publishing"
|
94
|
-
expect(solr_obj[ActiveFedora.index_field_mapper.solr_name("solr_rdf__publisher", :facetable)]).to eq ["Bob's Blogtastic Publishing"]
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
describe "#fields" do
|
99
|
-
let(:fields) { indexer.send(:fields) }
|
100
|
-
|
101
|
-
it "returns the right fields" do
|
102
|
-
expect(fields.keys).to eq ["created", "title", "publisher", "based_near", "related_url"]
|
103
|
-
end
|
104
|
-
|
105
|
-
it "returns the right values" do
|
106
|
-
expect(fields["related_url"].values).to eq ["http://example.org/blogtastic/"]
|
107
|
-
expect(fields["based_near"].values).to contain_exactly "Tacoma, WA", "Renton, WA"
|
108
|
-
end
|
109
|
-
|
110
|
-
it "returns the right type information" do
|
111
|
-
expect(fields["created"].type).to eq :date
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
data/spec/unit/rdf_vocab_spec.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
require 'spec_helper'
|
3
|
-
|
4
|
-
describe ActiveFedora::RDF do
|
5
|
-
describe ActiveFedora::RDF::Fcrepo do
|
6
|
-
it "registers the vocabularies" do
|
7
|
-
namespaces = [
|
8
|
-
"info:fedora/fedora-system:def/model#",
|
9
|
-
"info:fedora/fedora-system:def/view#",
|
10
|
-
"info:fedora/fedora-system:def/relations-external#",
|
11
|
-
"info:fedora/fedora-system:"
|
12
|
-
]
|
13
|
-
namespaces.each do |namespace|
|
14
|
-
vocab = RDF::Vocabulary.find(namespace)
|
15
|
-
expect(vocab.superclass).to be(RDF::StrictVocabulary)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
describe ActiveFedora::RDF::ProjectHydra do
|
20
|
-
it "registers the vocabularies" do
|
21
|
-
namespaces = [
|
22
|
-
"http://projecthydra.org/ns/relations#"
|
23
|
-
]
|
24
|
-
namespaces.each do |namespace|
|
25
|
-
vocab = RDF::Vocabulary.find(namespace)
|
26
|
-
expect(vocab.superclass).to be(RDF::StrictVocabulary)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
data/spec/unit/readonly_spec.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe ActiveFedora::Base do
|
4
|
-
subject(:object) { described_class.new }
|
5
|
-
it { is_expected.not_to be_readonly }
|
6
|
-
|
7
|
-
describe "#readonly!" do
|
8
|
-
it "makes the object readonly" do
|
9
|
-
expect { object.readonly! }.to change { object.readonly? }.from(false).to(true)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
context "a readonly record" do
|
14
|
-
before { object.readonly! }
|
15
|
-
|
16
|
-
it "does not be destroyable" do
|
17
|
-
expect { object.destroy }.to raise_error ActiveFedora::ReadOnlyRecord
|
18
|
-
end
|
19
|
-
|
20
|
-
it "does not be mutable" do
|
21
|
-
expect { object.save }.to raise_error ActiveFedora::ReadOnlyRecord
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe ActiveFedora::Reflection::AssociationReflection do
|
4
|
-
describe "#derive_foreign_key" do
|
5
|
-
subject { instance.send :derive_foreign_key }
|
6
|
-
let(:name) { 'dummy' }
|
7
|
-
let(:options) { { inverse_of: :default_permissions } }
|
8
|
-
let(:active_fedora) { instance_double(ActiveFedora::Base) }
|
9
|
-
|
10
|
-
context "when a has_many" do
|
11
|
-
let(:instance) { ActiveFedora::Reflection::HasManyReflection.new(name, nil, options, active_fedora) }
|
12
|
-
|
13
|
-
context "and the inverse is a collection association" do
|
14
|
-
let(:inverse) { instance_double(ActiveFedora::Reflection::HasAndBelongsToManyReflection, collection?: true) }
|
15
|
-
before { allow(instance).to receive(:inverse_of).and_return(inverse) }
|
16
|
-
it { is_expected.to eq 'default_permission_ids' }
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
describe "#automatic_inverse_of" do
|
22
|
-
before do
|
23
|
-
class Dummy < ActiveFedora::Base
|
24
|
-
belongs_to :foothing, predicate: ::RDF::Vocab::DC.extent
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
after { Object.send(:remove_const, :Dummy) }
|
29
|
-
subject { instance.send :automatic_inverse_of }
|
30
|
-
let(:name) { 'dummy' }
|
31
|
-
let(:options) { { as: 'foothing' } }
|
32
|
-
let(:active_fedora) { instance_double(ActiveFedora::Base) }
|
33
|
-
|
34
|
-
context "when a has_many" do
|
35
|
-
let(:instance) { ActiveFedora::Reflection::HasManyReflection.new(name, nil, options, active_fedora) }
|
36
|
-
|
37
|
-
context "and the inverse is a collection association" do
|
38
|
-
it { is_expected.to eq :foothing }
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
require 'ostruct'
|
3
|
-
require "active_fedora/rspec_matchers/belong_to_associated_active_fedora_object_matcher"
|
4
|
-
|
5
|
-
describe RSpec::Matchers, ".belong_to_associated_active_fedora_object" do
|
6
|
-
let(:open_struct) { OpenStruct.new(id: id) }
|
7
|
-
let(:id) { 123 }
|
8
|
-
let(:object1) { Object.new }
|
9
|
-
let(:object2) { Object.new }
|
10
|
-
let(:association) { :association }
|
11
|
-
|
12
|
-
it 'matches when association is properly stored in fedora' do
|
13
|
-
expect(open_struct.class).to receive(:find).with(id).and_return(open_struct)
|
14
|
-
expect(open_struct).to receive(association).and_return(object1)
|
15
|
-
expect(open_struct).to belong_to_associated_active_fedora_object(association).with_object(object1)
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'does not match when association is different' do
|
19
|
-
expect(open_struct.class).to receive(:find).with(id).and_return(open_struct)
|
20
|
-
expect(open_struct).to receive(association).and_return(object1)
|
21
|
-
expect {
|
22
|
-
expect(open_struct).to belong_to_associated_active_fedora_object(association).with_object(object2)
|
23
|
-
}.to raise_error RSpec::Expectations::ExpectationNotMetError,
|
24
|
-
/expected #{open_struct.class} ID=#{id} association: #{association.inspect}/
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'requires :with_object option' do
|
28
|
-
expect {
|
29
|
-
expect(open_struct).to belong_to_associated_active_fedora_object(association)
|
30
|
-
}.to(
|
31
|
-
raise_error(
|
32
|
-
ArgumentError,
|
33
|
-
"expect(subject).to belong_to_associated_active_fedora_object(<association_name>).with_object(<object>)"
|
34
|
-
)
|
35
|
-
)
|
36
|
-
end
|
37
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
require 'ostruct'
|
3
|
-
require "active_fedora/rspec_matchers/have_many_associated_active_fedora_objects_matcher"
|
4
|
-
|
5
|
-
describe RSpec::Matchers, ".have_many_associated_active_fedora_objects" do
|
6
|
-
let(:open_struct) { OpenStruct.new(id: id) }
|
7
|
-
let(:id) { 123 }
|
8
|
-
let(:object1) { Object.new }
|
9
|
-
let(:object2) { Object.new }
|
10
|
-
let(:object3) { Object.new }
|
11
|
-
let(:association) { :association }
|
12
|
-
|
13
|
-
it 'matches when association is properly stored in fedora' do
|
14
|
-
expect(open_struct.class).to receive(:find).with(id).and_return(open_struct)
|
15
|
-
expect(open_struct).to receive(association).and_return([object1, object2])
|
16
|
-
expect(open_struct).to have_many_associated_active_fedora_objects(association).with_objects([object1, object2])
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'does not match when association is different' do
|
20
|
-
expect(open_struct.class).to receive(:find).with(id).and_return(open_struct)
|
21
|
-
expect(open_struct).to receive(association).and_return([object1, object3])
|
22
|
-
expect {
|
23
|
-
expect(open_struct).to have_many_associated_active_fedora_objects(association).with_objects([object1, object2])
|
24
|
-
}.to raise_error RSpec::Expectations::ExpectationNotMetError,
|
25
|
-
/expected #{open_struct.class} ID=#{id} association: #{association.inspect}/
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'requires :with_objects option' do
|
29
|
-
expect {
|
30
|
-
expect(open_struct).to have_many_associated_active_fedora_objects(association)
|
31
|
-
}.to(
|
32
|
-
raise_error(
|
33
|
-
ArgumentError,
|
34
|
-
"expect(subject).to have_many_associated_active_fedora_objects(<association_name>).with_objects(<objects[]>)"
|
35
|
-
)
|
36
|
-
)
|
37
|
-
end
|
38
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
require 'ostruct'
|
3
|
-
require "active_fedora/rspec_matchers/have_predicate_matcher"
|
4
|
-
|
5
|
-
describe RSpec::Matchers, ".have_predicate" do
|
6
|
-
let(:open_struct) { OpenStruct.new(id: id) }
|
7
|
-
let(:id) { 123 }
|
8
|
-
let(:object1) { Object.new }
|
9
|
-
let(:object2) { Object.new }
|
10
|
-
let(:object3) { Object.new }
|
11
|
-
let(:predicate) { :predicate }
|
12
|
-
|
13
|
-
it 'matches when relationship is "what we have in Fedora"' do
|
14
|
-
expect(open_struct.class).to receive(:find).with(id).and_return(open_struct)
|
15
|
-
expect(open_struct).to receive(:relationships).with(predicate).and_return([object1, object2])
|
16
|
-
expect(open_struct).to have_predicate(predicate).with_objects([object1, object2])
|
17
|
-
end
|
18
|
-
|
19
|
-
it 'does not match when relationship is different' do
|
20
|
-
expect(open_struct.class).to receive(:find).with(id).and_return(open_struct)
|
21
|
-
expect(open_struct).to receive(:relationships).with(predicate).and_return([object1, object3])
|
22
|
-
expect {
|
23
|
-
expect(open_struct).to have_predicate(predicate).with_objects([object1, object2])
|
24
|
-
}.to raise_error RSpec::Expectations::ExpectationNotMetError,
|
25
|
-
/expected #{open_struct.class} ID=#{id} relationship: #{predicate.inspect}/
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'requires :with_objects option' do
|
29
|
-
expect {
|
30
|
-
expect(open_struct).to have_predicate(predicate)
|
31
|
-
}.to(
|
32
|
-
raise_error(
|
33
|
-
ArgumentError,
|
34
|
-
"expect(subject).to have_predicate(<predicate>).with_objects(<objects[]>)"
|
35
|
-
)
|
36
|
-
)
|
37
|
-
end
|
38
|
-
end
|
@@ -1,68 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
RSpec.describe ActiveFedora::SchemaIndexingStrategy do
|
4
|
-
subject(:index_strategy) { described_class.new(property_indexer_factory) }
|
5
|
-
|
6
|
-
describe "#apply" do
|
7
|
-
let(:property) do
|
8
|
-
p = object_double(ActiveTriples::Property.new(name: nil))
|
9
|
-
allow(p).to receive(:to_h).and_return(options)
|
10
|
-
allow(p).to receive(:name).and_return(name)
|
11
|
-
p
|
12
|
-
end
|
13
|
-
let(:name) { "Name" }
|
14
|
-
let(:options) do
|
15
|
-
{
|
16
|
-
class_name: "Test"
|
17
|
-
}
|
18
|
-
end
|
19
|
-
let(:object) do
|
20
|
-
o = object_double(ActiveFedora::Base)
|
21
|
-
allow(o).to receive(:property).and_yield(index_configuration)
|
22
|
-
o
|
23
|
-
end
|
24
|
-
let(:index_configuration) do
|
25
|
-
d = double("index configuration")
|
26
|
-
allow(d).to receive(:as)
|
27
|
-
d
|
28
|
-
end
|
29
|
-
let(:property_indexer) do
|
30
|
-
p = double("property_indexer")
|
31
|
-
allow(p).to receive(:index).with(anything) do |index|
|
32
|
-
index.as(*Array.wrap(index_types))
|
33
|
-
end
|
34
|
-
p
|
35
|
-
end
|
36
|
-
let(:property_indexer_factory) do
|
37
|
-
p = double("property indexer factory")
|
38
|
-
allow(p).to receive(:new).with(anything).and_return(property_indexer)
|
39
|
-
p
|
40
|
-
end
|
41
|
-
let(:index_types) {}
|
42
|
-
context "with no index types" do
|
43
|
-
subject(:index_strategy) { described_class.new }
|
44
|
-
it "does not try to index it" do
|
45
|
-
index_strategy.apply(object, property)
|
46
|
-
|
47
|
-
expect(object).to have_received(:property).with(property.name, property.to_h)
|
48
|
-
expect(index_configuration).not_to have_received(:as)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
context "with one index type" do
|
52
|
-
let(:index_types) { :symbol }
|
53
|
-
it "applies that one" do
|
54
|
-
index_strategy.apply(object, property)
|
55
|
-
|
56
|
-
expect(index_configuration).to have_received(:as).with(:symbol)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
context "with multiple index types" do
|
60
|
-
let(:index_types) { [:symbol, :stored_searchable] }
|
61
|
-
it "applies all of them" do
|
62
|
-
index_strategy.apply(object, property)
|
63
|
-
|
64
|
-
expect(index_configuration).to have_received(:as).with(:symbol, :stored_searchable)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
data/spec/unit/scoping_spec.rb
DELETED
@@ -1,67 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe ActiveFedora::Scoping::Default do
|
4
|
-
describe "when default_scope is overridden" do
|
5
|
-
before do
|
6
|
-
class Book < ActiveFedora::Base
|
7
|
-
property :published, predicate: ::RDF::Vocab::EBUCore.pubStatus do |index|
|
8
|
-
index.as :symbol
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.default_scope
|
12
|
-
where published_ssim: 'true'
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
Book.destroy_all
|
17
|
-
Book.create!(published: [true])
|
18
|
-
Book.create!(published: [true])
|
19
|
-
Book.create!(published: [false])
|
20
|
-
end
|
21
|
-
|
22
|
-
after do
|
23
|
-
Object.send(:remove_const, :Book)
|
24
|
-
end
|
25
|
-
|
26
|
-
it "returns only the scoped records" do
|
27
|
-
expect(Book.all.size).to eq 2
|
28
|
-
end
|
29
|
-
|
30
|
-
it "returns all the records" do
|
31
|
-
Book.unscoped do
|
32
|
-
expect(Book.all.size).to eq 3
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
describe "when default_scope is called" do
|
38
|
-
before do
|
39
|
-
class Book < ActiveFedora::Base
|
40
|
-
property :published, predicate: ::RDF::Vocab::EBUCore.pubStatus do |index|
|
41
|
-
index.as :symbol
|
42
|
-
end
|
43
|
-
|
44
|
-
default_scope -> { where published_ssim: 'true' }
|
45
|
-
end
|
46
|
-
|
47
|
-
Book.destroy_all
|
48
|
-
Book.create!(published: [true])
|
49
|
-
Book.create!(published: [true])
|
50
|
-
Book.create!(published: [false])
|
51
|
-
end
|
52
|
-
|
53
|
-
after do
|
54
|
-
Object.send(:remove_const, :Book)
|
55
|
-
end
|
56
|
-
|
57
|
-
it "returns only the scoped records" do
|
58
|
-
expect(Book.all.size).to eq 2
|
59
|
-
end
|
60
|
-
|
61
|
-
it "returns all the records" do
|
62
|
-
Book.unscoped do
|
63
|
-
expect(Book.all.size).to eq 3
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|