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.
- 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,151 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
RSpec.describe ActiveFedora::Orders::ListNode do
|
|
4
|
-
let(:list_node) { described_class.new(node_cache, rdf_subject, graph) }
|
|
5
|
-
let(:node_cache) { {} }
|
|
6
|
-
let(:rdf_subject) { RDF::URI("#bla") }
|
|
7
|
-
let(:graph) { ActiveTriples::Resource.new }
|
|
8
|
-
|
|
9
|
-
describe "#target" do
|
|
10
|
-
context "when a target is set" do
|
|
11
|
-
it "returns it" do
|
|
12
|
-
member = instance_double("member")
|
|
13
|
-
list_node.target = member
|
|
14
|
-
expect(list_node.target).to eq member
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
context "when no target is set" do
|
|
18
|
-
context "and it's not in the graph" do
|
|
19
|
-
it "returns nil" do
|
|
20
|
-
expect(list_node.target).to eq nil
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
context "and it's set in the graph" do
|
|
24
|
-
before do
|
|
25
|
-
class Member < ActiveFedora::Base
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
after do
|
|
29
|
-
Object.send(:remove_const, :Member)
|
|
30
|
-
end
|
|
31
|
-
it "returns it" do
|
|
32
|
-
member = Member.create
|
|
33
|
-
graph << [rdf_subject, RDF::Vocab::ORE.proxyFor, member.resource.rdf_subject]
|
|
34
|
-
expect(list_node.target).to eq member
|
|
35
|
-
end
|
|
36
|
-
context "and it doesn't exist" do
|
|
37
|
-
it "returns an AT::Resource" do
|
|
38
|
-
member = Member.new(id: "testing")
|
|
39
|
-
graph << [rdf_subject, RDF::Vocab::ORE.proxyFor, member.resource.rdf_subject]
|
|
40
|
-
expect(list_node.target.rdf_subject).to eq member.uri
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
describe "#target_uri" do
|
|
48
|
-
context "with a null target_id" do
|
|
49
|
-
it "returns nil" do
|
|
50
|
-
expect(list_node.target_uri).to eq nil
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
context "with a target" do
|
|
54
|
-
before do
|
|
55
|
-
class Member < ActiveFedora::Base
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
after do
|
|
59
|
-
Object.send(:remove_const, :Member)
|
|
60
|
-
end
|
|
61
|
-
it "returns a built URI" do
|
|
62
|
-
m = Member.new
|
|
63
|
-
allow(m).to receive(:id).and_return("test")
|
|
64
|
-
list_node.target = m
|
|
65
|
-
|
|
66
|
-
expect(list_node.target_uri).to eq ActiveFedora::Base.translate_id_to_uri.call("test")
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
describe "#target_id" do
|
|
72
|
-
context "when a target is set" do
|
|
73
|
-
it "returns its id" do
|
|
74
|
-
member = instance_double("member", id: "member1")
|
|
75
|
-
list_node.target = member
|
|
76
|
-
expect(list_node.target_id).to eq "member1"
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
context "when a target is from the graph" do
|
|
80
|
-
before do
|
|
81
|
-
class Member < ActiveFedora::Base
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
after do
|
|
85
|
-
Object.send(:remove_const, :Member)
|
|
86
|
-
end
|
|
87
|
-
context "and it's cached but missing" do
|
|
88
|
-
it "works" do
|
|
89
|
-
member = Member.create
|
|
90
|
-
graph << [rdf_subject, RDF::Vocab::ORE.proxyFor, member.resource.rdf_subject]
|
|
91
|
-
allow(ActiveFedora::Base).to receive(:from_uri).and_return(ActiveTriples::Resource.new(member.resource.rdf_subject))
|
|
92
|
-
list_node.target
|
|
93
|
-
|
|
94
|
-
expect(list_node.target_id).to eq member.id
|
|
95
|
-
end
|
|
96
|
-
end
|
|
97
|
-
it "doesn't re-ify the target" do
|
|
98
|
-
member = Member.create
|
|
99
|
-
graph << [rdf_subject, RDF::Vocab::ORE.proxyFor, member.resource.rdf_subject]
|
|
100
|
-
allow(ActiveFedora::Base).to receive(:from_uri).and_call_original
|
|
101
|
-
|
|
102
|
-
expect(list_node.target_id).to eq member.id
|
|
103
|
-
expect(ActiveFedora::Base).not_to have_received(:from_uri)
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
describe "#proxy_in_id" do
|
|
108
|
-
context "when a target is set" do
|
|
109
|
-
it "returns its id" do
|
|
110
|
-
member = instance_double("member", id: "member1")
|
|
111
|
-
list_node.proxy_in = member
|
|
112
|
-
expect(list_node.proxy_in_id).to eq "member1"
|
|
113
|
-
end
|
|
114
|
-
end
|
|
115
|
-
context "when a proxy_in is from the graph" do
|
|
116
|
-
before do
|
|
117
|
-
class Member < ActiveFedora::Base
|
|
118
|
-
end
|
|
119
|
-
end
|
|
120
|
-
after do
|
|
121
|
-
Object.send(:remove_const, :Member)
|
|
122
|
-
end
|
|
123
|
-
context "and it's cached but missing" do
|
|
124
|
-
it "works" do
|
|
125
|
-
member = Member.create
|
|
126
|
-
graph << [rdf_subject, RDF::Vocab::ORE.proxyIn, member.resource.rdf_subject]
|
|
127
|
-
allow(ActiveFedora::Base).to receive(:from_uri).and_return(ActiveTriples::Resource.new(member.resource.rdf_subject))
|
|
128
|
-
list_node.target
|
|
129
|
-
|
|
130
|
-
expect(list_node.proxy_in_id).to eq member.id
|
|
131
|
-
end
|
|
132
|
-
end
|
|
133
|
-
it "doesn't re-ify the target" do
|
|
134
|
-
member = Member.create
|
|
135
|
-
graph << [rdf_subject, RDF::Vocab::ORE.proxyIn, member.resource.rdf_subject]
|
|
136
|
-
allow(ActiveFedora::Base).to receive(:from_uri).and_call_original
|
|
137
|
-
|
|
138
|
-
expect(list_node.proxy_in_id).to eq member.id
|
|
139
|
-
expect(ActiveFedora::Base).not_to have_received(:from_uri)
|
|
140
|
-
end
|
|
141
|
-
end
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
describe "#to_graph" do
|
|
145
|
-
context "with no data" do
|
|
146
|
-
it "returns an empty graph" do
|
|
147
|
-
expect(list_node.to_graph.statements.to_a.length).to eq 0
|
|
148
|
-
end
|
|
149
|
-
end
|
|
150
|
-
end
|
|
151
|
-
end
|
|
@@ -1,335 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
RSpec.describe ActiveFedora::Orders::OrderedList do
|
|
4
|
-
let(:ordered_list) { described_class.new(graph, head_uri, tail_uri) }
|
|
5
|
-
|
|
6
|
-
let(:graph) { ActiveTriples::Resource.new(RDF::URI("stuff")) }
|
|
7
|
-
let(:head_uri) { nil }
|
|
8
|
-
let(:tail_uri) { nil }
|
|
9
|
-
describe "#last" do
|
|
10
|
-
context "with no nodes" do
|
|
11
|
-
it "is nil" do
|
|
12
|
-
expect(ordered_list.last).to eq nil
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
context "with one node" do
|
|
16
|
-
it "is that node" do
|
|
17
|
-
member = instance_double(ActiveFedora::Base)
|
|
18
|
-
ordered_list.append_target member
|
|
19
|
-
|
|
20
|
-
expect(ordered_list.last.target).to eq member
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
context "with two nodes" do
|
|
24
|
-
it "is the last node" do
|
|
25
|
-
member = instance_double(ActiveFedora::Base)
|
|
26
|
-
member_2 = instance_double(ActiveFedora::Base)
|
|
27
|
-
ordered_list.append_target member
|
|
28
|
-
ordered_list.append_target member_2
|
|
29
|
-
|
|
30
|
-
expect(ordered_list.last.target).to eq member_2
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
describe "#order_will_change!" do
|
|
36
|
-
it "marks it as changed" do
|
|
37
|
-
expect(ordered_list).not_to be_changed
|
|
38
|
-
ordered_list.order_will_change!
|
|
39
|
-
expect(ordered_list).to be_changed
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
describe "#target_ids" do
|
|
44
|
-
context "from a graph" do
|
|
45
|
-
let(:head_uri) { RDF::URI.new("parent#bla") }
|
|
46
|
-
let(:tail_uri) { RDF::URI.new("parent#bla") }
|
|
47
|
-
it "returns the IDs without building the object" do
|
|
48
|
-
node_subject = RDF::URI.new("parent#bla")
|
|
49
|
-
member_uri = RDF::URI.new(ActiveFedora::Base.translate_id_to_uri.call("member1"))
|
|
50
|
-
parent_uri = RDF::URI.new("parent")
|
|
51
|
-
graph << [node_subject, RDF::Vocab::ORE.proxyFor, member_uri]
|
|
52
|
-
graph << [node_subject, RDF::Vocab::ORE.proxyIn, parent_uri]
|
|
53
|
-
allow(ActiveFedora::Base).to receive(:from_uri)
|
|
54
|
-
|
|
55
|
-
expect(ordered_list.target_ids).to eq ["member1"]
|
|
56
|
-
expect(ActiveFedora::Base).not_to have_received(:from_uri)
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
context "from a built up list" do
|
|
60
|
-
it "returns the IDs" do
|
|
61
|
-
member = instance_double(ActiveFedora::Base, id: "member1")
|
|
62
|
-
ordered_list.append_target member
|
|
63
|
-
|
|
64
|
-
expect(ordered_list.target_ids).to eq ["member1"]
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
describe "#proxy_in" do
|
|
70
|
-
context "when there's one proxy in" do
|
|
71
|
-
it "returns it" do
|
|
72
|
-
member = instance_double(ActiveFedora::Base)
|
|
73
|
-
ordered_list.append_target member, proxy_in: RDF::URI("http://tar.dis")
|
|
74
|
-
|
|
75
|
-
expect(ordered_list.proxy_in).to eq RDF::URI("http://tar.dis")
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
context "when the proxy in is an AF::Base object" do
|
|
79
|
-
it "returns the ID" do
|
|
80
|
-
member = instance_double(ActiveFedora::Base)
|
|
81
|
-
owner = instance_double(ActiveFedora::Base, id: "member1")
|
|
82
|
-
ordered_list.append_target member, proxy_in: owner
|
|
83
|
-
|
|
84
|
-
expect(ordered_list.proxy_in).to eq "member1"
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
context "when there's two proxy ins" do
|
|
88
|
-
it "returns the first and throws a warning" do
|
|
89
|
-
member = instance_double(ActiveFedora::Base)
|
|
90
|
-
ordered_list.append_target member, proxy_in: RDF::URI("http://tar.dis")
|
|
91
|
-
ordered_list.append_target member, proxy_in: RDF::URI("http://tar.di")
|
|
92
|
-
ActiveFedora::Base.logger = Logger.new(STDERR)
|
|
93
|
-
allow(ActiveFedora::Base.logger).to receive(:warn)
|
|
94
|
-
|
|
95
|
-
expect(ordered_list.proxy_in).to eq RDF::URI("http://tar.dis")
|
|
96
|
-
expect(ActiveFedora::Base.logger).to have_received(:warn).with("WARNING: List contains nodes aggregated under different URIs. Returning only the first.")
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
describe "#[]" do
|
|
102
|
-
context "with no nodes" do
|
|
103
|
-
it "is always nil" do
|
|
104
|
-
expect(ordered_list[0]).to eq nil
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
context "with two nodes" do
|
|
108
|
-
let(:member) { instance_double(ActiveFedora::Base) }
|
|
109
|
-
let(:member_2) { instance_double(ActiveFedora::Base) }
|
|
110
|
-
before do
|
|
111
|
-
ordered_list.append_target member
|
|
112
|
-
ordered_list.append_target member_2
|
|
113
|
-
end
|
|
114
|
-
it "can return the first" do
|
|
115
|
-
expect(ordered_list[0].target).to eq member
|
|
116
|
-
end
|
|
117
|
-
it "can return the last" do
|
|
118
|
-
expect(ordered_list[1].target).to eq member_2
|
|
119
|
-
end
|
|
120
|
-
it "returns nil for out of bounds values" do
|
|
121
|
-
expect(ordered_list[3]).to eq nil
|
|
122
|
-
end
|
|
123
|
-
end
|
|
124
|
-
end
|
|
125
|
-
describe "#first" do
|
|
126
|
-
context "with no nodes" do
|
|
127
|
-
it "is nil" do
|
|
128
|
-
expect(ordered_list.first).to eq nil
|
|
129
|
-
end
|
|
130
|
-
end
|
|
131
|
-
context "with a node" do
|
|
132
|
-
it "returns that node" do
|
|
133
|
-
member = instance_double(ActiveFedora::Base)
|
|
134
|
-
ordered_list.append_target member
|
|
135
|
-
expect(ordered_list.first.target).to eq member
|
|
136
|
-
expect(ordered_list).to be_changed
|
|
137
|
-
end
|
|
138
|
-
end
|
|
139
|
-
context "with an item from the graph" do
|
|
140
|
-
let(:head_uri) { RDF::URI.new("parent#bla") }
|
|
141
|
-
let(:tail_uri) { RDF::URI.new("parent#bla") }
|
|
142
|
-
it "builds the node" do
|
|
143
|
-
node_subject = RDF::URI.new("parent#bla")
|
|
144
|
-
member_uri = RDF::URI.new("member1")
|
|
145
|
-
parent_uri = RDF::URI.new("parent")
|
|
146
|
-
graph << [node_subject, RDF::Vocab::ORE.proxyFor, member_uri]
|
|
147
|
-
graph << [node_subject, RDF::Vocab::ORE.proxyIn, parent_uri]
|
|
148
|
-
expect(ordered_list.first.proxy_for).to eq member_uri
|
|
149
|
-
expect(ordered_list.first.proxy_for).to be_kind_of RDF::URI
|
|
150
|
-
expect(ordered_list.first.proxy_in).to eq parent_uri
|
|
151
|
-
expect(ordered_list.first).not_to eq nil
|
|
152
|
-
end
|
|
153
|
-
it "is changed by a delete" do
|
|
154
|
-
node_subject = RDF::URI.new("parent#bla")
|
|
155
|
-
member_uri = RDF::URI.new("member1")
|
|
156
|
-
parent_uri = RDF::URI.new("parent")
|
|
157
|
-
graph << [node_subject, RDF::Vocab::ORE.proxyFor, member_uri]
|
|
158
|
-
graph << [node_subject, RDF::Vocab::ORE.proxyIn, parent_uri]
|
|
159
|
-
|
|
160
|
-
expect(ordered_list).not_to be_changed
|
|
161
|
-
ordered_list.delete_at(0)
|
|
162
|
-
expect(ordered_list).to be_changed
|
|
163
|
-
end
|
|
164
|
-
context "with multiple nodes" do
|
|
165
|
-
let(:tail_uri) { RDF::URI.new("parent#bla2") }
|
|
166
|
-
it "can build multiple nodes" do
|
|
167
|
-
node_subject = RDF::URI.new("parent#bla")
|
|
168
|
-
node_2_subject = RDF::URI.new("parent#bla2")
|
|
169
|
-
member_uri = RDF::URI.new("member1")
|
|
170
|
-
parent_uri = RDF::URI.new("parent")
|
|
171
|
-
graph << [node_subject, RDF::Vocab::ORE.proxyFor, member_uri]
|
|
172
|
-
graph << [node_subject, RDF::Vocab::ORE.proxyIn, parent_uri]
|
|
173
|
-
graph << [node_subject, RDF::Vocab::IANA.next, node_2_subject]
|
|
174
|
-
graph << [node_2_subject, RDF::Vocab::IANA.prev, node_subject]
|
|
175
|
-
graph << [node_2_subject, RDF::Vocab::ORE.proxyFor, member_uri]
|
|
176
|
-
graph << [node_2_subject, RDF::Vocab::ORE.proxyIn, parent_uri]
|
|
177
|
-
expect(ordered_list.length).to eq 2
|
|
178
|
-
expect(ordered_list.tail.prev.prev).to eq ordered_list.head.next
|
|
179
|
-
expect(ordered_list.map(&:target).map(&:rdf_subject)).to eq [member_uri, member_uri]
|
|
180
|
-
expect(ordered_list).not_to be_changed
|
|
181
|
-
end
|
|
182
|
-
end
|
|
183
|
-
end
|
|
184
|
-
end
|
|
185
|
-
|
|
186
|
-
describe "#append_target" do
|
|
187
|
-
it "appends multiple targets" do
|
|
188
|
-
member = instance_double(ActiveFedora::Base)
|
|
189
|
-
proxy_in = instance_double(ActiveFedora::Base, uri: RDF::URI("obj1"))
|
|
190
|
-
600.times do
|
|
191
|
-
ordered_list.append_target member, proxy_in: proxy_in
|
|
192
|
-
end
|
|
193
|
-
expect(ordered_list.length).to eq 600
|
|
194
|
-
expect(ordered_list.to_a.last.next).not_to eq nil
|
|
195
|
-
expect(ordered_list.to_a.last.proxy_in).to eq proxy_in
|
|
196
|
-
end
|
|
197
|
-
end
|
|
198
|
-
|
|
199
|
-
describe "#insert_at" do
|
|
200
|
-
it "can insert in the middle" do
|
|
201
|
-
member = instance_double(ActiveFedora::Base)
|
|
202
|
-
member_2 = instance_double(ActiveFedora::Base)
|
|
203
|
-
3.times do
|
|
204
|
-
ordered_list.append_target member
|
|
205
|
-
end
|
|
206
|
-
|
|
207
|
-
ordered_list.insert_at(1, member_2)
|
|
208
|
-
|
|
209
|
-
expect(ordered_list.to_a.map(&:target)).to eq [member, member_2, member, member]
|
|
210
|
-
expect(ordered_list).to be_changed
|
|
211
|
-
end
|
|
212
|
-
it "can insert at the beginning" do
|
|
213
|
-
member = instance_double(ActiveFedora::Base)
|
|
214
|
-
member_2 = instance_double(ActiveFedora::Base)
|
|
215
|
-
2.times do
|
|
216
|
-
ordered_list.append_target member
|
|
217
|
-
end
|
|
218
|
-
|
|
219
|
-
ordered_list.insert_at(0, member_2)
|
|
220
|
-
|
|
221
|
-
expect(ordered_list.to_a.map(&:target)).to eq [member_2, member, member]
|
|
222
|
-
end
|
|
223
|
-
end
|
|
224
|
-
|
|
225
|
-
describe "#delete_node" do
|
|
226
|
-
it "can delete a node in the middle" do
|
|
227
|
-
member = instance_double(ActiveFedora::Base)
|
|
228
|
-
member_2 = instance_double(ActiveFedora::Base)
|
|
229
|
-
ordered_list.append_target member
|
|
230
|
-
ordered_list.append_target member_2
|
|
231
|
-
ordered_list.append_target member
|
|
232
|
-
|
|
233
|
-
ordered_list.delete_node(ordered_list.to_a[1])
|
|
234
|
-
|
|
235
|
-
expect(ordered_list.map(&:target)).to eq [member, member]
|
|
236
|
-
end
|
|
237
|
-
it "can delete a node at the start" do
|
|
238
|
-
member = instance_double(ActiveFedora::Base)
|
|
239
|
-
member_2 = instance_double(ActiveFedora::Base)
|
|
240
|
-
ordered_list.append_target member_2
|
|
241
|
-
ordered_list.append_target member
|
|
242
|
-
ordered_list.append_target member
|
|
243
|
-
|
|
244
|
-
ordered_list.delete_node(ordered_list.to_a[0])
|
|
245
|
-
|
|
246
|
-
expect(ordered_list.map(&:target)).to eq [member, member]
|
|
247
|
-
end
|
|
248
|
-
it "can delete a node at the end" do
|
|
249
|
-
member = instance_double(ActiveFedora::Base)
|
|
250
|
-
member_2 = instance_double(ActiveFedora::Base)
|
|
251
|
-
ordered_list.append_target member
|
|
252
|
-
ordered_list.append_target member
|
|
253
|
-
ordered_list.append_target member_2
|
|
254
|
-
|
|
255
|
-
ordered_list.delete_node(ordered_list.to_a[2])
|
|
256
|
-
|
|
257
|
-
expect(ordered_list.map(&:target)).to eq [member, member]
|
|
258
|
-
end
|
|
259
|
-
end
|
|
260
|
-
|
|
261
|
-
describe "#delete_at" do
|
|
262
|
-
it "can delete a node in the middle" do
|
|
263
|
-
member = instance_double(ActiveFedora::Base)
|
|
264
|
-
member_2 = instance_double(ActiveFedora::Base)
|
|
265
|
-
ordered_list.append_target member
|
|
266
|
-
ordered_list.append_target member_2
|
|
267
|
-
ordered_list.append_target member
|
|
268
|
-
|
|
269
|
-
ordered_list.delete_at(1)
|
|
270
|
-
|
|
271
|
-
expect(ordered_list.map(&:target)).to eq [member, member]
|
|
272
|
-
end
|
|
273
|
-
it "can delete a node at the start" do
|
|
274
|
-
member = instance_double(ActiveFedora::Base)
|
|
275
|
-
member_2 = instance_double(ActiveFedora::Base)
|
|
276
|
-
ordered_list.append_target member_2
|
|
277
|
-
ordered_list.append_target member
|
|
278
|
-
ordered_list.append_target member
|
|
279
|
-
|
|
280
|
-
ordered_list.delete_at(0)
|
|
281
|
-
|
|
282
|
-
expect(ordered_list.map(&:target)).to eq [member, member]
|
|
283
|
-
end
|
|
284
|
-
it "can delete a node at the end" do
|
|
285
|
-
member = instance_double(ActiveFedora::Base)
|
|
286
|
-
member_2 = instance_double(ActiveFedora::Base)
|
|
287
|
-
ordered_list.append_target member
|
|
288
|
-
ordered_list.append_target member
|
|
289
|
-
ordered_list.append_target member_2
|
|
290
|
-
|
|
291
|
-
ordered_list.delete_at(2)
|
|
292
|
-
|
|
293
|
-
expect(ordered_list.map(&:target)).to eq [member, member]
|
|
294
|
-
end
|
|
295
|
-
it "does not delete nodes if the loc is out of bounds" do
|
|
296
|
-
member = instance_double(ActiveFedora::Base)
|
|
297
|
-
member_2 = instance_double(ActiveFedora::Base)
|
|
298
|
-
ordered_list.append_target member
|
|
299
|
-
ordered_list.append_target member
|
|
300
|
-
ordered_list.append_target member_2
|
|
301
|
-
|
|
302
|
-
ordered_list.delete_at(3)
|
|
303
|
-
ordered_list.delete_at(nil)
|
|
304
|
-
|
|
305
|
-
expect(ordered_list.map(&:target)).to eq [member, member, member_2]
|
|
306
|
-
end
|
|
307
|
-
end
|
|
308
|
-
|
|
309
|
-
describe "#to_graph" do
|
|
310
|
-
it "creates a good graph" do
|
|
311
|
-
member = instance_double(ActiveFedora::Base, id: '123/456')
|
|
312
|
-
owner = instance_double(ActiveFedora::Base, uri: RDF::URI("http://owner.org"))
|
|
313
|
-
ordered_list.append_target member
|
|
314
|
-
ordered_list.append_target member, proxy_in: owner
|
|
315
|
-
|
|
316
|
-
graph = ordered_list.to_graph
|
|
317
|
-
|
|
318
|
-
expect(graph.statements.to_a.length).to eq 5
|
|
319
|
-
expect(graph.subjects.to_a).to contain_exactly(*ordered_list.to_a.map(&:rdf_subject))
|
|
320
|
-
expect(graph.query([nil, RDF::Vocab::ORE.proxyFor, nil]).to_a.last.object).to be_kind_of RDF::URI
|
|
321
|
-
end
|
|
322
|
-
end
|
|
323
|
-
|
|
324
|
-
describe "#changes_committed!" do
|
|
325
|
-
it "sets changed back to false" do
|
|
326
|
-
member = instance_double(ActiveFedora::Base, uri: RDF::URI("http://test.org"))
|
|
327
|
-
ordered_list.append_target member
|
|
328
|
-
expect(ordered_list).to be_changed
|
|
329
|
-
|
|
330
|
-
ordered_list.changes_committed!
|
|
331
|
-
|
|
332
|
-
expect(ordered_list).not_to be_changed
|
|
333
|
-
end
|
|
334
|
-
end
|
|
335
|
-
end
|