rof 0.0.1.pre → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/.travis.yml +12 -2
- data/Gemfile +1 -0
- data/README.md +87 -0
- data/bin/.ruby-version +1 -0
- data/bin/csv_to_rof +26 -0
- data/bin/fedora_to_rof +57 -0
- data/bin/osf_to_rof +40 -0
- data/bin/rof +78 -0
- data/bulk-ingest.md +242 -0
- data/labels.md +111 -0
- data/lib/rof.rb +20 -1
- data/lib/rof/access.rb +57 -0
- data/lib/rof/cli.rb +122 -0
- data/lib/rof/collection.rb +109 -0
- data/lib/rof/compare_rof.rb +92 -0
- data/lib/rof/filters/bendo.rb +33 -0
- data/lib/rof/filters/date_stamp.rb +36 -0
- data/lib/rof/filters/file_to_url.rb +27 -0
- data/lib/rof/filters/label.rb +153 -0
- data/lib/rof/filters/work.rb +111 -0
- data/lib/rof/get_from_fedora.rb +196 -0
- data/lib/rof/ingest.rb +204 -0
- data/lib/rof/ingesters/rels_ext_ingester.rb +78 -0
- data/lib/rof/ingesters/rights_metadata_ingester.rb +68 -0
- data/lib/rof/osf_context.rb +19 -0
- data/lib/rof/osf_to_rof.rb +122 -0
- data/lib/rof/rdf_context.rb +36 -0
- data/lib/rof/translate_csv.rb +112 -0
- data/lib/rof/utility.rb +84 -0
- data/lib/rof/version.rb +2 -2
- data/rof.gemspec +17 -0
- data/spec/fixtures/a.json +4 -0
- data/spec/fixtures/label.json +20 -0
- data/spec/fixtures/osf/b6psa.tar.gz +0 -0
- data/spec/fixtures/rof/dev0012829m.rof +45 -0
- data/spec/fixtures/vcr_tests/fedora_to_rof1.yml +5274 -0
- data/spec/fixtures/vecnet-citation.json +73 -0
- data/spec/lib/rof/access_spec.rb +36 -0
- data/spec/lib/rof/cli_spec.rb +66 -0
- data/spec/lib/rof/collection_spec.rb +90 -0
- data/spec/lib/rof/compare_rof_spec.rb +263 -0
- data/spec/lib/rof/filters/date_stamp_spec.rb +90 -0
- data/spec/lib/rof/filters/file_to_url_spec.rb +70 -0
- data/spec/lib/rof/filters/label_spec.rb +94 -0
- data/spec/lib/rof/filters/work_spec.rb +87 -0
- data/spec/lib/rof/ingest_spec.rb +117 -0
- data/spec/lib/rof/ingesters/rels_ext_ingester_spec.rb +62 -0
- data/spec/lib/rof/ingesters/rights_metadata_ingester_spec.rb +114 -0
- data/spec/lib/rof/osf_to_rof_spec.rb +76 -0
- data/spec/lib/rof/translate_csv_spec.rb +109 -0
- data/spec/lib/rof/utility_spec.rb +64 -0
- data/spec/lib/rof_spec.rb +14 -0
- data/spec/spec_helper.rb +11 -11
- metadata +283 -18
@@ -0,0 +1,73 @@
|
|
1
|
+
[{
|
2
|
+
"type" : "fobject",
|
3
|
+
"pid" : "vecnet:d217qs82g",
|
4
|
+
"af-model" : "Citation",
|
5
|
+
"rights" : {
|
6
|
+
"read-groups" : ["public"],
|
7
|
+
"edit" : ["vecnet_batchuser"]
|
8
|
+
},
|
9
|
+
"metadata" : {
|
10
|
+
"@context" : {
|
11
|
+
"dc" : "http://purl.org/dc/terms/",
|
12
|
+
"rdfs" : "http://www.w3.org/2000/01/rdf-schema#"
|
13
|
+
},
|
14
|
+
"dc:title" : "Molecular systematics and insecticide resistance in the major African malaria vector Anopheles funestus",
|
15
|
+
"dc:creator" : ["Coetzee, M.", "Koekemoer, L. L."],
|
16
|
+
"dc:identifier" : ["doi:10.1146/annurev-ento-120811-153628", "issn:1545-4487 (Electronic)", "issn:0066-4170 (Linking)", "23317045"],
|
17
|
+
"dc:description" : "Anopheles funestus is one of three major African vectors of malaria. Its distribution extends over much of the tropics and subtropics wherever suitable swampy breeding habitats are present. As with members of the Anopheles gambiae complex, An. funestus shows marked genetic heterogeneity across its range. Currently, two unnamed species are recognized in the group, with molecular and cytogenetic data indicating that more may be present. The control of malaria vectors in Africa has received increased attention in the past decade with the scaling up of insecticide-treated bed nets and indoor residual house spraying. Also in the past decade, the frequency of insecticide-resistant mosquitoes has increased exponentially. Whether this increase is in response to vector control initiatives or because of insecticide use in agriculture is debatable. In this article we examine the progress made on the systematics of the An. funestus group and review research on insecticide resistance and its mechanisms.",
|
18
|
+
"dc:language" : "eng",
|
19
|
+
"dc:type" : "Article",
|
20
|
+
"dc:source" : "Annual review of entomology",
|
21
|
+
"dc:references" : "Molecu2013",
|
22
|
+
"dc:bibliographicCitation" : "Annu Rev Entomol 58, 393-412. (2013)",
|
23
|
+
"rdfs:seeAlso" : "http://www.ncbi.nlm.nih.gov/pubmed/23317045",
|
24
|
+
"dc:created" : "2013",
|
25
|
+
"dc:modified" : {
|
26
|
+
"@value":"2014-03-17Z",
|
27
|
+
"@type":"http://www.w3.org/2001/XMLSchema#date"
|
28
|
+
},
|
29
|
+
"rdfs:domain" : "Citation"
|
30
|
+
},
|
31
|
+
"properties-meta" : {
|
32
|
+
"mime-type" : "text/xml"
|
33
|
+
},
|
34
|
+
"properties" : "<fields><depositor>vecnet_batchuser</depositor></fields>"
|
35
|
+
},
|
36
|
+
{
|
37
|
+
"type" : "fobject",
|
38
|
+
"pid" : "vecnet:h415pf50x",
|
39
|
+
"af-model" : "CitationFile",
|
40
|
+
"rights" : {
|
41
|
+
"read-groups" : ["registered"],
|
42
|
+
"edit" : ["vecnet_batchuser"]
|
43
|
+
},
|
44
|
+
"metadata" : {
|
45
|
+
"@context" : {
|
46
|
+
"dc" : "http://purl.org/dc/terms/",
|
47
|
+
"rdfs" : "http://www.w3.org/2000/01/rdf-schema#"
|
48
|
+
},
|
49
|
+
"dc:type" : "CitationFile",
|
50
|
+
"dc:dateSubmitted" : {
|
51
|
+
"@value" : "2014-03-17Z",
|
52
|
+
"@type" : "http://www.w3.org/2001/XMLSchema#date"
|
53
|
+
},
|
54
|
+
"dc:modified" : {
|
55
|
+
"@value" : "2014-03-17Z",
|
56
|
+
"@type" : "http://www.w3.org/2001/XMLSchema#date"
|
57
|
+
},
|
58
|
+
"dc:creator" : [ "Vecnet Batchuser", "Maureen Coetzee and Lizette L. Koekemoer" ],
|
59
|
+
"dc:title" : "Molecular Systematics and Insecticide Resistance in the Major African Malaria Vector Anopheles funestus"
|
60
|
+
},
|
61
|
+
"rels-ext" : {
|
62
|
+
"isPartOf" : ["vecnet:d217qs82g"]
|
63
|
+
},
|
64
|
+
"properties" : "<fields><depositor>vecnet_batchuser</depositor></fields>",
|
65
|
+
"properties-meta" : {
|
66
|
+
"mime-type": "text/xml"
|
67
|
+
},
|
68
|
+
"content-meta" : {
|
69
|
+
"mime-type": "application/pdf",
|
70
|
+
"label" : "5772.pdf"
|
71
|
+
},
|
72
|
+
"content-file" : "5772.pdf"
|
73
|
+
}]
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module ROF
|
4
|
+
describe "Access" do
|
5
|
+
it "decodes public restricted private" do
|
6
|
+
s = Access.decode("public", "user1")
|
7
|
+
expect(s).to eq({"read-groups" => ["public"], "edit" => ["user1"]})
|
8
|
+
|
9
|
+
s = Access.decode("restricted", "user1")
|
10
|
+
expect(s).to eq({"read-groups" => ["registered"], "edit" => ["user1"]})
|
11
|
+
|
12
|
+
s = Access.decode("private", "user1")
|
13
|
+
expect(s).to eq({"edit" => ["user1"]})
|
14
|
+
end
|
15
|
+
|
16
|
+
it "handles embargos" do
|
17
|
+
s = Access.decode("embargo=2014-12-25", "user1")
|
18
|
+
expect(s).to eq({"embargo-date" => "2014-12-25"})
|
19
|
+
end
|
20
|
+
|
21
|
+
it "handles multiple clauses" do
|
22
|
+
s = Access.decode("public;editgroup=group1,group2;edit=user2", "user1")
|
23
|
+
expect(s).to eq({"read-groups" => ["public"], "edit" => ["user1","user2"], "edit-groups" => ["group1","group2"]})
|
24
|
+
end
|
25
|
+
|
26
|
+
it "removes duplicates" do
|
27
|
+
s = Access.decode("edit=user1,user2;edit=user1")
|
28
|
+
expect(s).to eq({"edit" => ["user1", "user2"]})
|
29
|
+
end
|
30
|
+
|
31
|
+
it "encodes" do
|
32
|
+
s = Access.encode({"read-groups" => ["public"], "edit" => ["user1","user2"], "edit-groups" => ["group1","group2"]})
|
33
|
+
expect(s).to eq("readgroup=public;edit=user1,user2;editgroup=group1,group2")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'stringio'
|
3
|
+
|
4
|
+
describe ROF::CLI do
|
5
|
+
it "ingests an array of items" do
|
6
|
+
items = [{"pid" => "test:1",
|
7
|
+
"type" => "fobject"},
|
8
|
+
{"pid" => "test:2",
|
9
|
+
"type" => "fobject"}]
|
10
|
+
output = StringIO.new
|
11
|
+
ROF::CLI.ingest_array(items, [], output)
|
12
|
+
expect(output.string).to match(/1\. Verifying test:1 \.\.\.ok\..*\n2\. Verifying test:2 \.\.\.ok\./)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "retrieves a fedora object and converts it to ROF" do
|
16
|
+
expected_output = {
|
17
|
+
"pid" => "und:dev0012829m",
|
18
|
+
"type" => "fobject",
|
19
|
+
"af-model" => "GenericFile",
|
20
|
+
"rels-ext" => {
|
21
|
+
"@context"=> ROF::RelsExtRefContext,
|
22
|
+
"@id" => "und:dev0012829m",
|
23
|
+
"isPartOf"=> "und:dev00128288"
|
24
|
+
},
|
25
|
+
"rights" => {
|
26
|
+
"read-groups" => ["registered"],
|
27
|
+
"edit" => ["dbrower"]
|
28
|
+
},
|
29
|
+
"properties" => "<fields>\n<depositor>batch_ingest</depositor>\n<owner>dbrower</owner>\n</fields>\n",
|
30
|
+
"properties-meta" => {"mime-type" => "text/xml"},
|
31
|
+
"metadata" => {
|
32
|
+
"@context"=> {
|
33
|
+
"bibo"=>"http://purl.org/ontology/bibo/",
|
34
|
+
"dc"=>"http://purl.org/dc/terms/",
|
35
|
+
"ebucore"=>"http://www.ebu.ch/metadata/ontologies/ebucore/ebucore#",
|
36
|
+
"foaf"=>"http://xmlns.com/foaf/0.1/",
|
37
|
+
"mrel"=>"http://id.loc.gov/vocabulary/relators/",
|
38
|
+
"nd"=>"https://library.nd.edu/ns/terms/",
|
39
|
+
"rdfs"=>"http://www.w3.org/2000/01/rdf-schema#",
|
40
|
+
"vracore"=>"http://purl.org/vra/",
|
41
|
+
"dc:dateSubmitted" => {"@type" => "http://www.w3.org/2001/XMLSchema#date"},
|
42
|
+
"dc:created"=>{"@type"=>"http://www.w3.org/2001/XMLSchema#date"},
|
43
|
+
"dc:modified" => {"@type" => "http://www.w3.org/2001/XMLSchema#date"}
|
44
|
+
},
|
45
|
+
"@id" => "info:fedora/und:dev0012829m",
|
46
|
+
"dc:dateSubmitted" => "2016-04-12Z",
|
47
|
+
"dc:modified" => "2016-04-12Z",
|
48
|
+
"dc:title" => "bonnie+chauncey"
|
49
|
+
},
|
50
|
+
"bendo-item" => "dev0012826k",
|
51
|
+
"characterization-meta" => {"mime-type"=>"text/xml"},
|
52
|
+
"content-meta" => {"label"=>"bonnie+chauncey", "mime-type"=>"application/octet-stream", "URL"=>"http://libvirt9.library.nd.edu:14000/item/dev0012826k/bonnie+chauncey"},
|
53
|
+
"thumbnail-meta" => {"label"=>"File Datastream", "mime-type"=>"image/png"},
|
54
|
+
}
|
55
|
+
pid = 'und:dev0012829m'
|
56
|
+
config = {}
|
57
|
+
fedora = {}
|
58
|
+
fedora[:url] = 'http://localhost:8080/fedora'
|
59
|
+
fedora[:user] = 'fedoraAdmin'
|
60
|
+
fedora[:password] = 'fedoraAdmin'
|
61
|
+
VCR.use_cassette("fedora_to_rof1") do
|
62
|
+
fedora_data = ROF::FedoraToRof.GetFromFedora(pid, fedora, config)
|
63
|
+
expect(fedora_data).to eq(expected_output)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module ROF
|
4
|
+
RSpec.describe Collection do
|
5
|
+
let!(:util) { ROF::Utility.new }
|
6
|
+
let!(:testobject1) { { 'owner' => 'rtillman', 'pid' => '$(first)'} }
|
7
|
+
let!(:testobject2) { { 'owner' => 'rtillman', 'rights' => { 'read-groups' => [ 'public' ], 'edit' => [ 'edit']}} }
|
8
|
+
let!(:testobject3) { { 'owner' => 'rtillman', "metadata" => { "dc:title" => "Extensive Reading in Japanese"} } }
|
9
|
+
let!(:testobject4) { { 'owner' => 'rtillman', "files" => [ '/it_is_not_there'] } }
|
10
|
+
|
11
|
+
describe 'set_required_fields' do
|
12
|
+
let(:obj) { ROF::Collection.set_required_fields( testobject1, util) }
|
13
|
+
let(:obj_rights) { ROF::Collection.set_required_fields( testobject2, util) }
|
14
|
+
let(:obj_metadata) { ROF::Collection.set_required_fields( testobject3, util) }
|
15
|
+
context 'type' do
|
16
|
+
subject { obj['type'] }
|
17
|
+
it { is_expected.to eq("fobject") }
|
18
|
+
end
|
19
|
+
context 'af-model' do
|
20
|
+
subject { obj['af-model'] }
|
21
|
+
it { is_expected.to eq("Collection") }
|
22
|
+
end
|
23
|
+
context 'rights' do
|
24
|
+
subject { obj_rights['rights'] }
|
25
|
+
it { is_expected.to eq({"read-groups"=>["public"], "edit"=>["edit"]}) }
|
26
|
+
end
|
27
|
+
context 'metadata' do
|
28
|
+
subject { obj_metadata['metadata'] }
|
29
|
+
it { is_expected.to eq({"dc:title"=>"Extensive Reading in Japanese"}) }
|
30
|
+
end
|
31
|
+
context 'pid' do
|
32
|
+
subject { obj['pid'] }
|
33
|
+
it { is_expected.to eq("$(first)") }
|
34
|
+
end
|
35
|
+
context 'properties' do
|
36
|
+
subject { obj['properties'] }
|
37
|
+
it { is_expected.to eq "<fields><depositor>batch_ingest</depositor>\n<owner>rtillman</owner>\n</fields>\n" }
|
38
|
+
end
|
39
|
+
context 'properties--meta' do
|
40
|
+
subject { obj['properties-meta'] }
|
41
|
+
it { is_expected.to eq({ 'mime-type' => 'text/xml' }) }
|
42
|
+
end
|
43
|
+
context 'rels-ext' do
|
44
|
+
subject { obj['rels-ext'] }
|
45
|
+
it { is_expected.to eq({}) }
|
46
|
+
end
|
47
|
+
end
|
48
|
+
describe 'mk_dest_img_name' do
|
49
|
+
context 'with file extension' do
|
50
|
+
subject { ROF::Collection.mk_dest_img_name('/opt/data/und:12345/flashcrowd.jpg', '-thumb') }
|
51
|
+
it { is_expected.to eq("/opt/data/und:12345/flashcrowd-thumb.jpg") }
|
52
|
+
end
|
53
|
+
context 'without file extension' do
|
54
|
+
subject { ROF::Collection.mk_dest_img_name('/opt/data/und:12345/flashcrowd', '-launch') }
|
55
|
+
it { is_expected.to eq("/opt/data/und:12345/flashcrowd-launch") }
|
56
|
+
end
|
57
|
+
end
|
58
|
+
describe 'make_images' do
|
59
|
+
it 'raises error with non-existent file' do
|
60
|
+
expect { ROF::Collection.make_images({}, testobject4, util)}.to raise_error(ROF::Collection::NoFile)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
describe 'find_file_mime' do
|
64
|
+
context 'jpg' do
|
65
|
+
subject { ROF::Collection.find_file_mime('/opt/data/und:12345/flashcrowd.jpg') }
|
66
|
+
it { is_expected.to eq("image/jpeg") }
|
67
|
+
end
|
68
|
+
context 'JPG' do
|
69
|
+
subject { ROF::Collection.find_file_mime('und:12345/flashcrowd.JPG') }
|
70
|
+
it { is_expected.to eq("image/jpeg") }
|
71
|
+
end
|
72
|
+
context 'GIF' do
|
73
|
+
subject { ROF::Collection.find_file_mime('und:12345/flashcrowd.GIF') }
|
74
|
+
it { is_expected.to eq("image/gif") }
|
75
|
+
end
|
76
|
+
context 'gif' do
|
77
|
+
subject { ROF::Collection.find_file_mime('/und:12345/flashcrowd.gif') }
|
78
|
+
it { is_expected.to eq("image/gif") }
|
79
|
+
end
|
80
|
+
context 'png' do
|
81
|
+
subject { ROF::Collection.find_file_mime('death_of_middle_class.png') }
|
82
|
+
it { is_expected.to eq("image/png") }
|
83
|
+
end
|
84
|
+
context 'PNG' do
|
85
|
+
subject { ROF::Collection.find_file_mime('death_of_middle_class.PNG') }
|
86
|
+
it { is_expected.to eq("image/png") }
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,263 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module ROF
|
4
|
+
describe "Compare ROF" do
|
5
|
+
it "compares rights metadata different read-groups" do
|
6
|
+
fedora = { "rights"=> { "read-groups"=> ["public"], "edit"=> ["rtillman"]}}
|
7
|
+
bendo = { "rights"=> {"read-groups"=> ["private"], "edit"=> ["rtillman"]}}
|
8
|
+
test_return = CompareRof.compare_rights(fedora, bendo, {})
|
9
|
+
expect(test_return).to eq(1)
|
10
|
+
end
|
11
|
+
|
12
|
+
it "compares rights metadata same read-groups" do
|
13
|
+
fedora = { "rights"=> { "read-groups"=> ["public"], "edit"=> ["rtillman"]}}
|
14
|
+
bendo = { "rights"=> {"read-groups"=> ["public"], "edit"=> ["rtillman"]}}
|
15
|
+
test_return = CompareRof.compare_rights(fedora, bendo, {})
|
16
|
+
expect(test_return).to eq(0)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "compares rights metadata with different groups" do
|
20
|
+
fedora = { "rights"=> { "read-groups"=> ["public"], "edit"=> ["rtillman"]}}
|
21
|
+
bendo = { "rights"=> {"edit"=> ["rtillman"]}}
|
22
|
+
test_return = CompareRof.compare_rights(fedora, bendo, {})
|
23
|
+
expect(test_return).to eq(1)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "compares metadata (same) " do
|
27
|
+
fedora = { "metadata"=> { "@context"=> {
|
28
|
+
"dc"=> "http://purl.org/dc/terms/",
|
29
|
+
"foaf"=> "http://xmlns.com/foaf/0.1/",
|
30
|
+
"rdfs"=> "http://www.w3.org/2000/01/rdf-schema#",
|
31
|
+
"dc:dateSubmitted"=> {
|
32
|
+
"@type"=> "http://www.w3.org/2001/XMLSchema#date"
|
33
|
+
},
|
34
|
+
"dc:modified"=> {
|
35
|
+
"@type"=> "http://www.w3.org/2001/XMLSchema#date"
|
36
|
+
}
|
37
|
+
},
|
38
|
+
"dc:dateSubmitted"=> "2016-07-22Z",
|
39
|
+
"dc:modified"=> "2016-07-22Z",
|
40
|
+
"dc:title"=> "carmella.jpeg"
|
41
|
+
}}
|
42
|
+
bendo = { "metadata"=> {
|
43
|
+
"dc:dateSubmitted"=> "2016-07-22Z",
|
44
|
+
"dc:modified"=> "2016-07-22Z",
|
45
|
+
"dc:title"=> "carmella.jpeg"
|
46
|
+
}}
|
47
|
+
test_return = CompareRof.compare_metadata(fedora, bendo)
|
48
|
+
expect(test_return).to eq(0)
|
49
|
+
end
|
50
|
+
|
51
|
+
it "compares metadata (different) " do
|
52
|
+
fedora = { "metadata"=> { "@context"=> {
|
53
|
+
"dc"=> "http://purl.org/dc/terms/",
|
54
|
+
"foaf"=> "http://xmlns.com/foaf/0.1/",
|
55
|
+
"rdfs"=> "http://www.w3.org/2000/01/rdf-schema#",
|
56
|
+
"dc:dateSubmitted"=> {
|
57
|
+
"@type"=> "http://www.w3.org/2001/XMLSchema#date"
|
58
|
+
},
|
59
|
+
"dc:modified"=> {
|
60
|
+
"@type"=> "http://www.w3.org/2001/XMLSchema#date"
|
61
|
+
}
|
62
|
+
},
|
63
|
+
"dc:dateSubmitted"=> "2016-07-22Z",
|
64
|
+
"dc:modified"=> "2016-07-22Z",
|
65
|
+
"dc:title"=> "carmella.jpeg"
|
66
|
+
}}
|
67
|
+
bendo = { "metadata"=> {
|
68
|
+
"dc:dateSubmitted"=> "2016-07-22Z",
|
69
|
+
"dc:modified"=> "2016-07-23Z",
|
70
|
+
"dc:title"=> "carmella.jpeg"
|
71
|
+
}}
|
72
|
+
test_return = CompareRof.compare_metadata(fedora, bendo)
|
73
|
+
expect(test_return).to eq(1)
|
74
|
+
end
|
75
|
+
|
76
|
+
it "compares metadata (different types) " do
|
77
|
+
# dateSubmitted is a string literal in one and a date type in the other
|
78
|
+
fedora = { "metadata"=> { "@context"=> {
|
79
|
+
"dc"=> "http://purl.org/dc/terms/",
|
80
|
+
"foaf"=> "http://xmlns.com/foaf/0.1/",
|
81
|
+
"rdfs"=> "http://www.w3.org/2000/01/rdf-schema#",
|
82
|
+
"dc:dateSubmitted"=> {
|
83
|
+
"@type"=> "http://www.w3.org/2001/XMLSchema#date"
|
84
|
+
},
|
85
|
+
"dc:modified"=> {
|
86
|
+
"@type"=> "http://www.w3.org/2001/XMLSchema#date"
|
87
|
+
}
|
88
|
+
},
|
89
|
+
"dc:dateSubmitted"=> "2016-07-22Z",
|
90
|
+
"dc:modified"=> "2016-07-22Z",
|
91
|
+
"dc:title"=> "carmella.jpeg"
|
92
|
+
}}
|
93
|
+
bendo = { "metadata"=> {
|
94
|
+
"@context" => {
|
95
|
+
"dc"=> "http://purl.org/dc/terms/",
|
96
|
+
},
|
97
|
+
"dc:dateSubmitted"=> "2016-07-22Z",
|
98
|
+
"dc:modified"=> "2016-07-22Z",
|
99
|
+
"dc:title"=> "carmella.jpeg"
|
100
|
+
}}
|
101
|
+
test_return = CompareRof.compare_metadata(fedora, bendo)
|
102
|
+
expect(test_return).to eq(1)
|
103
|
+
end
|
104
|
+
|
105
|
+
it "compares rels-ext (same) " do
|
106
|
+
fedora = { "rels-ext"=> {
|
107
|
+
"@context"=> {
|
108
|
+
"@vocab"=> "info:fedora/fedora-system:def/relations-external#",
|
109
|
+
"fedora-model"=> "info:fedora/fedora-system:def/model#",
|
110
|
+
"hydra"=> "http://projecthydra.org/ns/relations#",
|
111
|
+
"hasModel"=> {
|
112
|
+
"@id"=> "fedora-model:hasModel",
|
113
|
+
"@type"=> "@id"
|
114
|
+
},
|
115
|
+
"hasEditor"=> {
|
116
|
+
"@id"=> "hydra:hasEditor",
|
117
|
+
"@type"=> "@id"
|
118
|
+
},
|
119
|
+
"hasEditorGroup"=> {
|
120
|
+
"@id"=> "hydra:hasEditorGroup",
|
121
|
+
"@type"=> "@id"
|
122
|
+
},
|
123
|
+
"isPartOf"=> {
|
124
|
+
"@type"=> "@id"
|
125
|
+
},
|
126
|
+
"isEditorOf"=> {
|
127
|
+
"@id"=> "hydra:isEditorOf",
|
128
|
+
"@type"=> "@id"
|
129
|
+
},
|
130
|
+
"hasMember"=> {
|
131
|
+
"@type"=> "@id"
|
132
|
+
}
|
133
|
+
},
|
134
|
+
"isPartOf"=> [
|
135
|
+
"und:dev00149x01"
|
136
|
+
]
|
137
|
+
}}
|
138
|
+
bendo = { "rels-ext"=> {
|
139
|
+
"isPartOf"=> [
|
140
|
+
"und:dev00149x01"
|
141
|
+
]
|
142
|
+
}}
|
143
|
+
test_return = CompareRof.compare_rels_ext(fedora, bendo)
|
144
|
+
expect(test_return).to eq(0)
|
145
|
+
end
|
146
|
+
|
147
|
+
it "compares rels-ext (different) " do
|
148
|
+
fedora = { "rels-ext"=> {
|
149
|
+
"@context"=> {
|
150
|
+
"@vocab"=> "info:fedora/fedora-system:def/relations-external#",
|
151
|
+
"fedora-model"=> "info:fedora/fedora-system:def/model#",
|
152
|
+
"hydra"=> "http://projecthydra.org/ns/relations#",
|
153
|
+
"hasModel"=> {
|
154
|
+
"@id"=> "fedora-model:hasModel",
|
155
|
+
"@type"=> "@id"
|
156
|
+
},
|
157
|
+
"hasEditor"=> {
|
158
|
+
"@id"=> "hydra:hasEditor",
|
159
|
+
"@type"=> "@id"
|
160
|
+
},
|
161
|
+
"hasEditorGroup"=> {
|
162
|
+
"@id"=> "hydra:hasEditorGroup",
|
163
|
+
"@type"=> "@id"
|
164
|
+
},
|
165
|
+
"isPartOf"=> {
|
166
|
+
"@type"=> "@id"
|
167
|
+
},
|
168
|
+
"isEditorOf"=> {
|
169
|
+
"@id"=> "hydra:isEditorOf",
|
170
|
+
"@type"=> "@id"
|
171
|
+
},
|
172
|
+
"hasMember"=> {
|
173
|
+
"@type"=> "@id"
|
174
|
+
}
|
175
|
+
},
|
176
|
+
"isPartOf"=> [
|
177
|
+
"und:dev00149x01"
|
178
|
+
]
|
179
|
+
}}
|
180
|
+
bendo = { "rels-ext"=> {
|
181
|
+
"isPartOf"=> [
|
182
|
+
"und:dev00148x01"
|
183
|
+
]
|
184
|
+
}}
|
185
|
+
test_return = CompareRof.compare_rels_ext(fedora, bendo)
|
186
|
+
expect(test_return).to eq(1)
|
187
|
+
end
|
188
|
+
|
189
|
+
it "compares everything else (same) " do
|
190
|
+
fedora = {
|
191
|
+
"pid"=> "und:dev00149w5f",
|
192
|
+
"type"=> "fobject",
|
193
|
+
"af-model"=> "Collection",
|
194
|
+
"properties-meta"=> {
|
195
|
+
"mime-type"=> "text/xml"
|
196
|
+
},
|
197
|
+
"properties"=> "<fields><depositor>batch_ingest</depositor>\n\t\t\t\t<owner>rtillman</owner></fields>\n",
|
198
|
+
"content-meta"=> {
|
199
|
+
"mime-type"=> "image/jpeg"
|
200
|
+
},
|
201
|
+
"thumbnail-meta"=> {
|
202
|
+
"mime-type"=> "image/jpeg"
|
203
|
+
},
|
204
|
+
"bendo-item"=> "dev00149w5f"
|
205
|
+
}
|
206
|
+
bendo = {
|
207
|
+
"properties-meta"=> {
|
208
|
+
"mime-type"=> "text/xml"
|
209
|
+
},
|
210
|
+
"properties"=> "<fields><depositor>batch_ingest</depositor>\n\t\t\t\t<owner>rtillman</owner></fields>\n",
|
211
|
+
"content-meta"=> {
|
212
|
+
"mime-type"=> "image/jpeg"
|
213
|
+
},
|
214
|
+
"af-model"=> "Collection",
|
215
|
+
"pid"=> "und:dev00149w5f",
|
216
|
+
"thumbnail-meta"=> {
|
217
|
+
"mime-type"=> "image/jpeg"
|
218
|
+
},
|
219
|
+
"type"=> "fobject",
|
220
|
+
"bendo-item"=> "dev00149w5f"
|
221
|
+
}
|
222
|
+
test_return = CompareRof.compare_everything_else(fedora, bendo, {})
|
223
|
+
expect(test_return).to eq(0)
|
224
|
+
end
|
225
|
+
|
226
|
+
it "compares everything else (differenet) " do
|
227
|
+
fedora = {
|
228
|
+
"pid"=> "und:dev00149w5f",
|
229
|
+
"type"=> "fobject",
|
230
|
+
"af-model"=> "Collection",
|
231
|
+
"properties-meta"=> {
|
232
|
+
"mime-type"=> "text/xml"
|
233
|
+
},
|
234
|
+
"properties"=> "<fields><depositor>batch_ingest</depositor>\n\t\t\t\t<owner>msuhovec</owner></fields>\n",
|
235
|
+
"content-meta"=> {
|
236
|
+
"mime-type"=> "image/jpeg"
|
237
|
+
},
|
238
|
+
"thumbnail-meta"=> {
|
239
|
+
"mime-type"=> "image/jpeg"
|
240
|
+
},
|
241
|
+
"bendo-item"=> "dev00149w5f"
|
242
|
+
}
|
243
|
+
bendo = {
|
244
|
+
"properties-meta"=> {
|
245
|
+
"mime-type"=> "text/xml"
|
246
|
+
},
|
247
|
+
"properties"=> "<fields><depositor>batch_ingest</depositor>\n\t\t\t\t<owner>rtillman</owner></fields>\n",
|
248
|
+
"content-meta"=> {
|
249
|
+
"mime-type"=> "image/jpeg"
|
250
|
+
},
|
251
|
+
"af-model"=> "Collection",
|
252
|
+
"pid"=> "und:dev00149w5f",
|
253
|
+
"thumbnail-meta"=> {
|
254
|
+
"mime-type"=> "image/jpeg"
|
255
|
+
},
|
256
|
+
"type"=> "fobject",
|
257
|
+
"bendo-item"=> "dev00149w5f"
|
258
|
+
}
|
259
|
+
test_return = CompareRof.compare_everything_else(fedora, bendo, {})
|
260
|
+
expect(test_return).to eq(1)
|
261
|
+
end
|
262
|
+
end
|
263
|
+
end
|