active-fedora 13.1.2 → 13.1.3

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 (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