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.
Files changed (140) 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 +14 -13
  7. data/lib/active_fedora/version.rb +1 -1
  8. metadata +104 -206
  9. data/spec/config_helper.rb +0 -17
  10. data/spec/fixtures/dino.jpg +0 -0
  11. data/spec/fixtures/dino_jpg_no_file_ext +0 -0
  12. data/spec/fixtures/minivan.jpg +0 -0
  13. data/spec/fixtures/rails_root/config/fake_fedora.yml +0 -7
  14. data/spec/fixtures/rails_root/config/fedora.yml +0 -12
  15. data/spec/fixtures/rails_root/config/solr.yml +0 -15
  16. data/spec/fixtures/rails_root/config/solr_mappings.yml +0 -16
  17. data/spec/fixtures/rails_root/config/solr_mappings_af_0.1.yml +0 -9
  18. data/spec/fixtures/rails_root/config/solr_mappings_bl_2.4.yml +0 -17
  19. data/spec/integration/associations/rdf_spec.rb +0 -61
  20. data/spec/integration/associations_spec.rb +0 -680
  21. data/spec/integration/attached_files_spec.rb +0 -146
  22. data/spec/integration/attributes_spec.rb +0 -73
  23. data/spec/integration/autosave_association_spec.rb +0 -24
  24. data/spec/integration/base_spec.rb +0 -184
  25. data/spec/integration/basic_contains_association_spec.rb +0 -121
  26. data/spec/integration/belongs_to_association_spec.rb +0 -260
  27. data/spec/integration/caching_spec.rb +0 -59
  28. data/spec/integration/clean_connection_spec.rb +0 -21
  29. data/spec/integration/collection_association_spec.rb +0 -166
  30. data/spec/integration/date_time_properties_spec.rb +0 -41
  31. data/spec/integration/delete_all_spec.rb +0 -64
  32. data/spec/integration/direct_container_spec.rb +0 -250
  33. data/spec/integration/directly_contains_one_association_spec.rb +0 -96
  34. data/spec/integration/eradicate_spec.rb +0 -52
  35. data/spec/integration/fedora_solr_sync_spec.rb +0 -30
  36. data/spec/integration/file_fixity_spec.rb +0 -36
  37. data/spec/integration/file_spec.rb +0 -221
  38. data/spec/integration/generators/fedora_generator_spec.rb +0 -26
  39. data/spec/integration/generators/solr_generator_spec.rb +0 -23
  40. data/spec/integration/gone_spec.rb +0 -41
  41. data/spec/integration/has_and_belongs_to_many_associations_spec.rb +0 -414
  42. data/spec/integration/has_many_associations_spec.rb +0 -436
  43. data/spec/integration/has_subresource_spec.rb +0 -34
  44. data/spec/integration/indexing/descendant_fetcher_spec.rb +0 -64
  45. data/spec/integration/indexing_spec.rb +0 -110
  46. data/spec/integration/indirect_container_spec.rb +0 -290
  47. data/spec/integration/json_serialization_spec.rb +0 -32
  48. data/spec/integration/marshal_spec.rb +0 -39
  49. data/spec/integration/nested_attribute_spec.rb +0 -177
  50. data/spec/integration/nested_hash_resources_spec.rb +0 -43
  51. data/spec/integration/persistence_spec.rb +0 -37
  52. data/spec/integration/query_result_builder_spec.rb +0 -37
  53. data/spec/integration/rdf_nested_attributes_spec.rb +0 -85
  54. data/spec/integration/relation_delegation_spec.rb +0 -52
  55. data/spec/integration/relation_spec.rb +0 -117
  56. data/spec/integration/scoped_query_spec.rb +0 -134
  57. data/spec/integration/scoping_spec.rb +0 -48
  58. data/spec/integration/solr_hit_spec.rb +0 -32
  59. data/spec/integration/versionable_spec.rb +0 -256
  60. data/spec/integration/with_metadata_spec.rb +0 -111
  61. data/spec/lib/active_fedora/null_logger_spec.rb +0 -10
  62. data/spec/rcov.opts +0 -2
  63. data/spec/spec.opts +0 -5
  64. data/spec/spec_helper.rb +0 -106
  65. data/spec/support/an_active_model.rb +0 -29
  66. data/spec/unit/active_fedora/indexing/inserter_spec.rb +0 -35
  67. data/spec/unit/active_fedora_spec.rb +0 -118
  68. data/spec/unit/aggregation/list_source_spec.rb +0 -134
  69. data/spec/unit/aggregation/ordered_reader_spec.rb +0 -43
  70. data/spec/unit/association_hash_spec.rb +0 -64
  71. data/spec/unit/attached_files_spec.rb +0 -218
  72. data/spec/unit/attributes_spec.rb +0 -146
  73. data/spec/unit/base_active_model_spec.rb +0 -28
  74. data/spec/unit/base_cma_spec.rb +0 -15
  75. data/spec/unit/base_extra_spec.rb +0 -33
  76. data/spec/unit/base_spec.rb +0 -328
  77. data/spec/unit/builder/has_and_belongs_to_many_spec.rb +0 -8
  78. data/spec/unit/callback_spec.rb +0 -65
  79. data/spec/unit/change_set_spec.rb +0 -60
  80. data/spec/unit/checksum_spec.rb +0 -25
  81. data/spec/unit/code_configurator_spec.rb +0 -41
  82. data/spec/unit/collection_proxy_spec.rb +0 -25
  83. data/spec/unit/config_spec.rb +0 -18
  84. data/spec/unit/core/fedora_id_translator_spec.rb +0 -29
  85. data/spec/unit/core/fedora_uri_translator_spec.rb +0 -19
  86. data/spec/unit/core/logger_spec.rb +0 -18
  87. data/spec/unit/core_spec.rb +0 -242
  88. data/spec/unit/default_model_mapper_spec.rb +0 -39
  89. data/spec/unit/fedora_spec.rb +0 -31
  90. data/spec/unit/file/streaming_spec.rb +0 -33
  91. data/spec/unit/file_configurator_spec.rb +0 -295
  92. data/spec/unit/file_io_spec.rb +0 -137
  93. data/spec/unit/file_path_builder_spec.rb +0 -18
  94. data/spec/unit/file_spec.rb +0 -489
  95. data/spec/unit/files_hash_spec.rb +0 -52
  96. data/spec/unit/filter_spec.rb +0 -133
  97. data/spec/unit/finder_methods_spec.rb +0 -154
  98. data/spec/unit/fixity_service_spec.rb +0 -128
  99. data/spec/unit/forbidden_attributes_protection_spec.rb +0 -50
  100. data/spec/unit/has_and_belongs_to_many_association_spec.rb +0 -125
  101. data/spec/unit/has_many_association_spec.rb +0 -131
  102. data/spec/unit/indexers/global_indexer_spec.rb +0 -41
  103. data/spec/unit/indexing/map/index_object_spec.rb +0 -25
  104. data/spec/unit/indexing/map_spec.rb +0 -27
  105. data/spec/unit/indexing_service_spec.rb +0 -28
  106. data/spec/unit/indexing_spec.rb +0 -86
  107. data/spec/unit/inheritance_spec.rb +0 -60
  108. data/spec/unit/ldp_resource_spec.rb +0 -15
  109. data/spec/unit/loadable_from_json_spec.rb +0 -40
  110. data/spec/unit/logger_spec.rb +0 -19
  111. data/spec/unit/model_classifier_spec.rb +0 -49
  112. data/spec/unit/ordered_spec.rb +0 -367
  113. data/spec/unit/orders/list_node_spec.rb +0 -151
  114. data/spec/unit/orders/ordered_list_spec.rb +0 -335
  115. data/spec/unit/orders/reflection_spec.rb +0 -22
  116. data/spec/unit/pathing_spec.rb +0 -35
  117. data/spec/unit/persistence_spec.rb +0 -115
  118. data/spec/unit/property_predicate_spec.rb +0 -35
  119. data/spec/unit/property_spec.rb +0 -25
  120. data/spec/unit/query_result_builder_spec.rb +0 -31
  121. data/spec/unit/query_spec.rb +0 -307
  122. data/spec/unit/querying_spec.rb +0 -24
  123. data/spec/unit/rdf/indexing_service_spec.rb +0 -114
  124. data/spec/unit/rdf_vocab_spec.rb +0 -30
  125. data/spec/unit/readonly_spec.rb +0 -24
  126. data/spec/unit/reflection_spec.rb +0 -42
  127. data/spec/unit/rspec_matchers/belong_to_associated_active_fedora_object_matcher_spec.rb +0 -37
  128. data/spec/unit/rspec_matchers/have_many_associated_active_fedora_objects_matcher_spec.rb +0 -38
  129. data/spec/unit/rspec_matchers/have_predicate_matcher_spec.rb +0 -38
  130. data/spec/unit/schema_indexing_strategy_spec.rb +0 -68
  131. data/spec/unit/scoping_spec.rb +0 -67
  132. data/spec/unit/serializers_spec.rb +0 -19
  133. data/spec/unit/solr_config_options_spec.rb +0 -57
  134. data/spec/unit/solr_hit_spec.rb +0 -57
  135. data/spec/unit/solr_query_builder_spec.rb +0 -18
  136. data/spec/unit/solr_service_spec.rb +0 -165
  137. data/spec/unit/sparql_insert_spec.rb +0 -31
  138. data/spec/unit/validations_spec.rb +0 -92
  139. data/spec/unit/with_metadata/default_metadata_class_factory_spec.rb +0 -29
  140. data/spec/unit/with_metadata/metadata_node_spec.rb +0 -69
