active-fedora 13.1.2 → 13.2.4

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.
Files changed (148) hide show
  1. checksums.yaml +4 -4
  2. data/.github_changelog_generator +2 -0
  3. data/CHANGELOG.md +3362 -0
  4. data/CONTRIBUTING.md +23 -1
  5. data/README.md +4 -0
  6. data/active-fedora.gemspec +13 -13
  7. data/config/fedora.yml +5 -5
  8. data/lib/active_fedora/core.rb +3 -0
  9. data/lib/active_fedora/indexing/descendant_fetcher.rb +7 -11
  10. data/lib/active_fedora/ldp_resource.rb +6 -0
  11. data/lib/active_fedora/orders/ordered_list.rb +2 -2
  12. data/lib/active_fedora/version.rb +3 -1
  13. data/lib/active_fedora/with_metadata/default_schema.rb +12 -1
  14. data/lib/generators/active_fedora/config/fedora/templates/fedora.yml +6 -6
  15. data/lib/generators/active_fedora/config/solr/templates/solr/conf/schema.xml +3 -3
  16. metadata +98 -214
  17. data/spec/config_helper.rb +0 -17
  18. data/spec/fixtures/dino.jpg +0 -0
  19. data/spec/fixtures/dino_jpg_no_file_ext +0 -0
  20. data/spec/fixtures/minivan.jpg +0 -0
  21. data/spec/fixtures/rails_root/config/fake_fedora.yml +0 -7
  22. data/spec/fixtures/rails_root/config/fedora.yml +0 -12
  23. data/spec/fixtures/rails_root/config/solr.yml +0 -15
  24. data/spec/fixtures/rails_root/config/solr_mappings.yml +0 -16
  25. data/spec/fixtures/rails_root/config/solr_mappings_af_0.1.yml +0 -9
  26. data/spec/fixtures/rails_root/config/solr_mappings_bl_2.4.yml +0 -17
  27. data/spec/integration/associations/rdf_spec.rb +0 -61
  28. data/spec/integration/associations_spec.rb +0 -680
  29. data/spec/integration/attached_files_spec.rb +0 -146
  30. data/spec/integration/attributes_spec.rb +0 -73
  31. data/spec/integration/autosave_association_spec.rb +0 -24
  32. data/spec/integration/base_spec.rb +0 -184
  33. data/spec/integration/basic_contains_association_spec.rb +0 -121
  34. data/spec/integration/belongs_to_association_spec.rb +0 -260
  35. data/spec/integration/caching_spec.rb +0 -59
  36. data/spec/integration/clean_connection_spec.rb +0 -21
  37. data/spec/integration/collection_association_spec.rb +0 -166
  38. data/spec/integration/date_time_properties_spec.rb +0 -41
  39. data/spec/integration/delete_all_spec.rb +0 -64
  40. data/spec/integration/direct_container_spec.rb +0 -250
  41. data/spec/integration/directly_contains_one_association_spec.rb +0 -96
  42. data/spec/integration/eradicate_spec.rb +0 -52
  43. data/spec/integration/fedora_solr_sync_spec.rb +0 -30
  44. data/spec/integration/file_fixity_spec.rb +0 -36
  45. data/spec/integration/file_spec.rb +0 -221
  46. data/spec/integration/generators/fedora_generator_spec.rb +0 -26
  47. data/spec/integration/generators/solr_generator_spec.rb +0 -23
  48. data/spec/integration/gone_spec.rb +0 -41
  49. data/spec/integration/has_and_belongs_to_many_associations_spec.rb +0 -414
  50. data/spec/integration/has_many_associations_spec.rb +0 -436
  51. data/spec/integration/has_subresource_spec.rb +0 -34
  52. data/spec/integration/indexing/descendant_fetcher_spec.rb +0 -64
  53. data/spec/integration/indexing_spec.rb +0 -110
  54. data/spec/integration/indirect_container_spec.rb +0 -290
  55. data/spec/integration/json_serialization_spec.rb +0 -32
  56. data/spec/integration/marshal_spec.rb +0 -39
  57. data/spec/integration/nested_attribute_spec.rb +0 -177
  58. data/spec/integration/nested_hash_resources_spec.rb +0 -43
  59. data/spec/integration/persistence_spec.rb +0 -37
  60. data/spec/integration/query_result_builder_spec.rb +0 -37
  61. data/spec/integration/rdf_nested_attributes_spec.rb +0 -85
  62. data/spec/integration/relation_delegation_spec.rb +0 -52
  63. data/spec/integration/relation_spec.rb +0 -117
  64. data/spec/integration/scoped_query_spec.rb +0 -134
  65. data/spec/integration/scoping_spec.rb +0 -48
  66. data/spec/integration/solr_hit_spec.rb +0 -32
  67. data/spec/integration/versionable_spec.rb +0 -256
  68. data/spec/integration/with_metadata_spec.rb +0 -111
  69. data/spec/lib/active_fedora/null_logger_spec.rb +0 -10
  70. data/spec/rcov.opts +0 -2
  71. data/spec/spec.opts +0 -5
  72. data/spec/spec_helper.rb +0 -106
  73. data/spec/support/an_active_model.rb +0 -29
  74. data/spec/unit/active_fedora/indexing/inserter_spec.rb +0 -35
  75. data/spec/unit/active_fedora_spec.rb +0 -118
  76. data/spec/unit/aggregation/list_source_spec.rb +0 -134
  77. data/spec/unit/aggregation/ordered_reader_spec.rb +0 -43
  78. data/spec/unit/association_hash_spec.rb +0 -64
  79. data/spec/unit/attached_files_spec.rb +0 -218
  80. data/spec/unit/attributes_spec.rb +0 -146
  81. data/spec/unit/base_active_model_spec.rb +0 -28
  82. data/spec/unit/base_cma_spec.rb +0 -15
  83. data/spec/unit/base_extra_spec.rb +0 -33
  84. data/spec/unit/base_spec.rb +0 -328
  85. data/spec/unit/builder/has_and_belongs_to_many_spec.rb +0 -8
  86. data/spec/unit/callback_spec.rb +0 -65
  87. data/spec/unit/change_set_spec.rb +0 -60
  88. data/spec/unit/checksum_spec.rb +0 -25
  89. data/spec/unit/code_configurator_spec.rb +0 -41
  90. data/spec/unit/collection_proxy_spec.rb +0 -25
  91. data/spec/unit/config_spec.rb +0 -18
  92. data/spec/unit/core/fedora_id_translator_spec.rb +0 -29
  93. data/spec/unit/core/fedora_uri_translator_spec.rb +0 -19
  94. data/spec/unit/core/logger_spec.rb +0 -18
  95. data/spec/unit/core_spec.rb +0 -242
  96. data/spec/unit/default_model_mapper_spec.rb +0 -39
  97. data/spec/unit/fedora_spec.rb +0 -31
  98. data/spec/unit/file/streaming_spec.rb +0 -33
  99. data/spec/unit/file_configurator_spec.rb +0 -295
  100. data/spec/unit/file_io_spec.rb +0 -137
  101. data/spec/unit/file_path_builder_spec.rb +0 -18
  102. data/spec/unit/file_spec.rb +0 -489
  103. data/spec/unit/files_hash_spec.rb +0 -52
  104. data/spec/unit/filter_spec.rb +0 -133
  105. data/spec/unit/finder_methods_spec.rb +0 -154
  106. data/spec/unit/fixity_service_spec.rb +0 -128
  107. data/spec/unit/forbidden_attributes_protection_spec.rb +0 -50
  108. data/spec/unit/has_and_belongs_to_many_association_spec.rb +0 -125
  109. data/spec/unit/has_many_association_spec.rb +0 -131
  110. data/spec/unit/indexers/global_indexer_spec.rb +0 -41
  111. data/spec/unit/indexing/map/index_object_spec.rb +0 -25
  112. data/spec/unit/indexing/map_spec.rb +0 -27
  113. data/spec/unit/indexing_service_spec.rb +0 -28
  114. data/spec/unit/indexing_spec.rb +0 -86
  115. data/spec/unit/inheritance_spec.rb +0 -60
  116. data/spec/unit/ldp_resource_spec.rb +0 -15
  117. data/spec/unit/loadable_from_json_spec.rb +0 -40
  118. data/spec/unit/logger_spec.rb +0 -19
  119. data/spec/unit/model_classifier_spec.rb +0 -49
  120. data/spec/unit/ordered_spec.rb +0 -367
  121. data/spec/unit/orders/list_node_spec.rb +0 -151
  122. data/spec/unit/orders/ordered_list_spec.rb +0 -335
  123. data/spec/unit/orders/reflection_spec.rb +0 -22
  124. data/spec/unit/pathing_spec.rb +0 -35
  125. data/spec/unit/persistence_spec.rb +0 -115
  126. data/spec/unit/property_predicate_spec.rb +0 -35
  127. data/spec/unit/property_spec.rb +0 -25
  128. data/spec/unit/query_result_builder_spec.rb +0 -31
  129. data/spec/unit/query_spec.rb +0 -307
  130. data/spec/unit/querying_spec.rb +0 -24
  131. data/spec/unit/rdf/indexing_service_spec.rb +0 -114
  132. data/spec/unit/rdf_vocab_spec.rb +0 -30
  133. data/spec/unit/readonly_spec.rb +0 -24
  134. data/spec/unit/reflection_spec.rb +0 -42
  135. data/spec/unit/rspec_matchers/belong_to_associated_active_fedora_object_matcher_spec.rb +0 -37
  136. data/spec/unit/rspec_matchers/have_many_associated_active_fedora_objects_matcher_spec.rb +0 -38
  137. data/spec/unit/rspec_matchers/have_predicate_matcher_spec.rb +0 -38
  138. data/spec/unit/schema_indexing_strategy_spec.rb +0 -68
  139. data/spec/unit/scoping_spec.rb +0 -67
  140. data/spec/unit/serializers_spec.rb +0 -19
  141. data/spec/unit/solr_config_options_spec.rb +0 -57
  142. data/spec/unit/solr_hit_spec.rb +0 -57
  143. data/spec/unit/solr_query_builder_spec.rb +0 -18
  144. data/spec/unit/solr_service_spec.rb +0 -165
  145. data/spec/unit/sparql_insert_spec.rb +0 -31
  146. data/spec/unit/validations_spec.rb +0 -92
  147. data/spec/unit/with_metadata/default_metadata_class_factory_spec.rb +0 -29
  148. data/spec/unit/with_metadata/metadata_node_spec.rb +0 -69
@@ -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
@@ -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
@@ -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
@@ -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