active-fedora 13.1.2 → 13.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github_changelog_generator +2 -0
- data/CHANGELOG.md +3362 -0
- data/CONTRIBUTING.md +23 -1
- data/README.md +4 -0
- data/active-fedora.gemspec +14 -13
- data/lib/active_fedora/version.rb +1 -1
- metadata +104 -206
- data/spec/config_helper.rb +0 -17
- data/spec/fixtures/dino.jpg +0 -0
- data/spec/fixtures/dino_jpg_no_file_ext +0 -0
- data/spec/fixtures/minivan.jpg +0 -0
- data/spec/fixtures/rails_root/config/fake_fedora.yml +0 -7
- data/spec/fixtures/rails_root/config/fedora.yml +0 -12
- data/spec/fixtures/rails_root/config/solr.yml +0 -15
- data/spec/fixtures/rails_root/config/solr_mappings.yml +0 -16
- data/spec/fixtures/rails_root/config/solr_mappings_af_0.1.yml +0 -9
- data/spec/fixtures/rails_root/config/solr_mappings_bl_2.4.yml +0 -17
- data/spec/integration/associations/rdf_spec.rb +0 -61
- data/spec/integration/associations_spec.rb +0 -680
- data/spec/integration/attached_files_spec.rb +0 -146
- data/spec/integration/attributes_spec.rb +0 -73
- data/spec/integration/autosave_association_spec.rb +0 -24
- data/spec/integration/base_spec.rb +0 -184
- data/spec/integration/basic_contains_association_spec.rb +0 -121
- data/spec/integration/belongs_to_association_spec.rb +0 -260
- data/spec/integration/caching_spec.rb +0 -59
- data/spec/integration/clean_connection_spec.rb +0 -21
- data/spec/integration/collection_association_spec.rb +0 -166
- data/spec/integration/date_time_properties_spec.rb +0 -41
- data/spec/integration/delete_all_spec.rb +0 -64
- data/spec/integration/direct_container_spec.rb +0 -250
- data/spec/integration/directly_contains_one_association_spec.rb +0 -96
- data/spec/integration/eradicate_spec.rb +0 -52
- data/spec/integration/fedora_solr_sync_spec.rb +0 -30
- data/spec/integration/file_fixity_spec.rb +0 -36
- data/spec/integration/file_spec.rb +0 -221
- data/spec/integration/generators/fedora_generator_spec.rb +0 -26
- data/spec/integration/generators/solr_generator_spec.rb +0 -23
- data/spec/integration/gone_spec.rb +0 -41
- data/spec/integration/has_and_belongs_to_many_associations_spec.rb +0 -414
- data/spec/integration/has_many_associations_spec.rb +0 -436
- data/spec/integration/has_subresource_spec.rb +0 -34
- data/spec/integration/indexing/descendant_fetcher_spec.rb +0 -64
- data/spec/integration/indexing_spec.rb +0 -110
- data/spec/integration/indirect_container_spec.rb +0 -290
- data/spec/integration/json_serialization_spec.rb +0 -32
- data/spec/integration/marshal_spec.rb +0 -39
- data/spec/integration/nested_attribute_spec.rb +0 -177
- data/spec/integration/nested_hash_resources_spec.rb +0 -43
- data/spec/integration/persistence_spec.rb +0 -37
- data/spec/integration/query_result_builder_spec.rb +0 -37
- data/spec/integration/rdf_nested_attributes_spec.rb +0 -85
- data/spec/integration/relation_delegation_spec.rb +0 -52
- data/spec/integration/relation_spec.rb +0 -117
- data/spec/integration/scoped_query_spec.rb +0 -134
- data/spec/integration/scoping_spec.rb +0 -48
- data/spec/integration/solr_hit_spec.rb +0 -32
- data/spec/integration/versionable_spec.rb +0 -256
- data/spec/integration/with_metadata_spec.rb +0 -111
- data/spec/lib/active_fedora/null_logger_spec.rb +0 -10
- data/spec/rcov.opts +0 -2
- data/spec/spec.opts +0 -5
- data/spec/spec_helper.rb +0 -106
- data/spec/support/an_active_model.rb +0 -29
- data/spec/unit/active_fedora/indexing/inserter_spec.rb +0 -35
- data/spec/unit/active_fedora_spec.rb +0 -118
- data/spec/unit/aggregation/list_source_spec.rb +0 -134
- data/spec/unit/aggregation/ordered_reader_spec.rb +0 -43
- data/spec/unit/association_hash_spec.rb +0 -64
- data/spec/unit/attached_files_spec.rb +0 -218
- data/spec/unit/attributes_spec.rb +0 -146
- data/spec/unit/base_active_model_spec.rb +0 -28
- data/spec/unit/base_cma_spec.rb +0 -15
- data/spec/unit/base_extra_spec.rb +0 -33
- data/spec/unit/base_spec.rb +0 -328
- data/spec/unit/builder/has_and_belongs_to_many_spec.rb +0 -8
- data/spec/unit/callback_spec.rb +0 -65
- data/spec/unit/change_set_spec.rb +0 -60
- data/spec/unit/checksum_spec.rb +0 -25
- data/spec/unit/code_configurator_spec.rb +0 -41
- data/spec/unit/collection_proxy_spec.rb +0 -25
- data/spec/unit/config_spec.rb +0 -18
- data/spec/unit/core/fedora_id_translator_spec.rb +0 -29
- data/spec/unit/core/fedora_uri_translator_spec.rb +0 -19
- data/spec/unit/core/logger_spec.rb +0 -18
- data/spec/unit/core_spec.rb +0 -242
- data/spec/unit/default_model_mapper_spec.rb +0 -39
- data/spec/unit/fedora_spec.rb +0 -31
- data/spec/unit/file/streaming_spec.rb +0 -33
- data/spec/unit/file_configurator_spec.rb +0 -295
- data/spec/unit/file_io_spec.rb +0 -137
- data/spec/unit/file_path_builder_spec.rb +0 -18
- data/spec/unit/file_spec.rb +0 -489
- data/spec/unit/files_hash_spec.rb +0 -52
- data/spec/unit/filter_spec.rb +0 -133
- data/spec/unit/finder_methods_spec.rb +0 -154
- data/spec/unit/fixity_service_spec.rb +0 -128
- data/spec/unit/forbidden_attributes_protection_spec.rb +0 -50
- data/spec/unit/has_and_belongs_to_many_association_spec.rb +0 -125
- data/spec/unit/has_many_association_spec.rb +0 -131
- data/spec/unit/indexers/global_indexer_spec.rb +0 -41
- data/spec/unit/indexing/map/index_object_spec.rb +0 -25
- data/spec/unit/indexing/map_spec.rb +0 -27
- data/spec/unit/indexing_service_spec.rb +0 -28
- data/spec/unit/indexing_spec.rb +0 -86
- data/spec/unit/inheritance_spec.rb +0 -60
- data/spec/unit/ldp_resource_spec.rb +0 -15
- data/spec/unit/loadable_from_json_spec.rb +0 -40
- data/spec/unit/logger_spec.rb +0 -19
- data/spec/unit/model_classifier_spec.rb +0 -49
- data/spec/unit/ordered_spec.rb +0 -367
- data/spec/unit/orders/list_node_spec.rb +0 -151
- data/spec/unit/orders/ordered_list_spec.rb +0 -335
- data/spec/unit/orders/reflection_spec.rb +0 -22
- data/spec/unit/pathing_spec.rb +0 -35
- data/spec/unit/persistence_spec.rb +0 -115
- data/spec/unit/property_predicate_spec.rb +0 -35
- data/spec/unit/property_spec.rb +0 -25
- data/spec/unit/query_result_builder_spec.rb +0 -31
- data/spec/unit/query_spec.rb +0 -307
- data/spec/unit/querying_spec.rb +0 -24
- data/spec/unit/rdf/indexing_service_spec.rb +0 -114
- data/spec/unit/rdf_vocab_spec.rb +0 -30
- data/spec/unit/readonly_spec.rb +0 -24
- data/spec/unit/reflection_spec.rb +0 -42
- data/spec/unit/rspec_matchers/belong_to_associated_active_fedora_object_matcher_spec.rb +0 -37
- data/spec/unit/rspec_matchers/have_many_associated_active_fedora_objects_matcher_spec.rb +0 -38
- data/spec/unit/rspec_matchers/have_predicate_matcher_spec.rb +0 -38
- data/spec/unit/schema_indexing_strategy_spec.rb +0 -68
- data/spec/unit/scoping_spec.rb +0 -67
- data/spec/unit/serializers_spec.rb +0 -19
- data/spec/unit/solr_config_options_spec.rb +0 -57
- data/spec/unit/solr_hit_spec.rb +0 -57
- data/spec/unit/solr_query_builder_spec.rb +0 -18
- data/spec/unit/solr_service_spec.rb +0 -165
- data/spec/unit/sparql_insert_spec.rb +0 -31
- data/spec/unit/validations_spec.rb +0 -92
- data/spec/unit/with_metadata/default_metadata_class_factory_spec.rb +0 -29
- data/spec/unit/with_metadata/metadata_node_spec.rb +0 -69
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe ActiveFedora::Attributes::Serializers do
|
4
|
-
describe "deserialize_dates_from_form" do
|
5
|
-
before do
|
6
|
-
class Foo < ActiveFedora::Base
|
7
|
-
attr_accessor :birthday
|
8
|
-
end
|
9
|
-
end
|
10
|
-
after do
|
11
|
-
Object.send(:remove_const, :Foo)
|
12
|
-
end
|
13
|
-
subject(:serializer) { Foo.new }
|
14
|
-
it "deserializes dates" do
|
15
|
-
serializer.attributes = { 'birthday(1i)' => '2012', 'birthday(2i)' => '10', 'birthday(3i)' => '31' }
|
16
|
-
expect(serializer.birthday).to eq '2012-10-31'
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,57 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe ActiveFedora do
|
4
|
-
before(:all) do
|
5
|
-
module SolrSpecModel
|
6
|
-
class Basic < ActiveFedora::Base
|
7
|
-
end
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
subject(:test_object) { ActiveFedora::Base.new }
|
12
|
-
|
13
|
-
describe ".id_field" do
|
14
|
-
let(:field) { "MY_SAMPLE_ID".freeze }
|
15
|
-
before do
|
16
|
-
allow(described_class).to receive(:id_field).and_return(field)
|
17
|
-
end
|
18
|
-
|
19
|
-
it "is used by ActiveFedora::Base.to_solr" do
|
20
|
-
allow(test_object).to receive(:id).and_return('changeme:123')
|
21
|
-
expect(test_object.to_solr[field.to_sym]).to eq 'changeme:123'
|
22
|
-
expect(test_object.to_solr[:id]).to be_nil
|
23
|
-
end
|
24
|
-
|
25
|
-
it "is used by ActiveFedora::Base#search_with_conditions" do
|
26
|
-
mock_response = double("SolrResponse")
|
27
|
-
expect(ActiveFedora::SolrService).to receive(:query)
|
28
|
-
.with("_query_:\"{!raw f=has_model_ssim}SolrSpecModel::Basic\" AND " \
|
29
|
-
"_query_:\"{!field f=#{field}}changeme:30\"",
|
30
|
-
sort: ["#{described_class.index_field_mapper.solr_name('system_create', :stored_sortable, type: :date)} asc"])
|
31
|
-
.and_return(mock_response)
|
32
|
-
|
33
|
-
expect(SolrSpecModel::Basic.search_with_conditions(id: "changeme:30")).to equal(mock_response)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
describe ".enable_solr_updates?" do
|
38
|
-
context 'with .enable_solr_updates? disabled' do
|
39
|
-
before do
|
40
|
-
allow(described_class).to receive(:enable_solr_updates?).and_return(false)
|
41
|
-
end
|
42
|
-
|
43
|
-
it "prevents Base.save from calling update_index if false" do
|
44
|
-
allow(test_object).to receive(:new_record?).and_return(false)
|
45
|
-
expect(test_object).to receive(:update_index).never
|
46
|
-
expect(test_object).to receive(:refresh)
|
47
|
-
test_object.save
|
48
|
-
end
|
49
|
-
|
50
|
-
it "prevents Base.delete from deleting the corresponding Solr document if false" do
|
51
|
-
expect(ActiveFedora::SolrService.instance.conn).to receive(:delete).with(test_object.id).never
|
52
|
-
expect(test_object).to receive(:delete)
|
53
|
-
test_object.delete
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
data/spec/unit/solr_hit_spec.rb
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe ActiveFedora::SolrHit do
|
4
|
-
before(:all) do
|
5
|
-
class AudioRecord < ActiveFedora::Base
|
6
|
-
attr_accessor :id
|
7
|
-
def self.connection_for_id(_id); end
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
subject(:solr_hit) { described_class.new "id" => "my:_ID1_", ActiveFedora.index_field_mapper.solr_name("has_model", :symbol) => ["AudioRecord"] }
|
12
|
-
|
13
|
-
describe "#reify" do
|
14
|
-
it "uses .find to instantiate objects" do
|
15
|
-
expect(AudioRecord).to receive(:find).with("my:_ID1_", cast: true)
|
16
|
-
solr_hit.reify
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
describe "#id" do
|
21
|
-
it "extracts the id from the solr hit" do
|
22
|
-
expect(solr_hit.id).to eq "my:_ID1_"
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
describe "#rdf_uri" do
|
27
|
-
it "provides an RDF URI for the solr hit" do
|
28
|
-
expect(solr_hit.rdf_uri).to eq ::RDF::URI.new(ActiveFedora::Base.id_to_uri("my:_ID1_"))
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
describe "#model" do
|
33
|
-
it "selects the appropriate model for the solr result" do
|
34
|
-
expect(solr_hit.model).to eq AudioRecord
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
describe "#models" do
|
39
|
-
it "provides all the relevant models for the solr result" do
|
40
|
-
expect(solr_hit.models).to match_array [AudioRecord]
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
describe "#model?" do
|
45
|
-
it 'is true if the object has the given model' do
|
46
|
-
expect(solr_hit.model?(AudioRecord)).to eq true
|
47
|
-
end
|
48
|
-
|
49
|
-
it 'is true if the object has an ancestor of the given model' do
|
50
|
-
expect(solr_hit.model?(ActiveFedora::Base)).to eq true
|
51
|
-
end
|
52
|
-
|
53
|
-
it 'is false if the given model is not in the ancestor tree for the models' do
|
54
|
-
expect(solr_hit.model?(String)).to eq false
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe ActiveFedora::SolrQueryBuilder do
|
4
|
-
describe "construct_query" do
|
5
|
-
it "generates a query clause" do
|
6
|
-
expect(described_class.construct_query('id' => "my:_ID1_")).to eq '_query_:"{!field f=id}my:_ID1_"'
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
describe '#construct_query_for_ids' do
|
11
|
-
it "generates a useable solr query from an array of Fedora ids" do
|
12
|
-
expect(described_class.construct_query_for_ids(["my:_ID1_", "my:_ID2_", "my:_ID3_"])).to eq '{!terms f=id}my:_ID1_,my:_ID2_,my:_ID3_'
|
13
|
-
end
|
14
|
-
it "returns a valid solr query even if given an empty array as input" do
|
15
|
-
expect(described_class.construct_query_for_ids([""])).to eq "id:NEVER_USE_THIS_ID"
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,165 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe ActiveFedora::SolrService do
|
4
|
-
before do
|
5
|
-
described_class.reset!
|
6
|
-
end
|
7
|
-
|
8
|
-
after do
|
9
|
-
described_class.reset!
|
10
|
-
end
|
11
|
-
|
12
|
-
let(:mock_conn) { instance_double(RSolr::Client) }
|
13
|
-
|
14
|
-
describe '#options' do
|
15
|
-
it 'is readable' do
|
16
|
-
expect(described_class.instance.options).to include :read_timeout, :open_timeout, :url
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
describe '#conn' do
|
21
|
-
it "takes a n-arg constructor and configure for localhost" do
|
22
|
-
expect(RSolr).to receive(:connect).with(read_timeout: 120, open_timeout: 120, url: 'http://localhost:8080/solr')
|
23
|
-
described_class.register.conn
|
24
|
-
end
|
25
|
-
it "clobbers options" do
|
26
|
-
expect(RSolr).to receive(:connect).with(read_timeout: 120, open_timeout: 120, url: 'http://localhost:8080/solr', autocommit: :off, foo: :bar)
|
27
|
-
described_class.register(autocommit: :off, foo: :bar).conn
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
describe '#conn=' do
|
32
|
-
it 'is settable' do
|
33
|
-
described_class.instance.conn = mock_conn
|
34
|
-
expect(described_class.instance.conn).to eq mock_conn
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
describe '.instance' do
|
39
|
-
it "sets the threadlocal solr service" do
|
40
|
-
ss = described_class.register(autocommit: :off, foo: :bar)
|
41
|
-
expect(ActiveFedora::RuntimeRegistry.solr_service).to eq ss
|
42
|
-
expect(described_class.instance).to eq ss
|
43
|
-
end
|
44
|
-
it "passes on solr_config when initializing the service" do
|
45
|
-
allow(RSolr).to receive(:connect)
|
46
|
-
allow(ActiveFedora).to receive(:solr_config).and_return(url: 'http://fubar', update_path: 'update_test')
|
47
|
-
expect(described_class).to receive(:register).with(hash_including(url: 'http://fubar', update_path: 'update_test')).and_call_original
|
48
|
-
described_class.instance
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
describe "#get" do
|
53
|
-
it "calls solr" do
|
54
|
-
stub_result = double("Result")
|
55
|
-
expect(mock_conn).to receive(:get).with('select', params: { q: 'querytext', qt: 'standard' }).and_return(stub_result)
|
56
|
-
allow(described_class).to receive(:instance).and_return(double("instance", conn: mock_conn))
|
57
|
-
expect(described_class.get('querytext')).to eq stub_result
|
58
|
-
end
|
59
|
-
it "uses select_path" do
|
60
|
-
stub_result = double("Result")
|
61
|
-
expect(mock_conn).to receive(:get).with('select_test', params: { q: 'querytext', qt: 'standard' }).and_return(stub_result)
|
62
|
-
expect(described_class).to receive(:select_path).and_return('select_test')
|
63
|
-
allow(described_class).to receive(:instance).and_return(double("instance", conn: mock_conn))
|
64
|
-
expect(described_class.get('querytext')).to eq stub_result
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
describe "#post" do
|
69
|
-
it "calls solr" do
|
70
|
-
stub_result = double("Result")
|
71
|
-
expect(mock_conn).to receive(:post).with('select', data: { q: 'querytext', qt: 'standard' }).and_return(stub_result)
|
72
|
-
allow(described_class).to receive(:instance).and_return(double("instance", conn: mock_conn))
|
73
|
-
expect(described_class.post('querytext')).to eq stub_result
|
74
|
-
end
|
75
|
-
it "uses select_path" do
|
76
|
-
stub_result = double("Result")
|
77
|
-
expect(mock_conn).to receive(:post).with('select_test', data: { q: 'querytext', qt: 'standard' }).and_return(stub_result)
|
78
|
-
expect(described_class).to receive(:select_path).and_return('select_test')
|
79
|
-
allow(described_class).to receive(:instance).and_return(double("instance", conn: mock_conn))
|
80
|
-
expect(described_class.post('querytext')).to eq stub_result
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
describe "#query" do
|
85
|
-
let(:doc) { { 'id' => 'x' } }
|
86
|
-
let(:docs) { [doc] }
|
87
|
-
let(:stub_result) { { 'response' => { 'docs' => docs } } }
|
88
|
-
|
89
|
-
before do
|
90
|
-
allow(described_class).to receive(:instance).and_return(double("instance", conn: mock_conn))
|
91
|
-
end
|
92
|
-
|
93
|
-
it "defaults to HTTP GET method" do
|
94
|
-
expect(mock_conn).to receive(:get).with('select', params: { rows: 2, q: 'querytext', qt: 'standard' }).and_return(stub_result)
|
95
|
-
described_class.query('querytext', rows: 2)
|
96
|
-
end
|
97
|
-
|
98
|
-
it "allows callers to specify HTTP POST method" do
|
99
|
-
expect(mock_conn).to receive(:post).with('select', data: { rows: 2, q: 'querytext', qt: 'standard' }).and_return(stub_result)
|
100
|
-
described_class.query('querytext', rows: 2, method: :post)
|
101
|
-
end
|
102
|
-
|
103
|
-
it "raises if method not GET or POST" do
|
104
|
-
expect(mock_conn).not_to receive(:head).with('select', data: { rows: 2, q: 'querytext', qt: 'standard' })
|
105
|
-
expect {
|
106
|
-
described_class.query('querytext', rows: 2, method: :head)
|
107
|
-
}.to raise_error(RuntimeError, "Unsupported HTTP method for querying SolrService (:head)")
|
108
|
-
end
|
109
|
-
|
110
|
-
it "wraps the solr response documents in Solr hits" do
|
111
|
-
expect(mock_conn).to receive(:get).with('select', params: { rows: 2, q: 'querytext', qt: 'standard' }).and_return(stub_result)
|
112
|
-
result = described_class.query('querytext', rows: 2)
|
113
|
-
expect(result.size).to eq 1
|
114
|
-
expect(result.first.id).to eq 'x'
|
115
|
-
end
|
116
|
-
|
117
|
-
it "warns about not passing rows" do
|
118
|
-
allow(mock_conn).to receive(:get).and_return(stub_result)
|
119
|
-
expect(ActiveFedora::Base.logger).to receive(:warn).with(/^Calling ActiveFedora::SolrService\.get without passing an explicit value for ':rows' is not recommended/)
|
120
|
-
described_class.query('querytext')
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
describe ".count" do
|
125
|
-
it "returns a count of matching records" do
|
126
|
-
stub_result = { 'response' => { 'numFound' => '7' } }
|
127
|
-
expect(mock_conn).to receive(:get).with('select', params: { rows: 0, q: 'querytext', qt: 'standard' }).and_return(stub_result)
|
128
|
-
allow(described_class).to receive(:instance).and_return(double("instance", conn: mock_conn))
|
129
|
-
expect(described_class.count('querytext')).to eq 7
|
130
|
-
end
|
131
|
-
it "accepts query args" do
|
132
|
-
stub_result = { 'response' => { 'numFound' => '7' } }
|
133
|
-
expect(mock_conn).to receive(:get).with('select', params: { rows: 0, q: 'querytext', qt: 'standard', fq: 'filter' }).and_return(stub_result)
|
134
|
-
allow(described_class).to receive(:instance).and_return(double("instance", conn: mock_conn))
|
135
|
-
expect(described_class.count('querytext', fq: 'filter', rows: 10)).to eq 7
|
136
|
-
end
|
137
|
-
end
|
138
|
-
describe ".select_path" do
|
139
|
-
it "gets :select_path from solr_config" do
|
140
|
-
expect(ActiveFedora).to receive(:solr_config).and_return(select_path: 'select_test')
|
141
|
-
expect(described_class.select_path).to eq 'select_test'
|
142
|
-
end
|
143
|
-
it "uses 'select' as default" do
|
144
|
-
expect(ActiveFedora).to receive(:solr_config).and_return({})
|
145
|
-
expect(described_class.select_path).to eq 'select'
|
146
|
-
end
|
147
|
-
end
|
148
|
-
|
149
|
-
describe ".add" do
|
150
|
-
it "calls solr" do
|
151
|
-
doc = { 'id' => '1234' }
|
152
|
-
expect(mock_conn).to receive(:add).with(doc, params: {})
|
153
|
-
allow(described_class).to receive(:instance).and_return(double("instance", conn: mock_conn))
|
154
|
-
described_class.add(doc)
|
155
|
-
end
|
156
|
-
end
|
157
|
-
|
158
|
-
describe ".commit" do
|
159
|
-
it "calls solr" do
|
160
|
-
expect(mock_conn).to receive(:commit)
|
161
|
-
allow(described_class).to receive(:instance).and_return(double("instance", conn: mock_conn))
|
162
|
-
described_class.commit
|
163
|
-
end
|
164
|
-
end
|
165
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe ActiveFedora::SparqlInsert do
|
4
|
-
subject(:sparql_insert) { described_class.new(change_set.changes) }
|
5
|
-
let(:change_set) { ActiveFedora::ChangeSet.new(base, base.resource, base.changed_attributes.keys) }
|
6
|
-
|
7
|
-
context "with a changed object" do
|
8
|
-
before do
|
9
|
-
class Library < ActiveFedora::Base
|
10
|
-
end
|
11
|
-
|
12
|
-
class Book < ActiveFedora::Base
|
13
|
-
belongs_to :library, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.hasConstituent
|
14
|
-
property :title, predicate: ::RDF::Vocab::DC.title
|
15
|
-
end
|
16
|
-
|
17
|
-
base.library_id = 'foo'
|
18
|
-
base.title = ['bar']
|
19
|
-
end
|
20
|
-
after do
|
21
|
-
Object.send(:remove_const, :Library)
|
22
|
-
Object.send(:remove_const, :Book)
|
23
|
-
end
|
24
|
-
|
25
|
-
let(:base) { Book.create }
|
26
|
-
|
27
|
-
it "returns the string" do
|
28
|
-
expect(sparql_insert.build).to eq "DELETE { <> <info:fedora/fedora-system:def/relations-external#hasConstituent> ?change . }\n WHERE { <> <info:fedora/fedora-system:def/relations-external#hasConstituent> ?change . } ;\nDELETE { <> <http://purl.org/dc/terms/title> ?change . }\n WHERE { <> <http://purl.org/dc/terms/title> ?change . } ;\nINSERT { \n<> <info:fedora/fedora-system:def/relations-external#hasConstituent> <#{ActiveFedora.fedora.host}/test/foo> .\n<> <http://purl.org/dc/terms/title> \"bar\" .\n}\n WHERE { }"
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,92 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe ActiveFedora::Base do
|
4
|
-
before :all do
|
5
|
-
class ValidationStub < ActiveFedora::Base
|
6
|
-
property :fubar, predicate: ::RDF::URI('http://example.com/fubar')
|
7
|
-
property :swank, predicate: ::RDF::URI('http://example.com/swank'), multiple: false
|
8
|
-
|
9
|
-
validates_presence_of :fubar
|
10
|
-
validates_length_of :swank, minimum: 5
|
11
|
-
|
12
|
-
before_validation :before_validation_callback
|
13
|
-
after_validation :after_validation_callback
|
14
|
-
|
15
|
-
def before_validation_callback
|
16
|
-
# no-op
|
17
|
-
end
|
18
|
-
def after_validation_callback
|
19
|
-
# no-op
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
subject(:validation_stub) { ValidationStub.new }
|
25
|
-
|
26
|
-
after :all do
|
27
|
-
Object.send(:remove_const, :ValidationStub)
|
28
|
-
end
|
29
|
-
|
30
|
-
describe "a valid object" do
|
31
|
-
before do
|
32
|
-
validation_stub.attributes = { fubar: ['here'], swank: 'long enough' }
|
33
|
-
end
|
34
|
-
|
35
|
-
it { is_expected.to be_valid }
|
36
|
-
end
|
37
|
-
describe "an invalid object" do
|
38
|
-
before do
|
39
|
-
validation_stub.attributes = { swank: 'smal' }
|
40
|
-
end
|
41
|
-
it "has errors" do
|
42
|
-
expect(validation_stub).to_not be_valid
|
43
|
-
expect(validation_stub.errors[:fubar]).to eq ["can't be blank"]
|
44
|
-
expect(validation_stub.errors[:swank]).to eq ["is too short (minimum is 5 characters)"]
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
describe "required terms" do
|
49
|
-
it { is_expected.to be_required(:fubar) }
|
50
|
-
it { is_expected.to_not be_required(:swank) }
|
51
|
-
end
|
52
|
-
|
53
|
-
describe "#save!" do
|
54
|
-
before { expect(validation_stub).to receive(:_create_record) } # prevent saving to Fedora/Solr
|
55
|
-
|
56
|
-
it "validates only once" do
|
57
|
-
expect(validation_stub).to receive(:perform_validations).once.and_return(true)
|
58
|
-
validation_stub.save!
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
describe "#update!" do
|
63
|
-
before do
|
64
|
-
allow(validation_stub).to receive(:new_record?).and_return(false)
|
65
|
-
end
|
66
|
-
context "when validations work" do
|
67
|
-
it "saves the record" do
|
68
|
-
expect(validation_stub).to receive(:_update_record) # prevent saving to Fedora/Solr
|
69
|
-
expect(validation_stub).to receive(:perform_validations).once.and_return(true)
|
70
|
-
validation_stub.update!(fubar: ['here'], swank: 'long enough')
|
71
|
-
expect(validation_stub.fubar).to eq ['here']
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
context "when validations fail" do
|
76
|
-
it "raises an error" do
|
77
|
-
expect(validation_stub).not_to receive(:_update_record)
|
78
|
-
expect(validation_stub).to receive(:perform_validations).once.and_return(false)
|
79
|
-
expect { validation_stub.update!(fubar: ['here'], swank: 'long enough') }.to raise_error ActiveFedora::RecordInvalid
|
80
|
-
expect(validation_stub.fubar).to eq ['here']
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
describe 'validation callbacks' do
|
86
|
-
it 'calls callbacks' do
|
87
|
-
expect(validation_stub).to receive(:before_validation_callback)
|
88
|
-
expect(validation_stub).to receive(:after_validation_callback)
|
89
|
-
validation_stub.validate
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe ActiveFedora::WithMetadata::DefaultMetadataClassFactory do
|
4
|
-
let(:parent) { class_double(ActiveFedora::File) }
|
5
|
-
let(:object) { described_class.new }
|
6
|
-
|
7
|
-
describe "default class attributes" do
|
8
|
-
its(:metadata_base_class) { is_expected.to eq(ActiveFedora::WithMetadata::MetadataNode) }
|
9
|
-
its(:file_metadata_schemas) { is_expected.to eq([ActiveFedora::WithMetadata::DefaultSchema]) }
|
10
|
-
its(:file_metadata_strategy) { is_expected.to eq(ActiveFedora::WithMetadata::DefaultStrategy) }
|
11
|
-
end
|
12
|
-
|
13
|
-
describe "::build" do
|
14
|
-
it "sets MetadataNode to the default schema using the default strategy" do
|
15
|
-
expect(parent).to receive(:const_set)
|
16
|
-
expect(parent).to receive(:delegate).with(:label, :label=, :label_changed?, to: :metadata_node)
|
17
|
-
expect(parent).to receive(:delegate).with(:file_name, :file_name=, :file_name_changed?, to: :metadata_node)
|
18
|
-
expect(parent).to receive(:delegate).with(:file_size, :file_size=, :file_size_changed?, to: :metadata_node)
|
19
|
-
expect(parent).to receive(:delegate).with(:date_created, :date_created=, :date_created_changed?, to: :metadata_node)
|
20
|
-
expect(parent).to receive(:delegate).with(:date_modified,
|
21
|
-
:date_modified=,
|
22
|
-
:date_modified_changed?,
|
23
|
-
to: :metadata_node)
|
24
|
-
expect(parent).to receive(:delegate).with(:byte_order, :byte_order=, :byte_order_changed?, to: :metadata_node)
|
25
|
-
expect(parent).to receive(:delegate).with(:file_hash, :file_hash=, :file_hash_changed?, to: :metadata_node)
|
26
|
-
object.class.build(parent)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|