@@ -1,32 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "Objects should be serialized to JSON" do
4
- it "has json results" do
5
- expect(ActiveFedora::Base.new.to_json).to eq "{\"id\":null}"
6
- end
7
-
8
- context "with properties" do
9
- before do
10
- class Foo < ActiveFedora::Base
11
- property :title, predicate: ::RDF::Vocab::DC.title
12
- property :description, predicate: ::RDF::Vocab::DC.description, multiple: false
13
- end
14
- end
15
-
16
- after do
17
- Object.send(:remove_const, :Foo)
18
- end
19
-
20
- let(:obj) { Foo.new(title: ['My Title'], description: 'Wonderful stuff') }
21
-
22
- before { allow(obj).to receive(:id).and_return('test-123') }
23
-
24
- let(:json) { JSON.parse(obj.to_json) }
25
-
26
- it "has to_json" do
27
- expect(json['id']).to eq "test-123"
28
- expect(json['title']).to eq ["My Title"]
29
- expect(json['description']).to eq "Wonderful stuff"
30
- end
31
- end
32
- end
@@ -1,39 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "Marshalling and loading" do
4
- before do
5
- class Post < ActiveFedora::Base
6
- has_many :comments
7
- property :text, predicate: ::RDF::URI('http://example.com/text')
8
- end
9
-
10
- class Comment < ActiveFedora::Base
11
- belongs_to :post, predicate: ::RDF::URI('http://example.com/post')
12
- end
13
- end
14
-
15
- after do
16
- Object.send(:remove_const, :Post)
17
- Object.send(:remove_const, :Comment)
18
- end
19
-
20
- context "persisted records" do
21
- let(:post) { Post.create(text: ['serialize me']) }
22
- it "marshals them" do
23
- marshalled = Marshal.dump(post)
24
- loaded = Marshal.load(marshalled)
25
-
26
- expect(loaded.attributes).to eq post.attributes
27
- end
28
- end
29
-
30
- context "with associations" do
31
- let(:post) { Post.create(comments: [Comment.new]) }
32
- it "marshals associations" do
33
- marshalled = Marshal.dump(post)
34
- loaded = Marshal.load(marshalled)
35
-
36
- expect(loaded.comments.size).to eq 1
37
- end
38
- end
39
- end
@@ -1,177 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "NestedAttribute behavior" do
4
- before do
5
- class Bar < ActiveFedora::Base
6
- belongs_to :car, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.hasMember
7
- property :uno, predicate: ::RDF::URI('http://example.com/uno'), multiple: false
8
- property :dos, predicate: ::RDF::URI('http://example.com/dos'), multiple: false
9
- end
10
-
11
- # base Car class, used in test for association updates and :allow_destroy flag
12
- class Car < ActiveFedora::Base
13
- has_many :bars, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.hasMember
14
- accepts_nested_attributes_for :bars, allow_destroy: true
15
- end
16
- end
17
- after do
18
- Object.send(:remove_const, :Bar)
19
- Object.send(:remove_const, :Car)
20
- end
21
-
22
- let(:car_class) { Car }
23
- let(:car) { car_class.create }
24
- let(:bar1) { Bar.create(car: car) }
25
- let(:bar2) { Bar.create(car: car) }
26
-
27
- it "has _destroy" do
28
- expect(Bar.new._destroy).to be_nil
29
- end
30
-
31
- it "updates the child objects" do
32
- car.update bars_attributes: [{ id: bar1.id, uno: "bar1 uno" }, { uno: "newbar uno" }, { id: bar2.id, _destroy: '1', uno: 'bar2 uno' }]
33
- expect(Bar.all.map(&:uno)).to match_array ['bar1 uno', 'newbar uno']
34
-
35
- bars = car.bars(true)
36
- expect(bars).to include(bar1)
37
- expect(bars).to_not include(bar2)
38
- end
39
-
40
- context "when reject_if: :all_blank" do
41
- before do
42
- class CarAllBlank < Car
43
- accepts_nested_attributes_for :bars, reject_if: :all_blank
44
- end
45
- end
46
-
47
- let(:car_class) { CarAllBlank }
48
- after { Object.send(:remove_const, :CarAllBlank) }
49
- let(:car) { car_class.create }
50
- let!(:bar1) { Bar.create(car: car) }
51
- let!(:bar2) { Bar.create(car: car) }
52
-
53
- it "rejects attributes when all blank" do
54
- expect(car.bars.count).to eq 2
55
- car.update bars_attributes: [{}, { id: bar1.id, uno: "bar1 uno" }]
56
- expect(car.bars(true).count).to eq 2
57
-
58
- bar1.reload
59
- expect(bar1.uno).to eq "bar1 uno"
60
- end
61
- end
62
-
63
- context "when reject_if attribute is supplied with a proc" do
64
- before do
65
- class CarProc < Car
66
- accepts_nested_attributes_for :bars, reject_if: ->(attributes) { attributes['uno'].blank? }
67
- end
68
- end
69
-
70
- after { Object.send(:remove_const, :CarProc) }
71
- let(:car_class) { CarProc }
72
-
73
- context "and the reject_if proc evaluates to false" do
74
- before do
75
- car.update bars_attributes: [{}, { id: bar1.id, uno: "bar1 uno" }]
76
- end
77
- it "updates attributes" do
78
- expect(bar1.reload.uno).to eq "bar1 uno"
79
- end
80
- end
81
-
82
- context "and the reject_if proc evaluates to true" do
83
- before do
84
- car.update bars_attributes: [{}, { id: bar1.id, dos: "bar1 uno" }]
85
- end
86
- it "rejects attributes" do
87
- expect(bar1.reload.dos).to be_nil
88
- end
89
- end
90
-
91
- context "and `allow_destroy: false`" do
92
- context "and the reject_if proc evaluates to true" do
93
- before do
94
- car.update bars_attributes: [{}, { id: bar1.id, dos: "bar1 uno", _destroy: "1" }]
95
- end
96
- it "rejects attributes (_destroy doesn't affect the outcome)" do
97
- expect(bar1.reload.dos).to be_nil
98
- end
99
- end
100
-
101
- context "a record with the destroy flag and without an id" do
102
- it "creates a new record" do
103
- expect {
104
- car.update bars_attributes: [{ uno: "bar1 uno", _destroy: "1" }]
105
- }.to change { car.bars(true).count }.by(1)
106
- end
107
-
108
- it "does not create a new record if reject_if conditions are triggered" do
109
- expect {
110
- car.update bars_attributes: [{ uno: "", _destroy: "1" }]
111
- }.not_to change { car.bars(true).count }
112
- end
113
- end
114
- end
115
- end
116
-
117
- describe "reject_if: with a symbol" do
118
- before do
119
- # class used in test for reject_if: with method name as symbol
120
- class CarSymbol < Car
121
- accepts_nested_attributes_for :bars, reject_if: :uno_blank
122
-
123
- def uno_blank(attributes)
124
- attributes['uno'].blank?
125
- end
126
- end
127
- end
128
-
129
- after { Object.send(:remove_const, :CarSymbol) }
130
- let(:car_class) { CarSymbol }
131
-
132
- it "rejects attributes based on method name" do
133
- car.update bars_attributes: [{}, { id: bar1.id, uno: "bar1 uno" }, { id: bar2.id, dos: "bar2 dos" }]
134
- bar1.reload
135
- bar2.reload
136
- expect(bar1.uno).to eq "bar1 uno"
137
- expect(bar2.dos).to be_nil
138
- end
139
- end
140
-
141
- describe "allow_destroy: true" do
142
- before do
143
- class CarDestroy < Car
144
- accepts_nested_attributes_for :bars, allow_destroy: true
145
- end
146
- end
147
-
148
- let(:car_class) { CarDestroy }
149
- after { Object.send(:remove_const, :CarDestroy) }
150
-
151
- it "doesn't create a new record if _destroy is set" do
152
- expect {
153
- car.update bars_attributes: [{ uno: "new uno", _destroy: "1" }]
154
- }.not_to change { car.bars(true).count }
155
- end
156
- end
157
-
158
- describe "limit" do
159
- before do
160
- class CarWithLimit < Car
161
- accepts_nested_attributes_for :bars, limit: 1
162
- end
163
- end
164
- after { Object.send(:remove_const, :CarWithLimit) }
165
-
166
- let(:car_class) { CarWithLimit }
167
- it "throws TooManyRecords" do
168
- expect {
169
- car.attributes = { bars_attributes: [{}] }
170
- }.to_not raise_exception
171
-
172
- expect {
173
- car.attributes = { bars_attributes: [{}, {}] }
174
- }.to raise_exception(ActiveFedora::NestedAttributes::TooManyRecords)
175
- end
176
- end
177
- end
@@ -1,43 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "nested hash resources" do
4
- before do
5
- class NestedResource < ActiveTriples::Resource
6
- property :title, predicate: ::RDF::Vocab::DC.title
7
- ## Necessary to get AT to create hash URIs.
8
- def initialize(uri, parent)
9
- if uri.try(:node?)
10
- uri = RDF::URI("#nested_#{uri.to_s.gsub('_:', '')}")
11
- elsif uri.start_with?("#")
12
- uri = RDF::URI(uri)
13
- end
14
- super
15
- end
16
-
17
- def final_parent
18
- parent
19
- end
20
- end
21
- class ExampleOwner < ActiveFedora::Base
22
- property :relation, predicate: ::RDF::Vocab::DC.relation, class_name: NestedResource
23
- accepts_nested_attributes_for :relation
24
- end
25
- end
26
- after do
27
- Object.send(:remove_const, :NestedResource)
28
- Object.send(:remove_const, :ExampleOwner)
29
- end
30
- it "is able to nest resources" do
31
- obj = ExampleOwner.new
32
- obj.attributes = {
33
- relation_attributes: [
34
- {
35
- title: "Test"
36
- }
37
- ]
38
- }
39
- obj.save!
40
-
41
- expect(obj.reload.relation.first.title).to eq ["Test"]
42
- end
43
- end
@@ -1,37 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "persisting objects" do
4
- describe "#create!" do
5
- before do
6
- class MockAFBaseRelationship < ActiveFedora::Base
7
- property :name, predicate: ::RDF::Vocab::DC.title, multiple: false
8
- validates :name, presence: true
9
- end
10
- end
11
-
12
- after do
13
- Object.send(:remove_const, :MockAFBaseRelationship)
14
- end
15
-
16
- it "validates" do
17
- expect { MockAFBaseRelationship.create! }.to raise_error ActiveFedora::RecordInvalid, "Validation failed: Name can't be blank"
18
- end
19
- end
20
-
21
- describe "#save" do
22
- context "With undefined contains associations" do
23
- let(:f1) { ActiveFedora::Base.create }
24
- let!(:f2) { ActiveFedora::Base.create(id: "#{f1.id}/part2") }
25
-
26
- before do
27
- f1.reload # so it learns about f2
28
- end
29
-
30
- it "doesn't load the children" do
31
- allow(f1).to receive(:update_index) # solrizing can load the attached files.
32
- expect(ActiveFedora::File).not_to receive(:new)
33
- f1.save
34
- end
35
- end
36
- end
37
- end
@@ -1,37 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe ActiveFedora::QueryResultBuilder do
4
- describe "#reify_solr_results" do
5
- before do
6
- class FooObject < ActiveFedora::Base
7
- def self.id_namespace
8
- "foo"
9
- end
10
- end
11
- end
12
-
13
- let(:test_object) { ActiveFedora::Base.create }
14
- let(:foo_object) { FooObject.create }
15
-
16
- after do
17
- Object.send(:remove_const, :FooObject)
18
- end
19
-
20
- it "returns an array of objects that are of the class stored in active_fedora_model_s" do
21
- query = ActiveFedora::SolrQueryBuilder.construct_query_for_ids([test_object.id, foo_object.id])
22
- solr_result = ActiveFedora::SolrService.query(query, rows: 10)
23
- result = described_class.reify_solr_results(solr_result)
24
- expect(result.length).to eq 2
25
- result.each do |r|
26
- expect((r.class == ActiveFedora::Base || r.class == FooObject)).to be true
27
- end
28
- end
29
-
30
- it '#reifies a lightweight object as a new instance' do
31
- query = ActiveFedora::SolrQueryBuilder.construct_query_for_ids([foo_object.id])
32
- solr_result = ActiveFedora::SolrService.query(query, rows: 10)
33
- result = described_class.reify_solr_results(solr_result, load_from_solr: true)
34
- expect(result.first).to be_instance_of FooObject
35
- end
36
- end
37
- end
@@ -1,85 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "Nesting attribute behavior of RDF resources" do
4
- before do
5
- class DummyMADS < RDF::Vocabulary("http://www.loc.gov/mads/rdf/v1#")
6
- property :Topic
7
- property :Name
8
- property :Source
9
- end
10
-
11
- class CustomName < ActiveFedora::Base
12
- property :pref_label, predicate: ::RDF::Vocab::SKOS.prefLabel, multiple: false
13
- end
14
-
15
- class CustomSource < ActiveFedora::Base
16
- end
17
-
18
- class ComplexResource < ActiveFedora::Base
19
- property :topic, predicate: DummyMADS.Topic, class_name: "ComplexResource::Topic"
20
- property :name, predicate: DummyMADS.Name, class_name: "CustomName" do |index|
21
- index.as :stored_searchable, using: :pref_label
22
- end
23
- property :source, predicate: DummyMADS.Source, class_name: "CustomSource" do |index|
24
- index.as :stored_searchable
25
- end
26
-
27
- class Topic < ActiveTriples::Resource
28
- property :subject, predicate: ::RDF::Vocab::DC.subject
29
- end
30
- end
31
- end
32
-
33
- after do
34
- Object.send(:remove_const, :ComplexResource)
35
- Object.send(:remove_const, :DummyMADS)
36
- Object.send(:remove_const, :CustomName)
37
- Object.send(:remove_const, :CustomSource)
38
- end
39
-
40
- context "with an AT resource as a property" do
41
- subject(:complex_resource) { ComplexResource.new }
42
-
43
- let(:params) { [{ subject: 'Foo' }, { subject: 'Bar' }] }
44
-
45
- before do
46
- ComplexResource.accepts_nested_attributes_for(*args)
47
- complex_resource.topic_attributes = params
48
- end
49
-
50
- context "when no options are set" do
51
- let(:args) { [:topic] }
52
-
53
- it "sets the attributes" do
54
- expect(complex_resource.topic.size).to eq 2
55
- expect(complex_resource.topic.map(&:subject)).to contain_exactly ['Foo'], ['Bar']
56
- end
57
-
58
- it "marks the attributes as changed" do
59
- expect(complex_resource.changed_attributes.keys).to eq ["topic"]
60
- end
61
- end
62
-
63
- context "when reject_if is set" do
64
- let(:args) { [:topic, reject_if: reject_proc] }
65
- let(:reject_proc) { lambda { |attributes| attributes[:subject] == 'Bar' } }
66
- let(:params) { [{ subject: 'Foo' }, { subject: 'Bar' }] }
67
-
68
- it "does not add terms for which the proc is true" do
69
- expect(complex_resource.topic.map(&:subject)).to eq [['Foo']]
70
- end
71
- end
72
- end
73
-
74
- context "with an AF::Base object as a property" do
75
- describe "#to_solr" do
76
- let(:name) { CustomName.create(pref_label: "Joe Schmo") }
77
- let(:source) { CustomSource.create }
78
- let(:solr_doc) { ComplexResource.new(name: [name], source: [source]).to_solr }
79
- it "indexes the value of the properties accordingly" do
80
- expect(solr_doc).to include("name_tesim" => ["Joe Schmo"])
81
- expect(solr_doc).to include("source_tesim" => [source.uri])
82
- end
83
- end
84
- end
85
- end