ddr-models 2.11.0 → 3.0.0.alpha.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +0 -1
- data/.travis.yml +7 -6
- data/Gemfile +2 -3
- data/Rakefile +5 -5
- data/app/controllers/users/sessions_controller.rb +5 -0
- data/app/helpers/models_helper.rb +7 -0
- data/app/models/attachment.rb +3 -5
- data/app/models/collection.rb +12 -79
- data/app/models/component.rb +8 -67
- data/app/models/item.rb +8 -73
- data/app/models/target.rb +6 -5
- data/config/initializers/active_fedora_base.rb +11 -30
- data/config/initializers/{active_fedora_datastream.rb → active_fedora_file.rb} +1 -1
- data/config/initializers/devise.rb +2 -3
- data/config/initializers/subscriptions.rb +2 -19
- data/ddr-models.gemspec +10 -14
- data/lib/ddr/actions/fixity_check.rb +1 -1
- data/lib/ddr/actions/virus_check.rb +17 -10
- data/lib/ddr/auth.rb +6 -38
- data/lib/ddr/auth/ability.rb +1 -5
- data/lib/ddr/auth/ability_definitions/collection_ability_definitions.rb +0 -16
- data/lib/ddr/auth/ability_definitions/datastream_ability_definitions.rb +10 -4
- data/lib/ddr/auth/ability_definitions/role_based_ability_definitions.rb +16 -9
- data/lib/ddr/auth/ability_factory.rb +25 -2
- data/lib/ddr/auth/abstract_ability.rb +1 -2
- data/lib/ddr/auth/auth_context.rb +0 -18
- data/lib/ddr/auth/auth_context_factory.rb +2 -0
- data/lib/ddr/auth/group.rb +0 -6
- data/lib/ddr/auth/grouper_gateway.rb +0 -24
- data/lib/ddr/auth/permissions.rb +1 -12
- data/lib/ddr/auth/role_based_access_controls_enforcement.rb +5 -5
- data/lib/ddr/auth/roles.rb +1 -11
- data/lib/ddr/auth/roles/role_set.rb +0 -7
- data/lib/ddr/auth/roles/roles_datastream.rb +9 -0
- data/lib/ddr/contacts.rb +25 -0
- data/lib/ddr/datastreams.rb +10 -28
- data/lib/ddr/datastreams/datastream_behavior.rb +30 -100
- data/lib/ddr/datastreams/descriptive_metadata_datastream.rb +28 -31
- data/lib/ddr/datastreams/fits_datastream.rb +9 -22
- data/lib/ddr/datastreams/metadata_datastream.rb +17 -31
- data/lib/ddr/derivatives.rb +13 -16
- data/lib/ddr/derivatives/derivative.rb +68 -0
- data/lib/ddr/derivatives/{generator.rb → generators/generator.rb} +11 -7
- data/lib/ddr/derivatives/generators/png_generator.rb +23 -0
- data/lib/ddr/derivatives/generators/ptif_generator.rb +56 -0
- data/lib/ddr/derivatives/multires_image.rb +59 -0
- data/lib/ddr/derivatives/thumbnail.rb +36 -0
- data/lib/ddr/events.rb +0 -1
- data/lib/ddr/events/deletion_event.rb +9 -5
- data/lib/ddr/events/event.rb +8 -13
- data/lib/ddr/events/fixity_check_event.rb +0 -6
- data/lib/ddr/events/ingestion_event.rb +9 -5
- data/lib/ddr/events/update_event.rb +4 -17
- data/lib/ddr/index.rb +4 -4
- data/lib/ddr/index/abstract_query_result.rb +4 -3
- data/lib/ddr/index/connection.rb +9 -28
- data/lib/ddr/index/csv_query_result.rb +32 -47
- data/lib/ddr/index/field.rb +1 -11
- data/lib/ddr/index/fields.rb +16 -99
- data/lib/ddr/index/filter.rb +30 -103
- data/lib/ddr/index/filters.rb +19 -0
- data/lib/ddr/index/query.rb +11 -58
- data/lib/ddr/index/query_builder.rb +36 -147
- data/lib/ddr/index/query_clause.rb +19 -79
- data/lib/ddr/index/query_result.rb +4 -36
- data/lib/ddr/index/query_value.rb +18 -0
- data/lib/ddr/index/response.rb +2 -19
- data/lib/ddr/jobs.rb +12 -0
- data/lib/ddr/jobs/fits_file_characterization.rb +51 -0
- data/lib/ddr/jobs/permanent_id.rb +23 -0
- data/lib/ddr/managers.rb +1 -0
- data/lib/ddr/managers/derivatives_manager.rb +53 -93
- data/lib/ddr/managers/permanent_id_manager.rb +91 -0
- data/lib/ddr/managers/technical_metadata_manager.rb +10 -24
- data/lib/ddr/managers/workflow_manager.rb +10 -29
- data/lib/ddr/models.rb +50 -101
- data/lib/ddr/models/access_controllable.rb +12 -0
- data/lib/ddr/models/admin_set.rb +5 -16
- data/lib/ddr/models/base.rb +45 -165
- data/lib/ddr/models/describable.rb +19 -21
- data/lib/ddr/models/engine.rb +11 -39
- data/lib/ddr/models/error.rb +0 -3
- data/lib/ddr/models/file_management.rb +36 -72
- data/lib/ddr/models/finding_aid.rb +2 -35
- data/lib/ddr/models/fixity_checkable.rb +4 -0
- data/lib/ddr/models/governable.rb +3 -1
- data/lib/ddr/models/has_admin_metadata.rb +82 -56
- data/lib/ddr/models/has_attachments.rb +3 -1
- data/lib/ddr/models/has_children.rb +3 -7
- data/lib/ddr/models/has_content.rb +35 -32
- data/lib/ddr/models/has_multires_image.rb +7 -12
- data/lib/ddr/models/has_struct_metadata.rb +44 -6
- data/lib/ddr/models/has_thumbnail.rb +1 -4
- data/lib/ddr/models/indexing.rb +97 -186
- data/lib/ddr/models/licenses/admin_policy_license.rb +11 -0
- data/lib/ddr/models/licenses/effective_license.rb +9 -0
- data/lib/ddr/models/licenses/inherited_license.rb +9 -0
- data/lib/ddr/models/licenses/license.rb +21 -0
- data/lib/ddr/models/licenses/parent_license.rb +11 -0
- data/lib/ddr/models/metadata/descriptive_metadata.rb +50 -0
- data/lib/ddr/models/metadata/metadata.rb +37 -0
- data/lib/ddr/models/metadata/metadata_mapper.rb +32 -0
- data/lib/ddr/models/metadata/metadata_mappers.rb +18 -0
- data/lib/ddr/models/metadata/metadata_term.rb +24 -0
- data/lib/ddr/models/metadata/metadata_vocabularies.rb +18 -0
- data/lib/ddr/models/metadata/metadata_vocabulary.rb +34 -0
- data/lib/ddr/models/solr_document.rb +24 -156
- data/lib/ddr/models/struct_div.rb +63 -0
- data/lib/ddr/models/structure.rb +39 -175
- data/lib/ddr/models/version.rb +1 -1
- data/lib/ddr/models/year_facet.rb +118 -60
- data/lib/ddr/notifications.rb +12 -10
- data/lib/ddr/utils.rb +15 -28
- data/lib/ddr/vocab.rb +17 -15
- data/lib/ddr/vocab/asset.rb +17 -42
- data/lib/ddr/vocab/contact.rb +7 -5
- data/lib/ddr/vocab/display.rb +8 -6
- data/lib/ddr/vocab/duke_terms.rb +10 -8
- data/lib/ddr/vocab/rdf_vocabulary_parser.rb +39 -37
- data/lib/ddr/vocab/roles.rb +19 -17
- data/lib/ddr/vocab/sources/duketerms.rdf +8 -22
- data/lib/ddr/vocab/vocabulary.rb +26 -26
- data/spec/auth/ability_factory_spec.rb +1 -18
- data/spec/auth/ability_spec.rb +15 -119
- data/spec/auth/effective_permissions_spec.rb +1 -1
- data/spec/auth/effective_roles_spec.rb +1 -1
- data/spec/auth/ldap_gateway_spec.rb +9 -0
- data/spec/contacts/contacts_spec.rb +26 -0
- data/spec/controllers/including_role_based_access_controls_enforcement_spec.rb +5 -5
- data/spec/derivatives/multires_image_spec.rb +48 -0
- data/spec/derivatives/png_generator_spec.rb +8 -13
- data/spec/derivatives/ptif_generator_spec.rb +11 -9
- data/spec/derivatives/thumbnail_spec.rb +48 -0
- data/spec/dummy/config/environments/test.rb +1 -1
- data/spec/dummy/db/schema.rb +23 -25
- data/spec/factories/attachment_factories.rb +2 -2
- data/spec/factories/collection_factories.rb +2 -3
- data/spec/factories/component_factories.rb +2 -2
- data/spec/factories/item_factories.rb +2 -2
- data/spec/factories/structure_factories.rb +2 -8
- data/spec/factories/test_model_factories.rb +12 -4
- data/spec/fixtures/fits/document.xml +44 -42
- data/spec/fixtures/fits/image.xml +41 -42
- data/spec/helpers/models_helper_spec.rb +11 -0
- data/spec/index/filter_spec.rb +30 -208
- data/spec/index/filters_spec.rb +17 -0
- data/spec/index/query_spec.rb +10 -82
- data/spec/jobs/fits_file_characterization_spec.rb +52 -0
- data/spec/managers/derivatives_manager_spec.rb +105 -107
- data/spec/managers/technical_metadata_manager_spec.rb +27 -34
- data/spec/models/active_fedora_base_spec.rb +105 -5
- data/spec/models/active_fedora_datastream_spec.rb +39 -106
- data/spec/models/admin_set_spec.rb +10 -43
- data/spec/models/attachment_spec.rb +2 -3
- data/spec/models/collection_spec.rb +11 -225
- data/spec/models/component_spec.rb +4 -106
- data/spec/models/descriptive_metadata_spec.rb +38 -0
- data/spec/models/effective_license_spec.rb +64 -0
- data/spec/models/events_spec.rb +59 -52
- data/spec/models/file_management_spec.rb +13 -113
- data/spec/models/finding_aid_spec.rb +8 -31
- data/spec/models/has_admin_metadata_spec.rb +122 -131
- data/spec/models/has_children_spec.rb +3 -3
- data/spec/models/has_struct_metadata_spec.rb +37 -50
- data/spec/models/indexing_spec.rb +23 -160
- data/spec/models/item_spec.rb +2 -133
- data/spec/models/license_spec.rb +24 -0
- data/spec/models/solr_document_spec.rb +47 -236
- data/spec/models/struct_div_spec.rb +70 -0
- data/spec/models/structure_spec.rb +11 -89
- data/spec/models/target_spec.rb +2 -4
- data/spec/models/year_facet_spec.rb +23 -50
- data/spec/spec_helper.rb +13 -17
- data/spec/support/ezid_mock_identifier.rb +2 -2
- data/spec/support/shared_examples_for_auth_contexts.rb +0 -33
- data/spec/support/shared_examples_for_ddr_models.rb +94 -142
- data/spec/support/shared_examples_for_describables.rb +36 -31
- data/spec/support/shared_examples_for_governables.rb +2 -3
- data/spec/support/shared_examples_for_has_content.rb +46 -101
- data/spec/support/shared_examples_for_indexing.rb +6 -6
- data/spec/support/shared_examples_for_non_collection_models.rb +1 -32
- data/spec/support/structural_metadata_helper.rb +59 -230
- data/spec/utils_spec.rb +2 -0
- metadata +96 -229
- data/.ruby-version +0 -1
- data/config/initializers/rsolr_monkey_patches.rb +0 -7
- data/config/initializers/rubydora_monkey_patch.rb +0 -11
- data/config/locales/ddr-models.en.yml +0 -81
- data/db/migrate/20161021201011_add_permanent_id_to_events.rb +0 -8
- data/lib/ddr/auth/ability_definitions/admin_set_ability_definitions.rb +0 -9
- data/lib/ddr/auth/ability_definitions/lock_ability_definitions.rb +0 -13
- data/lib/ddr/auth/ability_definitions/publication_ability_definitions.rb +0 -16
- data/lib/ddr/datastreams/administrative_metadata_datastream.rb +0 -75
- data/lib/ddr/datastreams/caption_datastream.rb +0 -5
- data/lib/ddr/datastreams/content_datastream.rb +0 -17
- data/lib/ddr/datastreams/delete_external_files.rb +0 -29
- data/lib/ddr/datastreams/external_file_datastream.rb +0 -80
- data/lib/ddr/datastreams/intermediate_file_datastream.rb +0 -5
- data/lib/ddr/datastreams/multires_image_datastream.rb +0 -5
- data/lib/ddr/datastreams/streamable_media_datastream.rb +0 -5
- data/lib/ddr/derivatives/png_generator.rb +0 -17
- data/lib/ddr/derivatives/ptif_generator.rb +0 -55
- data/lib/ddr/derivatives/update_derivatives.rb +0 -25
- data/lib/ddr/events/deaccession_event.rb +0 -8
- data/lib/ddr/index/field_attribute.rb +0 -22
- data/lib/ddr/index/query_params.rb +0 -40
- data/lib/ddr/index/sort_order.rb +0 -28
- data/lib/ddr/models/cache.rb +0 -20
- data/lib/ddr/models/captionable.rb +0 -37
- data/lib/ddr/models/contact.rb +0 -23
- data/lib/ddr/models/file_characterization.rb +0 -37
- data/lib/ddr/models/has_intermediate_file.rb +0 -41
- data/lib/ddr/models/language.rb +0 -31
- data/lib/ddr/models/media_type.rb +0 -22
- data/lib/ddr/models/permanent_id.rb +0 -240
- data/lib/ddr/models/rights_statement.rb +0 -25
- data/lib/ddr/models/streamable.rb +0 -37
- data/lib/ddr/models/structures/agent.rb +0 -49
- data/lib/ddr/models/structures/component_type_term.rb +0 -29
- data/lib/ddr/models/structures/div.rb +0 -64
- data/lib/ddr/models/structures/f_locat.rb +0 -54
- data/lib/ddr/models/structures/file.rb +0 -52
- data/lib/ddr/models/structures/file_grp.rb +0 -35
- data/lib/ddr/models/structures/file_sec.rb +0 -22
- data/lib/ddr/models/structures/fptr.rb +0 -31
- data/lib/ddr/models/structures/mets_hdr.rb +0 -37
- data/lib/ddr/models/structures/mptr.rb +0 -49
- data/lib/ddr/models/structures/struct_map.rb +0 -40
- data/lib/ddr/models/with_content_file.rb +0 -37
- data/spec/datastreams/external_file_datastream_spec.rb +0 -48
- data/spec/dummy/config/structure_component_type.yml +0 -18
- data/spec/fixtures/abcd1234.vtt +0 -38
- data/spec/fixtures/arrow1rightred_e0.gif +0 -0
- data/spec/fixtures/extractedText1.txt +0 -1
- data/spec/fixtures/extractedText2.txt +0 -1
- data/spec/fixtures/extractedText3.txt +0 -3
- data/spec/fixtures/imageA.jpg +0 -0
- data/spec/fixtures/imageB.jpg +0 -0
- data/spec/index/csv_query_result_spec.rb +0 -44
- data/spec/index/fields_spec.rb +0 -380
- data/spec/index/query_builder_spec.rb +0 -140
- data/spec/index/query_clause_spec.rb +0 -68
- data/spec/models/cache_spec.rb +0 -32
- data/spec/models/contact_spec.rb +0 -56
- data/spec/models/descriptive_metadata_datastream_spec.rb +0 -139
- data/spec/models/file_characterization_spec.rb +0 -39
- data/spec/models/language_spec.rb +0 -59
- data/spec/models/media_type_spec.rb +0 -46
- data/spec/models/permanent_id_spec.rb +0 -432
- data/spec/models/rights_statement_spec.rb +0 -55
- data/spec/models/structures/agent_spec.rb +0 -30
- data/spec/models/structures/component_type_term_spec.rb +0 -14
- data/spec/models/structures/div_spec.rb +0 -26
- data/spec/models/structures/f_locat_spec.rb +0 -78
- data/spec/models/structures/file_grp_spec.rb +0 -23
- data/spec/models/structures/file_sec_spec.rb +0 -22
- data/spec/models/structures/file_spec.rb +0 -60
- data/spec/models/structures/fptr_spec.rb +0 -23
- data/spec/models/structures/mets_hdr_spec.rb +0 -26
- data/spec/models/structures/mptr_spec.rb +0 -25
- data/spec/models/structures/struct_map_spec.rb +0 -24
- data/spec/models/with_content_file_spec.rb +0 -37
- data/spec/support/shared_examples_for_associations.rb +0 -8
- data/spec/support/shared_examples_for_captionable.rb +0 -23
- data/spec/support/shared_examples_for_has_intermediate_file.rb +0 -28
- data/spec/support/shared_examples_for_publication.rb +0 -43
- data/spec/support/shared_examples_for_streamable_media.rb +0 -23
@@ -1,49 +0,0 @@
|
|
1
|
-
module Ddr::Models::Structures
|
2
|
-
#
|
3
|
-
# Wraps a Nokogiri (XML) 'mptr' node
|
4
|
-
#
|
5
|
-
class Mptr < SimpleDelegator
|
6
|
-
|
7
|
-
def id
|
8
|
-
self['ID']
|
9
|
-
end
|
10
|
-
|
11
|
-
def loctype
|
12
|
-
self['LOCTYPE']
|
13
|
-
end
|
14
|
-
|
15
|
-
def otherloctype
|
16
|
-
self['OTHERLOCTYPE']
|
17
|
-
end
|
18
|
-
|
19
|
-
def href
|
20
|
-
self['xlink:href']
|
21
|
-
end
|
22
|
-
|
23
|
-
def ark?
|
24
|
-
loctype == 'ARK'
|
25
|
-
end
|
26
|
-
|
27
|
-
def ark
|
28
|
-
href if ark?
|
29
|
-
end
|
30
|
-
|
31
|
-
def repo_id
|
32
|
-
SolrDocument.find_by_permanent_id(ark).id if ark?
|
33
|
-
end
|
34
|
-
|
35
|
-
def dereferenced_hash
|
36
|
-
{ id: id, repo_id: repo_id }.compact
|
37
|
-
end
|
38
|
-
|
39
|
-
def self.build(args)
|
40
|
-
node = Nokogiri::XML::Node.new('mptr', args[:document])
|
41
|
-
node['ID'] = args[:id] if args[:id]
|
42
|
-
node['LOCTYPE'] = args[:loctype] if args[:loctype]
|
43
|
-
node['OTHERLOCTYPE'] = args[:otherloctype] if args[:otherloctype]
|
44
|
-
node['xlink:href'] = args[:href] if args[:href]
|
45
|
-
node
|
46
|
-
end
|
47
|
-
|
48
|
-
end
|
49
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
module Ddr::Models::Structures
|
2
|
-
#
|
3
|
-
# Wraps a Nokogiri (XML) 'structMap' node
|
4
|
-
#
|
5
|
-
class StructMap < SimpleDelegator
|
6
|
-
|
7
|
-
def id
|
8
|
-
self['ID']
|
9
|
-
end
|
10
|
-
|
11
|
-
def label
|
12
|
-
self['LABEL']
|
13
|
-
end
|
14
|
-
|
15
|
-
def type
|
16
|
-
self['TYPE']
|
17
|
-
end
|
18
|
-
|
19
|
-
def divs
|
20
|
-
xpath('xmlns:div').map { |node| Div.new(node) }
|
21
|
-
end
|
22
|
-
|
23
|
-
def dereferenced_hash
|
24
|
-
contents = []
|
25
|
-
contents.concat(divs.map { |div| div.dereferenced_hash }) unless divs.empty?
|
26
|
-
dh = { id: id, label: label, type: type }.compact
|
27
|
-
dh[:contents] = contents unless contents.empty?
|
28
|
-
dh
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.build(args)
|
32
|
-
node = Nokogiri::XML::Node.new('structMap', args[:document])
|
33
|
-
node['ID'] = args[:id] if args[:id]
|
34
|
-
node['LABEL'] = args[:label] if args[:label]
|
35
|
-
node['TYPE'] = args[:type] if args[:type]
|
36
|
-
node
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
require "tempfile"
|
2
|
-
require "delegate"
|
3
|
-
|
4
|
-
module Ddr::Models
|
5
|
-
class WithContentFile < SimpleDelegator
|
6
|
-
|
7
|
-
def initialize(obj, &block)
|
8
|
-
super(obj)
|
9
|
-
with_temp_file &block
|
10
|
-
end
|
11
|
-
|
12
|
-
# Yields path of tempfile containing content to block
|
13
|
-
# @yield [String] the path to the tempfile containing content
|
14
|
-
def with_temp_file
|
15
|
-
filename = original_filename || content.default_file_name
|
16
|
-
basename = [ File.basename(filename, ".*"), File.extname(filename) ]
|
17
|
-
infile = Tempfile.open(basename, Ddr::Models.tempdir, encoding: 'ascii-8bit')
|
18
|
-
begin
|
19
|
-
infile.write(content.content)
|
20
|
-
infile.close
|
21
|
-
verify_checksum!(infile)
|
22
|
-
yield infile.path
|
23
|
-
ensure
|
24
|
-
infile.close unless infile.closed?
|
25
|
-
File.unlink(infile)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def verify_checksum!(file)
|
30
|
-
digest = Ddr::Utils.digest(File.read(file), content.checksumType)
|
31
|
-
if digest != content.checksum
|
32
|
-
raise ChecksumInvalid, "The checksum of the downloaded file does not match the stored checksum of the content."
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
37
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
module Ddr::Datastreams
|
2
|
-
RSpec.describe ExternalFileDatastream do
|
3
|
-
|
4
|
-
let(:obj) { Component.new }
|
5
|
-
let(:file1) { fixture_file_upload("sample.pdf", "application/pdf") }
|
6
|
-
let(:file2) { fixture_file_upload("sample.docx") }
|
7
|
-
|
8
|
-
subject { obj.content }
|
9
|
-
|
10
|
-
its(:file_size) { is_expected.to be_nil }
|
11
|
-
its(:file_path) { is_expected.to be_nil }
|
12
|
-
its(:file_paths) { is_expected.to be_empty }
|
13
|
-
|
14
|
-
specify {
|
15
|
-
expect(File).not_to receive(:read).with(file1.path)
|
16
|
-
subject.add_file(file1.path, mime_type: file1.content_type)
|
17
|
-
obj.save!
|
18
|
-
path1 = subject.file_path
|
19
|
-
expect(::File.exist?(path1)).to be true
|
20
|
-
expect(subject.file_size).to eq 83777
|
21
|
-
expect(subject.mimeType).to eq "application/pdf"
|
22
|
-
subject.add_file(file2.path)
|
23
|
-
obj.save!
|
24
|
-
path2 = subject.file_path
|
25
|
-
expect(::File.exist?(path2)).to be true
|
26
|
-
expect(subject.file_size).to eq 12552
|
27
|
-
expect(subject.mimeType).to eq "application/octet-stream"
|
28
|
-
expect(subject.file_paths).to contain_exactly(path1, path2)
|
29
|
-
subject.delete
|
30
|
-
expect(::File.exist?(path1)).to be false
|
31
|
-
expect(::File.exist?(path2)).to be false
|
32
|
-
expect(subject.file_size).to be_nil
|
33
|
-
expect(subject.dsLocation).to be_nil
|
34
|
-
expect(subject.file_path).to be_nil
|
35
|
-
}
|
36
|
-
|
37
|
-
describe "checksum validation" do
|
38
|
-
before do
|
39
|
-
subject.add_file(file1.path, mime_type: file1.content_type)
|
40
|
-
obj.save!
|
41
|
-
end
|
42
|
-
it "should not call Rubydora to retrieve datastream content" do
|
43
|
-
expect(subject).to_not receive(:content)
|
44
|
-
subject.validate_checksum!('a6ae0d815c1a2aef551b45fe34a35ceea1828a4d', Ddr::Datastreams::CHECKSUM_TYPE_SHA1)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# NOTE: This configuration and the associated application functionality does not
|
2
|
-
# account for precedence among the media types and associated type designations.
|
3
|
-
# In practical terms, this means that the media type for any given Component is
|
4
|
-
# to match no more than one of the indicated media type values. If the media type
|
5
|
-
# for a Component matches more than one media type value, the type designation
|
6
|
-
# that is used is arbitrary.
|
7
|
-
Documents:
|
8
|
-
- application/pdf
|
9
|
-
- application/msword
|
10
|
-
- application/vnd.openxmlformats-officedocument.wordprocessingml*
|
11
|
-
- application/vnd.ms-word*
|
12
|
-
- application/rtf
|
13
|
-
- text/*
|
14
|
-
Images:
|
15
|
-
- image/*
|
16
|
-
Media:
|
17
|
-
- audio/*
|
18
|
-
- video/*
|
data/spec/fixtures/abcd1234.vtt
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
WEBVTT
|
2
|
-
|
3
|
-
00:01.835 --> 00:02.736
|
4
|
-
Lorem ipsum dolor sit amet.
|
5
|
-
|
6
|
-
00:02.736 --> 00:03.837
|
7
|
-
Vestibulum pretium ligula quis nunc commodo dictum.
|
8
|
-
|
9
|
-
00:03.837 --> 00:04.637
|
10
|
-
Donec sit amet eros rutrum, elementum neque vitae, volutpat sapien.
|
11
|
-
|
12
|
-
00:04.637 --> 00:05.939
|
13
|
-
Vivamus sed turpis ut nisi cursus volutpat in non arcu.
|
14
|
-
|
15
|
-
00:05.939 --> 00:07.574
|
16
|
-
Praesent dignissim lectus sed dignissim ultricies.
|
17
|
-
|
18
|
-
00:07.574 --> 00:08.942
|
19
|
-
>> ♪ Quisque eget neque maximus, lobortis sem quis, dapibus ipsum.
|
20
|
-
|
21
|
-
00:08.942 --> 00:09.542
|
22
|
-
Pellentesque eu risus id tellus placerat maximus.
|
23
|
-
|
24
|
-
00:09.542 --> 00:11.778
|
25
|
-
♪ Proin dapibus purus et magna euismod, non vestibulum ligula pellentesque.
|
26
|
-
|
27
|
-
00:11.778 --> 00:13.980
|
28
|
-
Vivamus porttitor nibh eget nunc semper, ac tristique arcu scelerisque.
|
29
|
-
|
30
|
-
00:13.980 --> 00:15.882
|
31
|
-
♪ Maecenas gravida justo sit amet urna scelerisque, eget porttitor mauris interdum.
|
32
|
-
|
33
|
-
00:15.882 --> 00:18.752
|
34
|
-
Pellentesque consectetur lacus eget bibendum rutrum.
|
35
|
-
|
36
|
-
00:18.752 --> 00:20.387
|
37
|
-
♪ Quisque semper magna ultrices libero iaculis fermentum.
|
38
|
-
|
Binary file
|
@@ -1 +0,0 @@
|
|
1
|
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis scelerisque diam in lacus sollicitudin maximus. Duis molestie rutrum hendrerit. Vestibulum lobortis augue a ultrices mollis. Mauris semper eu odio posuere scelerisque. Donec vel condimentum nunc. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi fermentum, sem vel interdum suscipit, lacus risus ultricies sem, in lacinia ligula risus ut est. Integer gravida, orci ac lobortis blandit, eros tortor bibendum turpis, quis semper velit erat in augue.
|
@@ -1 +0,0 @@
|
|
1
|
-
Proin convallis nibh quis ex iaculis, eget porttitor elit consequat. Duis in tincidunt ipsum. Aenean imperdiet lacinia libero nec egestas. Fusce a metus volutpat, vehicula augue accumsan, mattis lorem. Donec ex tellus, tempus vitae orci sit amet, sollicitudin pharetra velit. Fusce egestas nunc vitae placerat elementum. Nullam pharetra porta eros, quis tempor sem pulvinar a. Ut in neque cursus, hendrerit neque in, congue est. Phasellus neque mauris, eleifend in sem ac, posuere tincidunt odio. Duis lectus nibh, ultricies a elementum a, consectetur vitae turpis.
|
@@ -1,3 +0,0 @@
|
|
1
|
-
Ut eu consequat turpis. Proin commodo facilisis pretium. Vestibulum tristique volutpat lobortis. Donec efficitur tincidunt porta. Sed dui massa, rutrum iaculis interdum at, scelerisque nec velit. Suspendisse potenti. Aliquam quis mauris sed magna convallis ullamcorper non ut ipsum.
|
2
|
-
|
3
|
-
Donec dolor urna, malesuada id condimentum ut, feugiat consectetur lectus. Morbi dignissim nibh neque, a bibendum ex semper vel. Nunc pellentesque varius bibendum. Etiam posuere lorem nibh, sit amet iaculis dolor lobortis nec. Nam congue dui non lectus luctus scelerisque. Aliquam turpis orci, porta non dapibus eu, accumsan sed tortor. Phasellus placerat ac mauris sed vehicula. Sed dolor massa, fringilla vitae urna vel, efficitur porta eros. Ut massa nisi, bibendum id mollis quis, aliquet eu purus. Aliquam erat volutpat. Phasellus accumsan felis eget dui vulputate, eget feugiat diam eleifend. Donec facilisis massa odio, ac auctor eros ullamcorper quis. Donec sit amet malesuada lectus. Aenean egestas, leo id lacinia mattis, dui ex tempor tellus, vel mollis velit leo a ante.
|
data/spec/fixtures/imageA.jpg
DELETED
Binary file
|
data/spec/fixtures/imageB.jpg
DELETED
Binary file
|
@@ -1,44 +0,0 @@
|
|
1
|
-
module Ddr::Index
|
2
|
-
RSpec.describe CSVQueryResult do
|
3
|
-
|
4
|
-
subject { described_class.new(query) }
|
5
|
-
|
6
|
-
before do
|
7
|
-
Item.create(title: ["Testing 1"],
|
8
|
-
identifier: ["test1"],
|
9
|
-
description: ["The process of\r\neliminating errors\nmust include checking newlines."])
|
10
|
-
Item.create(title: ["Testing 2"],
|
11
|
-
identifier: ["test2"])
|
12
|
-
Item.create(title: ["Testing 3"])
|
13
|
-
end
|
14
|
-
|
15
|
-
let(:query) {
|
16
|
-
Ddr::Index::Query.new do
|
17
|
-
fields Ddr::Index::Fields::ID
|
18
|
-
fields Ddr::Index::Fields.descmd
|
19
|
-
end
|
20
|
-
}
|
21
|
-
|
22
|
-
specify {
|
23
|
-
expect(subject["title"]).to contain_exactly("Testing 1", "Testing 2", "Testing 3")
|
24
|
-
expect(subject["identifier"]).to contain_exactly("test1", "test2", nil)
|
25
|
-
expect(subject["description"]).to contain_exactly("The process of\r\neliminating errors\nmust include checking newlines.", nil, nil)
|
26
|
-
expect(subject["creator"]).to contain_exactly(nil, nil, nil)
|
27
|
-
expect(subject.headers).to include("creator")
|
28
|
-
expect(subject.to_s).to match(/creator/)
|
29
|
-
}
|
30
|
-
|
31
|
-
describe "#delete_empty_columns!" do
|
32
|
-
specify {
|
33
|
-
subject.delete_empty_columns!
|
34
|
-
expect(subject["title"]).to contain_exactly("Testing 1", "Testing 2", "Testing 3")
|
35
|
-
expect(subject["identifier"]).to contain_exactly("test1", "test2", nil)
|
36
|
-
expect(subject["description"]).to contain_exactly("The process of\r\neliminating errors\nmust include checking newlines.", nil, nil)
|
37
|
-
expect(subject["creator"]).to contain_exactly(nil, nil, nil)
|
38
|
-
expect(subject.headers).to contain_exactly("pid", "title", "identifier", "description")
|
39
|
-
expect(subject.to_s).not_to match(/creator/)
|
40
|
-
}
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
end
|
data/spec/index/fields_spec.rb
DELETED
@@ -1,380 +0,0 @@
|
|
1
|
-
module Ddr::Index
|
2
|
-
RSpec.describe Fields do
|
3
|
-
|
4
|
-
describe "module methods" do
|
5
|
-
specify {
|
6
|
-
expect(Fields.techmd).to contain_exactly(
|
7
|
-
Fields::TECHMD_COLOR_SPACE,
|
8
|
-
Fields::TECHMD_CREATING_APPLICATION,
|
9
|
-
Fields::TECHMD_CREATION_TIME,
|
10
|
-
Fields::TECHMD_FILE_SIZE,
|
11
|
-
Fields::TECHMD_FITS_VERSION,
|
12
|
-
Fields::TECHMD_FITS_DATETIME,
|
13
|
-
Fields::TECHMD_FORMAT_LABEL,
|
14
|
-
Fields::TECHMD_FORMAT_VERSION,
|
15
|
-
Fields::TECHMD_ICC_PROFILE_NAME,
|
16
|
-
Fields::TECHMD_ICC_PROFILE_VERSION,
|
17
|
-
Fields::TECHMD_IMAGE_HEIGHT,
|
18
|
-
Fields::TECHMD_IMAGE_WIDTH,
|
19
|
-
Fields::TECHMD_MD5,
|
20
|
-
Fields::TECHMD_MEDIA_TYPE,
|
21
|
-
Fields::TECHMD_MODIFICATION_TIME,
|
22
|
-
Fields::TECHMD_PRONOM_IDENTIFIER,
|
23
|
-
Fields::TECHMD_VALID,
|
24
|
-
Fields::TECHMD_WELL_FORMED
|
25
|
-
)
|
26
|
-
}
|
27
|
-
end
|
28
|
-
|
29
|
-
describe "constants" do
|
30
|
-
describe "ID" do
|
31
|
-
subject { Fields::ID }
|
32
|
-
its(:label) { is_expected.to eq "Fedora PID" }
|
33
|
-
its(:heading) { is_expected.to eq "pid" }
|
34
|
-
end
|
35
|
-
|
36
|
-
describe "ACCESS_ROLE" do
|
37
|
-
subject { Fields::ACCESS_ROLE }
|
38
|
-
its(:label) { is_expected.to eq "Access Role" }
|
39
|
-
its(:heading) { is_expected.to eq "access_role" }
|
40
|
-
end
|
41
|
-
|
42
|
-
describe "ACTIVE_FEDORA_MODEL" do
|
43
|
-
subject { Fields::ACTIVE_FEDORA_MODEL }
|
44
|
-
its(:label) { is_expected.to eq "Model" }
|
45
|
-
its(:heading) { is_expected.to eq "model" }
|
46
|
-
end
|
47
|
-
|
48
|
-
describe "ADMIN_SET" do
|
49
|
-
subject { Fields::ADMIN_SET }
|
50
|
-
its(:label) { is_expected.to eq "Admin Set" }
|
51
|
-
its(:heading) { is_expected.to eq "admin_set" }
|
52
|
-
end
|
53
|
-
|
54
|
-
describe "ARRANGER_FACET" do
|
55
|
-
subject { Fields::ARRANGER_FACET }
|
56
|
-
its(:label) { is_expected.to eq "Arranger Facet" }
|
57
|
-
its(:heading) { is_expected.to eq "arranger_facet" }
|
58
|
-
end
|
59
|
-
|
60
|
-
describe "ASPACE_ID" do
|
61
|
-
subject { Fields::ASPACE_ID }
|
62
|
-
its(:label) { is_expected.to eq "ArchivesSpace ID" }
|
63
|
-
its(:heading) { is_expected.to eq "aspace_id" }
|
64
|
-
end
|
65
|
-
|
66
|
-
describe "BIBLICAL_BOOK_FACET" do
|
67
|
-
subject { Fields::BIBLICAL_BOOK_FACET }
|
68
|
-
its(:label) { is_expected.to eq "Biblical Book Facet" }
|
69
|
-
its(:heading) { is_expected.to eq "biblical_book_facet" }
|
70
|
-
end
|
71
|
-
|
72
|
-
describe "CATEGORY_FACET" do
|
73
|
-
subject { Fields::CATEGORY_FACET }
|
74
|
-
its(:label) { is_expected.to eq "Category Facet" }
|
75
|
-
its(:heading) { is_expected.to eq "category_facet" }
|
76
|
-
end
|
77
|
-
|
78
|
-
describe "CHAPTER_AND_VERSE_FACET" do
|
79
|
-
subject { Fields::CHAPTER_AND_VERSE_FACET }
|
80
|
-
its(:label) { is_expected.to eq "Chapter And Verse Facet" }
|
81
|
-
its(:heading) { is_expected.to eq "chapter_and_verse_facet" }
|
82
|
-
end
|
83
|
-
|
84
|
-
describe "COMPANY_FACET" do
|
85
|
-
subject { Fields::COMPANY_FACET }
|
86
|
-
its(:label) { is_expected.to eq "Company Facet" }
|
87
|
-
its(:heading) { is_expected.to eq "company_facet" }
|
88
|
-
end
|
89
|
-
|
90
|
-
describe "COMPOSER_FACET" do
|
91
|
-
subject { Fields::COMPOSER_FACET }
|
92
|
-
its(:label) { is_expected.to eq "Composer Facet" }
|
93
|
-
its(:heading) { is_expected.to eq "composer_facet" }
|
94
|
-
end
|
95
|
-
|
96
|
-
describe "DOI" do
|
97
|
-
subject { Fields::DOI }
|
98
|
-
its(:label) { is_expected.to eq "DOI" }
|
99
|
-
its(:heading) { is_expected.to eq "doi" }
|
100
|
-
end
|
101
|
-
|
102
|
-
describe "EAD_ID" do
|
103
|
-
subject { Fields::EAD_ID }
|
104
|
-
its(:label) { is_expected.to eq "EAD ID" }
|
105
|
-
its(:heading) { is_expected.to eq "ead_id" }
|
106
|
-
end
|
107
|
-
|
108
|
-
describe "ENGRAVER FACET" do
|
109
|
-
subject { Fields::ENGRAVER_FACET }
|
110
|
-
its(:label) { is_expected.to eq "Engraver Facet" }
|
111
|
-
its(:heading) { is_expected.to eq "engraver_facet" }
|
112
|
-
end
|
113
|
-
|
114
|
-
describe "FOLDER_FACET" do
|
115
|
-
subject { Fields::FOLDER_FACET }
|
116
|
-
its(:label) { is_expected.to eq "Folder Facet" }
|
117
|
-
its(:heading) { is_expected.to eq "folder_facet" }
|
118
|
-
end
|
119
|
-
|
120
|
-
describe "GENRE_FACET" do
|
121
|
-
subject { Fields::GENRE_FACET }
|
122
|
-
its(:label) { is_expected.to eq "Genre Facet" }
|
123
|
-
its(:heading) { is_expected.to eq "genre_facet" }
|
124
|
-
end
|
125
|
-
|
126
|
-
describe "LOCAL_ID" do
|
127
|
-
subject { Fields::LOCAL_ID }
|
128
|
-
its(:label) { is_expected.to eq "Local ID" }
|
129
|
-
its(:heading) { is_expected.to eq "local_id" }
|
130
|
-
end
|
131
|
-
|
132
|
-
describe "ILLUSTRATED_FACET" do
|
133
|
-
subject { Fields::ILLUSTRATED_FACET }
|
134
|
-
its(:label) { is_expected.to eq "Illustrated Facet" }
|
135
|
-
its(:heading) { is_expected.to eq "illustrated_facet" }
|
136
|
-
end
|
137
|
-
|
138
|
-
describe "ILLUSTRATOR_FACET" do
|
139
|
-
subject { Fields::ILLUSTRATOR_FACET }
|
140
|
-
its(:label) { is_expected.to eq "Illustrator Facet" }
|
141
|
-
its(:heading) { is_expected.to eq "illustrator_facet" }
|
142
|
-
end
|
143
|
-
|
144
|
-
describe "INSTRUMENTATION_FACET" do
|
145
|
-
subject { Fields::INSTRUMENTATION_FACET }
|
146
|
-
its(:label) { is_expected.to eq "Instrumentation Facet" }
|
147
|
-
its(:heading) { is_expected.to eq "instrumentation_facet" }
|
148
|
-
end
|
149
|
-
|
150
|
-
describe "INTERVIEWER_NAME_FACET" do
|
151
|
-
subject { Fields::INTERVIEWER_NAME_FACET }
|
152
|
-
its(:label) { is_expected.to eq "Interviewer Name Facet" }
|
153
|
-
its(:heading) { is_expected.to eq "interviewer_name_facet" }
|
154
|
-
end
|
155
|
-
|
156
|
-
describe "LANGUAGE_FACET" do
|
157
|
-
subject { Fields::LANGUAGE_FACET }
|
158
|
-
its(:label) { is_expected.to eq "Language Facet" }
|
159
|
-
its(:heading) { is_expected.to eq "language_facet" }
|
160
|
-
end
|
161
|
-
|
162
|
-
describe "LANGUAGE_NAME" do
|
163
|
-
subject { Fields::LANGUAGE_NAME }
|
164
|
-
its(:label) { is_expected.to eq "Language Name" }
|
165
|
-
its(:heading) { is_expected.to eq "language_name" }
|
166
|
-
end
|
167
|
-
|
168
|
-
describe "LITHOGRAPHER_FACET" do
|
169
|
-
subject { Fields::LITHOGRAPHER_FACET }
|
170
|
-
its(:label) { is_expected.to eq "Lithographer Facet" }
|
171
|
-
its(:heading) { is_expected.to eq "lithographer_facet" }
|
172
|
-
end
|
173
|
-
|
174
|
-
describe "LYRICIST_FACET" do
|
175
|
-
subject { Fields::LYRICIST_FACET }
|
176
|
-
its(:label) { is_expected.to eq "Lyricist Facet" }
|
177
|
-
its(:heading) { is_expected.to eq "lyricist_facet" }
|
178
|
-
end
|
179
|
-
|
180
|
-
describe "MEDIUM_FACET" do
|
181
|
-
subject { Fields::MEDIUM_FACET }
|
182
|
-
its(:label) { is_expected.to eq "Medium Facet" }
|
183
|
-
its(:heading) { is_expected.to eq "medium_facet" }
|
184
|
-
end
|
185
|
-
|
186
|
-
describe "OBJECT_CREATE_DATE" do
|
187
|
-
subject { Fields::OBJECT_CREATE_DATE }
|
188
|
-
its(:label) { is_expected.to eq "Creation Date" }
|
189
|
-
its(:heading) { is_expected.to eq "creation_date" }
|
190
|
-
end
|
191
|
-
|
192
|
-
describe "OBJECT_MODIFIED_DATE" do
|
193
|
-
subject { Fields::OBJECT_MODIFIED_DATE }
|
194
|
-
its(:label) { is_expected.to eq "Modification Date" }
|
195
|
-
its(:heading) { is_expected.to eq "modification_date" }
|
196
|
-
end
|
197
|
-
|
198
|
-
describe "PERFORMER_FACET" do
|
199
|
-
subject { Fields::PERFORMER_FACET }
|
200
|
-
its(:label) { is_expected.to eq "Performer Facet" }
|
201
|
-
its(:heading) { is_expected.to eq "performer_facet" }
|
202
|
-
end
|
203
|
-
|
204
|
-
describe "PERMANENT_ID" do
|
205
|
-
subject { Fields::PERMANENT_ID }
|
206
|
-
its(:label) { is_expected.to eq "Permanent ID" }
|
207
|
-
its(:heading) { is_expected.to eq "permanent_id" }
|
208
|
-
end
|
209
|
-
|
210
|
-
describe "PERMANENT_URL" do
|
211
|
-
subject { Fields::PERMANENT_URL }
|
212
|
-
its(:label) { is_expected.to eq "Permanent URL" }
|
213
|
-
its(:heading) { is_expected.to eq "permanent_url" }
|
214
|
-
end
|
215
|
-
|
216
|
-
describe "PLACEMENT_COMPANY_FACET" do
|
217
|
-
subject { Fields::PLACEMENT_COMPANY_FACET }
|
218
|
-
its(:label) { is_expected.to eq "Placement Company Facet" }
|
219
|
-
its(:heading) { is_expected.to eq "placement_company_facet" }
|
220
|
-
end
|
221
|
-
|
222
|
-
describe "PRODUCER_FACET" do
|
223
|
-
subject { Fields::PRODUCER_FACET }
|
224
|
-
its(:label) { is_expected.to eq "Producer Facet" }
|
225
|
-
its(:heading) { is_expected.to eq "producer_facet" }
|
226
|
-
end
|
227
|
-
|
228
|
-
describe "PRODUCT_FACET" do
|
229
|
-
subject { Fields::PRODUCT_FACET }
|
230
|
-
its(:label) { is_expected.to eq "Product Facet" }
|
231
|
-
its(:heading) { is_expected.to eq "product_facet" }
|
232
|
-
end
|
233
|
-
|
234
|
-
describe "PUBLICATION_FACET" do
|
235
|
-
subject { Fields::PUBLICATION_FACET }
|
236
|
-
its(:label) { is_expected.to eq "Publication Facet" }
|
237
|
-
its(:heading) { is_expected.to eq "publication_facet" }
|
238
|
-
end
|
239
|
-
|
240
|
-
describe "ROLL_NUMBER_FACET" do
|
241
|
-
subject { Fields::ROLL_NUMBER_FACET }
|
242
|
-
its(:label) { is_expected.to eq "Roll Number Facet" }
|
243
|
-
its(:heading) { is_expected.to eq "roll_number_facet" }
|
244
|
-
end
|
245
|
-
|
246
|
-
describe "SETTING_FACET" do
|
247
|
-
subject { Fields::SETTING_FACET }
|
248
|
-
its(:label) { is_expected.to eq "Setting Facet" }
|
249
|
-
its(:heading) { is_expected.to eq "setting_facet" }
|
250
|
-
end
|
251
|
-
|
252
|
-
describe "STREAMABLE_MEDIA_TYPE" do
|
253
|
-
subject { Fields::STREAMABLE_MEDIA_TYPE }
|
254
|
-
its(:label) { is_expected.to eq "Streamable Media Type" }
|
255
|
-
its(:heading) { is_expected.to eq "streamable_media_type" }
|
256
|
-
end
|
257
|
-
|
258
|
-
describe "SUBSERIES_FACET" do
|
259
|
-
subject { Fields::SUBSERIES_FACET }
|
260
|
-
its(:label) { is_expected.to eq "Subseries Facet" }
|
261
|
-
its(:heading) { is_expected.to eq "subseries_facet" }
|
262
|
-
end
|
263
|
-
|
264
|
-
describe "TECHMD_COLOR_SPACE" do
|
265
|
-
subject { Fields::TECHMD_COLOR_SPACE }
|
266
|
-
its(:label) { is_expected.to eq "Color Space" }
|
267
|
-
its(:heading) { is_expected.to eq "color_space" }
|
268
|
-
end
|
269
|
-
|
270
|
-
describe "TECHMD_CREATING_APPLICATION" do
|
271
|
-
subject { Fields::TECHMD_CREATING_APPLICATION }
|
272
|
-
its(:label) { is_expected.to eq "Creating Application" }
|
273
|
-
its(:heading) { is_expected.to eq "creating_application" }
|
274
|
-
end
|
275
|
-
|
276
|
-
describe "TECHMD_CREATION_TIME" do
|
277
|
-
subject { Fields::TECHMD_CREATION_TIME }
|
278
|
-
its(:label) { is_expected.to eq "Creation Time" }
|
279
|
-
its(:heading) { is_expected.to eq "creation_time" }
|
280
|
-
end
|
281
|
-
|
282
|
-
describe "TECHMD_FILE_SIZE" do
|
283
|
-
subject { Fields::TECHMD_FILE_SIZE }
|
284
|
-
its(:label) { is_expected.to eq "File Size" }
|
285
|
-
its(:heading) { is_expected.to eq "file_size" }
|
286
|
-
end
|
287
|
-
|
288
|
-
describe "TECHMD_FITS_VERSION" do
|
289
|
-
subject { Fields::TECHMD_FITS_VERSION }
|
290
|
-
its(:label) { is_expected.to eq "FITS Version" }
|
291
|
-
its(:heading) { is_expected.to eq "fits_version" }
|
292
|
-
end
|
293
|
-
|
294
|
-
describe "TECHMD_FITS_DATETIME" do
|
295
|
-
subject { Fields::TECHMD_FITS_DATETIME }
|
296
|
-
its(:label) { is_expected.to eq "FITS Run At" }
|
297
|
-
its(:heading) { is_expected.to eq "fits_datetime" }
|
298
|
-
end
|
299
|
-
|
300
|
-
describe "TECHMD_FORMAT_LABEL" do
|
301
|
-
subject { Fields::TECHMD_FORMAT_LABEL }
|
302
|
-
its(:label) { is_expected.to eq "Format Label" }
|
303
|
-
its(:heading) { is_expected.to eq "format_label" }
|
304
|
-
end
|
305
|
-
|
306
|
-
describe "TECHMD_FORMAT_VERSION" do
|
307
|
-
subject { Fields::TECHMD_FORMAT_VERSION }
|
308
|
-
its(:label) { is_expected.to eq "Format Version" }
|
309
|
-
its(:heading) { is_expected.to eq "format_version" }
|
310
|
-
end
|
311
|
-
|
312
|
-
describe "TECHMD_IMAGE_HEIGHT" do
|
313
|
-
subject { Fields::TECHMD_IMAGE_HEIGHT }
|
314
|
-
its(:label) { is_expected.to eq "Image Height" }
|
315
|
-
its(:heading) { is_expected.to eq "image_height" }
|
316
|
-
end
|
317
|
-
|
318
|
-
describe "TECHMD_IMAGE_WIDTH" do
|
319
|
-
subject { Fields::TECHMD_IMAGE_WIDTH }
|
320
|
-
its(:label) { is_expected.to eq "Image Width" }
|
321
|
-
its(:heading) { is_expected.to eq "image_width" }
|
322
|
-
end
|
323
|
-
|
324
|
-
describe "TECHMD_MD5" do
|
325
|
-
subject { Fields::TECHMD_MD5 }
|
326
|
-
its(:label) { is_expected.to eq "MD5" }
|
327
|
-
its(:heading) { is_expected.to eq "md5" }
|
328
|
-
end
|
329
|
-
|
330
|
-
describe "TECHMD_MEDIA_TYPE" do
|
331
|
-
subject { Fields::TECHMD_MEDIA_TYPE }
|
332
|
-
its(:label) { is_expected.to eq "Media Type" }
|
333
|
-
its(:heading) { is_expected.to eq "media_type" }
|
334
|
-
end
|
335
|
-
|
336
|
-
describe "TECHMD_MODIFICATION_TIME" do
|
337
|
-
subject { Fields::TECHMD_MODIFICATION_TIME }
|
338
|
-
its(:label) { is_expected.to eq "Modification Time" }
|
339
|
-
its(:heading) { is_expected.to eq "modification_time" }
|
340
|
-
end
|
341
|
-
|
342
|
-
describe "TECHMD_PRONOM_IDENTIFIER" do
|
343
|
-
subject { Fields::TECHMD_PRONOM_IDENTIFIER }
|
344
|
-
its(:label) { is_expected.to eq "PRONOM Unique ID" }
|
345
|
-
its(:heading) { is_expected.to eq "pronom_uid" }
|
346
|
-
end
|
347
|
-
|
348
|
-
describe "TECHMD_VALID" do
|
349
|
-
subject { Fields::TECHMD_VALID }
|
350
|
-
its(:label) { is_expected.to eq "Valid" }
|
351
|
-
its(:heading) { is_expected.to eq "valid" }
|
352
|
-
end
|
353
|
-
|
354
|
-
describe "TECHMD_WELL_FORMED" do
|
355
|
-
subject { Fields::TECHMD_WELL_FORMED }
|
356
|
-
its(:label) { is_expected.to eq "Well-formed" }
|
357
|
-
its(:heading) { is_expected.to eq "well_formed" }
|
358
|
-
end
|
359
|
-
|
360
|
-
describe "TEMPORAL_FACET" do
|
361
|
-
subject { Fields::TEMPORAL_FACET }
|
362
|
-
its(:label) { is_expected.to eq "Temporal Facet" }
|
363
|
-
its(:heading) { is_expected.to eq "temporal_facet" }
|
364
|
-
end
|
365
|
-
|
366
|
-
describe "TONE_FACET" do
|
367
|
-
subject { Fields::TONE_FACET }
|
368
|
-
its(:label) { is_expected.to eq "Tone Facet" }
|
369
|
-
its(:heading) { is_expected.to eq "tone_facet" }
|
370
|
-
end
|
371
|
-
|
372
|
-
describe "VOLUME_FACET" do
|
373
|
-
subject { Fields::VOLUME_FACET }
|
374
|
-
its(:label) { is_expected.to eq "Volume Facet" }
|
375
|
-
its(:heading) { is_expected.to eq "volume_facet" }
|
376
|
-
end
|
377
|
-
end
|
378
|
-
|
379
|
-
end
|
380
|
-
end
|