ddr-models 2.9.2 → 2.10.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/app/models/item.rb +23 -6
- data/ddr-models.gemspec +1 -0
- data/lib/ddr/actions/fixity_check.rb +1 -1
- data/lib/ddr/datastreams/content_datastream.rb +12 -0
- data/lib/ddr/datastreams/metadata_datastream.rb +15 -2
- data/lib/ddr/events/update_event.rb +10 -4
- data/lib/ddr/index/connection.rb +2 -2
- data/lib/ddr/index/fields.rb +11 -0
- data/lib/ddr/models.rb +1 -0
- data/lib/ddr/models/base.rb +4 -3
- data/lib/ddr/models/has_admin_metadata.rb +1 -0
- data/lib/ddr/models/has_struct_metadata.rb +2 -5
- data/lib/ddr/models/structures/component_type_term.rb +29 -0
- data/lib/ddr/models/version.rb +1 -1
- data/spec/dummy/config/structure_component_type.yml +18 -0
- data/spec/fixtures/fits/document.xml +42 -44
- data/spec/fixtures/fits/image.xml +42 -41
- data/spec/managers/technical_metadata_manager_spec.rb +12 -12
- data/spec/models/descriptive_metadata_datastream_spec.rb +4 -0
- data/spec/models/item_spec.rb +35 -9
- data/spec/models/permanent_id_spec.rb +0 -4
- data/spec/models/structures/component_type_term_spec.rb +14 -0
- data/spec/support/shared_examples_for_has_content.rb +14 -0
- data/spec/support/{shared_examples_for_has_intermediate_spec.rb → shared_examples_for_has_intermediate_file.rb} +0 -0
- metadata +25 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cb52395b49775aa484605d3eccc046d52a97226a
|
4
|
+
data.tar.gz: a3d47a19af939cb42b2b20c1341fb3be1b9f04d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9335f431776f65227f2ab87585e89c401a9b8a62cad9885900d59ce909ce6be00b942a509465bf14138d9283db2cd57a2e229caa0ff34d8c92bf8f6fcc8921bc
|
7
|
+
data.tar.gz: 6dc0228d4831aaa17604a9eb4b71197acee77c3738798688edfb59804f58d4f887bbcdce5e359f53e07ba8f5c2e318f912918d39c9a7a570c6706a4fa72a6451
|
data/.gitignore
CHANGED
data/app/models/item.rb
CHANGED
@@ -11,8 +11,6 @@ class Item < Ddr::Models::Base
|
|
11
11
|
has_many :children, property: :is_part_of, class_name: 'Component'
|
12
12
|
belongs_to :parent, property: :is_member_of_collection, class_name: 'Collection'
|
13
13
|
|
14
|
-
has_attributes :nested_path, datastream: Ddr::Datastreams::ADMIN_METADATA, multiple: false
|
15
|
-
|
16
14
|
alias_method :components, :children
|
17
15
|
alias_method :component_ids, :child_ids
|
18
16
|
|
@@ -57,12 +55,31 @@ class Item < Ddr::Models::Base
|
|
57
55
|
end
|
58
56
|
|
59
57
|
def add_components_to_structure(structure, structmap)
|
60
|
-
|
58
|
+
component_structure_types(sorted_children).each do |type_term, children|
|
59
|
+
div = structure.add_div(parent: structmap, type: type_term)
|
60
|
+
children.each_with_index do |child, index|
|
61
|
+
sub_div = structure.add_div(parent: div, order: index + 1)
|
62
|
+
structure.add_mptr(parent: sub_div, href: child[Ddr::Index::Fields::PERMANENT_ID])
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def component_structure_types(sorted_children)
|
68
|
+
type_divs = {}
|
61
69
|
sorted_children.each do |child|
|
62
|
-
|
63
|
-
|
64
|
-
|
70
|
+
term = type_term(child) || "Other"
|
71
|
+
if type_divs.has_key?(term)
|
72
|
+
type_divs[term] << child
|
73
|
+
else
|
74
|
+
type_divs[term] = [ child ]
|
75
|
+
end
|
65
76
|
end
|
77
|
+
type_divs
|
78
|
+
end
|
79
|
+
|
80
|
+
def type_term(component_doc)
|
81
|
+
media_type = component_doc[Ddr::Index::Fields::MEDIA_TYPE].first
|
82
|
+
Ddr::Models::Structures::ComponentTypeTerm.term(media_type)
|
66
83
|
end
|
67
84
|
|
68
85
|
end
|
data/ddr-models.gemspec
CHANGED
@@ -12,7 +12,7 @@ module Ddr
|
|
12
12
|
# Return result of fixity check
|
13
13
|
def self._execute(object)
|
14
14
|
Result.new(pid: object.pid).tap do |r|
|
15
|
-
object.
|
15
|
+
object.datastreams_having_content.each do |dsid, ds|
|
16
16
|
r.success &&= ds.dsChecksumValid
|
17
17
|
r.results[dsid] = ds.profile
|
18
18
|
end
|
@@ -1,5 +1,17 @@
|
|
1
1
|
module Ddr::Datastreams
|
2
2
|
class ContentDatastream < ExternalFileDatastream
|
3
3
|
|
4
|
+
CONTENT_CHANGED = "content_changed.content.repo_file"
|
5
|
+
|
6
|
+
around_save :notify_content_changed, if: [:external?, :dsLocation_changed?]
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
def notify_content_changed
|
11
|
+
ActiveSupport::Notifications.instrument(CONTENT_CHANGED, pid: pid) do |payload|
|
12
|
+
yield
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
4
16
|
end
|
5
17
|
end
|
@@ -15,8 +15,8 @@ module Ddr
|
|
15
15
|
# Note that empty values (nil or "") are rejected from values array
|
16
16
|
def set_values(term, values)
|
17
17
|
vals = Array(values)
|
18
|
-
.map
|
19
|
-
.reject { |v| v
|
18
|
+
.map { |v| sanitize_value(v) }
|
19
|
+
.reject { |v| reject_value?(v) }
|
20
20
|
begin
|
21
21
|
self.send("#{term}=", vals)
|
22
22
|
rescue NoMethodError
|
@@ -37,6 +37,19 @@ module Ddr
|
|
37
37
|
super && !empty?
|
38
38
|
end
|
39
39
|
|
40
|
+
private
|
41
|
+
|
42
|
+
def sanitize_value(value)
|
43
|
+
value
|
44
|
+
.to_s
|
45
|
+
.strip
|
46
|
+
.gsub(/[[:cntrl:]]/, "")
|
47
|
+
end
|
48
|
+
|
49
|
+
def reject_value?(value)
|
50
|
+
value.blank?
|
51
|
+
end
|
52
|
+
|
40
53
|
end
|
41
54
|
end
|
42
55
|
end
|
@@ -1,16 +1,22 @@
|
|
1
1
|
module Ddr::Events
|
2
2
|
class UpdateEvent < Event
|
3
|
+
|
3
4
|
self.description = "Object updated"
|
4
5
|
|
5
6
|
def self.call(*args)
|
6
7
|
super do |event, notification|
|
7
8
|
attrs_changed = notification.payload[:attributes_changed]
|
8
9
|
ds_changed = notification.payload[:datastreams_changed]
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
detail = [
|
11
|
+
"Datastreams changed: #{ds_changed.join(', ')}",
|
12
|
+
event.detail,
|
13
|
+
]
|
14
|
+
if attrs_changed.present?
|
15
|
+
detail << "Attributes changed: #{attrs_changed}"
|
16
|
+
end
|
17
|
+
event.detail = detail.compact.join("\n\n")
|
13
18
|
end
|
14
19
|
end
|
20
|
+
|
15
21
|
end
|
16
22
|
end
|
data/lib/ddr/index/connection.rb
CHANGED
@@ -10,14 +10,14 @@ module Ddr::Index
|
|
10
10
|
module Methods
|
11
11
|
extend Forwardable
|
12
12
|
|
13
|
-
delegate [:get, :paginate] => :solr
|
13
|
+
delegate [:get, :post, :paginate] => :solr
|
14
14
|
|
15
15
|
def solr
|
16
16
|
RSolr.connect(ActiveFedora.solr_config)
|
17
17
|
end
|
18
18
|
|
19
19
|
def select(params, extra={})
|
20
|
-
Response.new
|
20
|
+
Response.new post("select", params: params.merge(extra))
|
21
21
|
end
|
22
22
|
|
23
23
|
def page(*args)
|
data/lib/ddr/index/fields.rb
CHANGED
@@ -80,6 +80,7 @@ module Ddr::Index
|
|
80
80
|
OBJECT_STATE = Field.new :object_state, :stored_sortable
|
81
81
|
OBJECT_CREATE_DATE = Field.new :system_create, :stored_sortable, type: :date
|
82
82
|
OBJECT_MODIFIED_DATE = Field.new :system_modified, :stored_sortable, type: :date
|
83
|
+
ORIGINAL_FILENAME = Field.new :original_filename, solr_name: "admin_metadata__original_filename_ssi"
|
83
84
|
PERFORMER_FACET = Field.new :performer_facet, :facetable
|
84
85
|
PERMANENT_ID = Field.new :permanent_id, :stored_sortable, type: :string
|
85
86
|
PERMANENT_URL = Field.new :permanent_url, :stored_sortable, type: :string
|
@@ -141,6 +142,16 @@ module Ddr::Index
|
|
141
142
|
end.freeze
|
142
143
|
end
|
143
144
|
|
145
|
+
def self.adminmd
|
146
|
+
@adminmd ||= Ddr::Datastreams::AdministrativeMetadataDatastream.properties.map do |base, config|
|
147
|
+
begin
|
148
|
+
get(base)
|
149
|
+
rescue NameError
|
150
|
+
Field.new base, *(config.behaviors)
|
151
|
+
end
|
152
|
+
end.freeze
|
153
|
+
end
|
154
|
+
|
144
155
|
def self.const_missing(name)
|
145
156
|
if name == :PID
|
146
157
|
Deprecation.warn(Ddr::Index::Fields,
|
data/lib/ddr/models.rb
CHANGED
data/lib/ddr/models/base.rb
CHANGED
@@ -31,10 +31,10 @@ module Ddr
|
|
31
31
|
before_create :set_ingested_by, if: :performed_by, unless: :ingested_by
|
32
32
|
before_create :grant_default_roles
|
33
33
|
|
34
|
-
after_create :assign_permanent_id!, if: :assign_permanent_id?
|
35
|
-
after_create :notify_ingest
|
36
|
-
|
37
34
|
around_save :notify_update, unless: :new_record?
|
35
|
+
around_save :assign_permanent_id!, if: :assign_permanent_id?, on: :create
|
36
|
+
|
37
|
+
after_create :notify_ingest
|
38
38
|
|
39
39
|
around_deaccession :notify_deaccession
|
40
40
|
around_destroy :notify_delete
|
@@ -202,6 +202,7 @@ module Ddr
|
|
202
202
|
end
|
203
203
|
|
204
204
|
def assign_permanent_id!
|
205
|
+
yield
|
205
206
|
PermanentId.assign!(self)
|
206
207
|
end
|
207
208
|
|
@@ -9,12 +9,9 @@ module Ddr
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def structure
|
12
|
-
|
13
|
-
|
14
|
-
@structure = Ddr::Models::Structure.new(Nokogiri::XML(datastreams[Ddr::Datastreams::STRUCT_METADATA].content))
|
15
|
-
end
|
12
|
+
if datastreams[Ddr::Datastreams::STRUCT_METADATA].has_content?
|
13
|
+
Ddr::Models::Structure.new(Nokogiri::XML(datastreams[Ddr::Datastreams::STRUCT_METADATA].content))
|
16
14
|
end
|
17
|
-
@structure
|
18
15
|
end
|
19
16
|
|
20
17
|
def multires_image_file_paths
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Ddr::Models::Structures
|
2
|
+
class ComponentTypeTerm
|
3
|
+
|
4
|
+
CONFIG_FILE = ::File.join(Rails.root, 'config', 'structure_component_type.yml')
|
5
|
+
|
6
|
+
@@lookup = {}
|
7
|
+
|
8
|
+
def self.term(media_type)
|
9
|
+
hit = lookup_table.detect { |k,v| media_type =~ k }
|
10
|
+
hit.last if hit
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.lookup_table
|
14
|
+
load_lookup if @@lookup.empty?
|
15
|
+
@@lookup
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.load_lookup
|
19
|
+
config = YAML::load(::File.read(CONFIG_FILE))
|
20
|
+
config.each do |type_term, media_types|
|
21
|
+
media_types.each do |media_type|
|
22
|
+
lookup_key = Regexp.new("\\A#{media_type.gsub('*', '.*')}\\Z")
|
23
|
+
@@lookup[lookup_key] = type_term
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
data/lib/ddr/models/version.rb
CHANGED
@@ -0,0 +1,18 @@
|
|
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/*
|
@@ -1,65 +1,63 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<fits xmlns="http://hul.harvard.edu/ois/xml/ns/fits/fits_output" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://hul.harvard.edu/ois/xml/ns/fits/fits_output http://hul.harvard.edu/ois/xml/xsd/fits/fits_output.xsd" version="
|
2
|
+
<fits xmlns="http://hul.harvard.edu/ois/xml/ns/fits/fits_output" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://hul.harvard.edu/ois/xml/ns/fits/fits_output http://hul.harvard.edu/ois/xml/xsd/fits/fits_output.xsd" version="1.2.0" timestamp="10/17/17 5:48 PM">
|
3
3
|
<identification>
|
4
|
-
<identity format="Portable Document Format" mimetype="application/pdf" toolname="FITS" toolversion="
|
5
|
-
<tool toolname="
|
6
|
-
<tool toolname="
|
7
|
-
<tool toolname="
|
8
|
-
<tool toolname="
|
9
|
-
<tool toolname="NLNZ Metadata Extractor" toolversion="3.
|
4
|
+
<identity format="Portable Document Format" mimetype="application/pdf" toolname="FITS" toolversion="1.2.0">
|
5
|
+
<tool toolname="Droid" toolversion="6.3" />
|
6
|
+
<tool toolname="Jhove" toolversion="1.16" />
|
7
|
+
<tool toolname="file utility" toolversion="5.25" />
|
8
|
+
<tool toolname="Exiftool" toolversion="10.00" />
|
9
|
+
<tool toolname="NLNZ Metadata Extractor" toolversion="3.6GA" />
|
10
10
|
<tool toolname="ffident" toolversion="0.2" />
|
11
|
-
<tool toolname="Tika" toolversion="1.
|
12
|
-
<version toolname="
|
13
|
-
<externalIdentifier toolname="Droid" toolversion="6.
|
11
|
+
<tool toolname="Tika" toolversion="1.10" />
|
12
|
+
<version toolname="Droid" toolversion="6.3">1.6</version>
|
13
|
+
<externalIdentifier toolname="Droid" toolversion="6.3" type="puid">fmt/20</externalIdentifier>
|
14
14
|
</identity>
|
15
15
|
</identification>
|
16
16
|
<fileinfo>
|
17
|
-
<size toolname="Jhove" toolversion="1.
|
18
|
-
<creatingApplicationName toolname="Exiftool" toolversion="
|
19
|
-
<
|
20
|
-
<lastmodified toolname="
|
21
|
-
<
|
22
|
-
<created toolname="Exiftool" toolversion="9.13" status="SINGLE_RESULT">2015:06:05 15:16:23-04:00</created>
|
17
|
+
<size toolname="Jhove" toolversion="1.16">2176353</size>
|
18
|
+
<creatingApplicationName toolname="Exiftool" toolversion="10.00">Adobe PDF Library 11.0/Acrobat PDFMaker 11 for Word</creatingApplicationName>
|
19
|
+
<lastmodified toolname="Exiftool" toolversion="10.00" status="CONFLICT">2016:01:07 09:49:50-05:00</lastmodified>
|
20
|
+
<lastmodified toolname="Tika" toolversion="1.10" status="CONFLICT">2016-01-07T14:49:50Z</lastmodified>
|
21
|
+
<created toolname="Exiftool" toolversion="10.00" status="SINGLE_RESULT">2015:12:09 13:23:09-05:00</created>
|
23
22
|
<filepath toolname="OIS File Information" toolversion="0.2" status="SINGLE_RESULT">/Users/dc/Downloads/premis-3-0-final.pdf</filepath>
|
24
23
|
<filename toolname="OIS File Information" toolversion="0.2" status="SINGLE_RESULT">premis-3-0-final.pdf</filename>
|
25
|
-
<md5checksum toolname="OIS File Information" toolversion="0.2" status="SINGLE_RESULT">
|
26
|
-
<fslastmodified toolname="OIS File Information" toolversion="0.2" status="SINGLE_RESULT">
|
24
|
+
<md5checksum toolname="OIS File Information" toolversion="0.2" status="SINGLE_RESULT">58fee04df34490ee7ecf3cdd5ddafc72</md5checksum>
|
25
|
+
<fslastmodified toolname="OIS File Information" toolversion="0.2" status="SINGLE_RESULT">1508276630000</fslastmodified>
|
27
26
|
</fileinfo>
|
28
27
|
<filestatus>
|
29
|
-
<well-formed toolname="Jhove" toolversion="1.
|
30
|
-
<valid toolname="Jhove" toolversion="1.
|
31
|
-
<message toolname="Jhove" toolversion="1.5" status="SINGLE_RESULT">Invalid page tree node offset=390028</message>
|
32
|
-
<message toolname="Jhove" toolversion="1.5" status="SINGLE_RESULT">Outlines contain recursive references.</message>
|
28
|
+
<well-formed toolname="Jhove" toolversion="1.16" status="SINGLE_RESULT">true</well-formed>
|
29
|
+
<valid toolname="Jhove" toolversion="1.16" status="SINGLE_RESULT">true</valid>
|
33
30
|
</filestatus>
|
34
31
|
<metadata>
|
35
32
|
<document>
|
36
|
-
<title toolname="
|
37
|
-
<
|
38
|
-
<
|
39
|
-
<
|
40
|
-
<
|
41
|
-
<isTagged toolname="
|
42
|
-
<
|
43
|
-
<
|
44
|
-
<
|
45
|
-
<
|
46
|
-
<
|
47
|
-
<hasForms toolname="NLNZ Metadata Extractor" toolversion="3.
|
48
|
-
<subject toolname="Tika" toolversion="1.3" status="SINGLE_RESULT">PREMIS</subject>
|
33
|
+
<title toolname="Exiftool" toolversion="10.00">PREMIS Data Dictionary for Preservation Metadata, Version 3.0</title>
|
34
|
+
<author toolname="Exiftool" toolversion="10.00">PREMIS Editorial Committee</author>
|
35
|
+
<language toolname="Exiftool" toolversion="10.00" status="SINGLE_RESULT">en</language>
|
36
|
+
<pageCount toolname="Exiftool" toolversion="10.00">283</pageCount>
|
37
|
+
<isTagged toolname="Exiftool" toolversion="10.00" status="CONFLICT">yes</isTagged>
|
38
|
+
<isTagged toolname="NLNZ Metadata Extractor" toolversion="3.6GA" status="CONFLICT">no</isTagged>
|
39
|
+
<hasOutline toolname="Jhove" toolversion="1.16">no</hasOutline>
|
40
|
+
<hasAnnotations toolname="Jhove" toolversion="1.16" status="SINGLE_RESULT">no</hasAnnotations>
|
41
|
+
<subject toolname="Exiftool" toolversion="10.00" status="CONFLICT">PREMIS, Data Dictionary, Version 3.0, preservation metadata, library of congress</subject>
|
42
|
+
<subject toolname="Tika" toolversion="1.10" status="CONFLICT">PREMIS Data Dictionary, Version 3.0</subject>
|
43
|
+
<description toolname="Exiftool" toolversion="10.00">PREMIS Data Dictionary, Version 3.0</description>
|
44
|
+
<hasForms toolname="NLNZ Metadata Extractor" toolversion="3.6GA" status="SINGLE_RESULT">no</hasForms>
|
49
45
|
</document>
|
50
46
|
</metadata>
|
51
|
-
<statistics fitsExecutionTime="
|
47
|
+
<statistics fitsExecutionTime="1373">
|
48
|
+
<tool toolname="MediaInfo" toolversion="0.7.75" status="did not run" />
|
52
49
|
<tool toolname="OIS Audio Information" toolversion="0.1" status="did not run" />
|
53
50
|
<tool toolname="ADL Tool" toolversion="0.1" status="did not run" />
|
54
|
-
<tool toolname="
|
55
|
-
<tool toolname="
|
56
|
-
<tool toolname="
|
57
|
-
<tool toolname="
|
58
|
-
<tool toolname="
|
59
|
-
<tool toolname="
|
51
|
+
<tool toolname="VTT Tool" toolversion="0.1" status="did not run" />
|
52
|
+
<tool toolname="Droid" toolversion="6.3" executionTime="144" />
|
53
|
+
<tool toolname="Jhove" toolversion="1.16" executionTime="488" />
|
54
|
+
<tool toolname="file utility" toolversion="5.25" executionTime="471" />
|
55
|
+
<tool toolname="Exiftool" toolversion="10.00" executionTime="479" />
|
56
|
+
<tool toolname="NLNZ Metadata Extractor" toolversion="3.6GA" executionTime="454" />
|
57
|
+
<tool toolname="OIS File Information" toolversion="0.2" executionTime="141" />
|
60
58
|
<tool toolname="OIS XML Metadata" toolversion="0.2" status="did not run" />
|
61
|
-
<tool toolname="ffident" toolversion="0.2" executionTime="
|
62
|
-
<tool toolname="Tika" toolversion="1.
|
59
|
+
<tool toolname="ffident" toolversion="0.2" executionTime="449" />
|
60
|
+
<tool toolname="Tika" toolversion="1.10" executionTime="1337" />
|
63
61
|
</statistics>
|
64
62
|
</fits>
|
65
63
|
|
@@ -1,59 +1,60 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<fits xmlns="http://hul.harvard.edu/ois/xml/ns/fits/fits_output" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://hul.harvard.edu/ois/xml/ns/fits/fits_output http://hul.harvard.edu/ois/xml/xsd/fits/fits_output.xsd" version="
|
2
|
+
<fits xmlns="http://hul.harvard.edu/ois/xml/ns/fits/fits_output" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://hul.harvard.edu/ois/xml/ns/fits/fits_output http://hul.harvard.edu/ois/xml/xsd/fits/fits_output.xsd" version="1.2.0" timestamp="10/17/17 5:47 PM">
|
3
3
|
<identification>
|
4
|
-
<identity format="JPEG File Interchange Format" mimetype="image/jpeg" toolname="FITS" toolversion="
|
5
|
-
<tool toolname="
|
6
|
-
<tool toolname="
|
7
|
-
<tool toolname="
|
8
|
-
<tool toolname="
|
9
|
-
<tool toolname="NLNZ Metadata Extractor" toolversion="3.
|
10
|
-
<version toolname="
|
11
|
-
<externalIdentifier toolname="Droid" toolversion="6.
|
4
|
+
<identity format="JPEG File Interchange Format" mimetype="image/jpeg" toolname="FITS" toolversion="1.2.0">
|
5
|
+
<tool toolname="Droid" toolversion="6.3" />
|
6
|
+
<tool toolname="Jhove" toolversion="1.16" />
|
7
|
+
<tool toolname="file utility" toolversion="5.25" />
|
8
|
+
<tool toolname="Exiftool" toolversion="10.00" />
|
9
|
+
<tool toolname="NLNZ Metadata Extractor" toolversion="3.6GA" />
|
10
|
+
<version toolname="Droid" toolversion="6.3">1.01</version>
|
11
|
+
<externalIdentifier toolname="Droid" toolversion="6.3" type="puid">fmt/43</externalIdentifier>
|
12
12
|
</identity>
|
13
13
|
</identification>
|
14
14
|
<fileinfo>
|
15
|
-
<size toolname="Jhove" toolversion="1.
|
16
|
-
<creatingApplicationName toolname="Jhove" toolversion="1.
|
17
|
-
<
|
18
|
-
<
|
19
|
-
<
|
20
|
-
<
|
21
|
-
<fslastmodified toolname="OIS File Information" toolversion="0.2" status="SINGLE_RESULT">1438093195000</fslastmodified>
|
15
|
+
<size toolname="Jhove" toolversion="1.16">97220</size>
|
16
|
+
<creatingApplicationName toolname="Jhove" toolversion="1.16">File source: https://commons.wikimedia.org/wiki/File:Dante_Gabriel_Rossetti_-_Joan_of_Arc_(1882).jpg</creatingApplicationName>
|
17
|
+
<filepath toolname="OIS File Information" toolversion="0.2" status="SINGLE_RESULT">/Users/dc/Downloads/Dante_Gabriel_Rossetti_-_Joan_of_Arc_(1882).jpg</filepath>
|
18
|
+
<filename toolname="OIS File Information" toolversion="0.2" status="SINGLE_RESULT">Dante_Gabriel_Rossetti_-_Joan_of_Arc_(1882).jpg</filename>
|
19
|
+
<md5checksum toolname="OIS File Information" toolversion="0.2" status="SINGLE_RESULT">c21d5fecf9d0310858d2bfe44e5436ce</md5checksum>
|
20
|
+
<fslastmodified toolname="OIS File Information" toolversion="0.2" status="SINGLE_RESULT">1508276690000</fslastmodified>
|
22
21
|
</fileinfo>
|
23
22
|
<filestatus>
|
24
|
-
<well-formed toolname="Jhove" toolversion="1.
|
25
|
-
<valid toolname="Jhove" toolversion="1.
|
23
|
+
<well-formed toolname="Jhove" toolversion="1.16" status="SINGLE_RESULT">true</well-formed>
|
24
|
+
<valid toolname="Jhove" toolversion="1.16" status="SINGLE_RESULT">true</valid>
|
26
25
|
</filestatus>
|
27
26
|
<metadata>
|
28
27
|
<image>
|
29
|
-
<byteOrder toolname="Jhove" toolversion="1.
|
30
|
-
<compressionScheme toolname="Jhove" toolversion="1.
|
31
|
-
<imageWidth toolname="Jhove" toolversion="1.
|
32
|
-
<imageHeight toolname="
|
33
|
-
<colorSpace toolname="Jhove" toolversion="1.
|
34
|
-
<iccProfileName toolname="Exiftool" toolversion="
|
35
|
-
<YCbCrSubSampling toolname="Exiftool" toolversion="
|
36
|
-
<samplingFrequencyUnit toolname="Jhove" toolversion="1.
|
37
|
-
<xSamplingFrequency toolname="
|
38
|
-
<ySamplingFrequency toolname="
|
39
|
-
<bitsPerSample toolname="Jhove" toolversion="1.
|
40
|
-
<samplesPerPixel toolname="Jhove" toolversion="1.
|
41
|
-
<lightSource toolname="NLNZ Metadata Extractor" toolversion="3.
|
42
|
-
<iccProfileVersion toolname="Exiftool" toolversion="
|
28
|
+
<byteOrder toolname="Jhove" toolversion="1.16" status="SINGLE_RESULT">big endian</byteOrder>
|
29
|
+
<compressionScheme toolname="Jhove" toolversion="1.16" status="SINGLE_RESULT">JPEG</compressionScheme>
|
30
|
+
<imageWidth toolname="Jhove" toolversion="1.16">512</imageWidth>
|
31
|
+
<imageHeight toolname="Exiftool" toolversion="10.00">583</imageHeight>
|
32
|
+
<colorSpace toolname="Jhove" toolversion="1.16" status="SINGLE_RESULT">YCbCr</colorSpace>
|
33
|
+
<iccProfileName toolname="Exiftool" toolversion="10.00" status="SINGLE_RESULT">c2</iccProfileName>
|
34
|
+
<YCbCrSubSampling toolname="Exiftool" toolversion="10.00" status="SINGLE_RESULT">1 1</YCbCrSubSampling>
|
35
|
+
<samplingFrequencyUnit toolname="Jhove" toolversion="1.16">in.</samplingFrequencyUnit>
|
36
|
+
<xSamplingFrequency toolname="Exiftool" toolversion="10.00">128</xSamplingFrequency>
|
37
|
+
<ySamplingFrequency toolname="Exiftool" toolversion="10.00">128</ySamplingFrequency>
|
38
|
+
<bitsPerSample toolname="Jhove" toolversion="1.16">8 8 8</bitsPerSample>
|
39
|
+
<samplesPerPixel toolname="Jhove" toolversion="1.16" status="SINGLE_RESULT">3</samplesPerPixel>
|
40
|
+
<lightSource toolname="NLNZ Metadata Extractor" toolversion="3.6GA" status="SINGLE_RESULT">unknown</lightSource>
|
41
|
+
<iccProfileVersion toolname="Exiftool" toolversion="10.00" status="SINGLE_RESULT">2.1.0</iccProfileVersion>
|
43
42
|
</image>
|
44
43
|
</metadata>
|
45
|
-
<statistics fitsExecutionTime="
|
44
|
+
<statistics fitsExecutionTime="722">
|
45
|
+
<tool toolname="MediaInfo" toolversion="0.7.75" status="did not run" />
|
46
46
|
<tool toolname="OIS Audio Information" toolversion="0.1" status="did not run" />
|
47
47
|
<tool toolname="ADL Tool" toolversion="0.1" status="did not run" />
|
48
|
-
<tool toolname="
|
49
|
-
<tool toolname="
|
50
|
-
<tool toolname="
|
51
|
-
<tool toolname="
|
52
|
-
<tool toolname="
|
53
|
-
<tool toolname="
|
48
|
+
<tool toolname="VTT Tool" toolversion="0.1" status="did not run" />
|
49
|
+
<tool toolname="Droid" toolversion="6.3" executionTime="151" />
|
50
|
+
<tool toolname="Jhove" toolversion="1.16" executionTime="644" />
|
51
|
+
<tool toolname="file utility" toolversion="5.25" executionTime="545" />
|
52
|
+
<tool toolname="Exiftool" toolversion="10.00" executionTime="629" />
|
53
|
+
<tool toolname="NLNZ Metadata Extractor" toolversion="3.6GA" executionTime="592" />
|
54
|
+
<tool toolname="OIS File Information" toolversion="0.2" executionTime="148" />
|
54
55
|
<tool toolname="OIS XML Metadata" toolversion="0.2" status="did not run" />
|
55
|
-
<tool toolname="ffident" toolversion="0.2" executionTime="
|
56
|
-
<tool toolname="Tika" toolversion="1.
|
56
|
+
<tool toolname="ffident" toolversion="0.2" executionTime="537" />
|
57
|
+
<tool toolname="Tika" toolversion="1.10" executionTime="635" />
|
57
58
|
</statistics>
|
58
59
|
</fits>
|
59
60
|
|
@@ -39,23 +39,23 @@ module Ddr::Managers
|
|
39
39
|
|
40
40
|
its(:fits?) { is_expected.to be true }
|
41
41
|
|
42
|
-
its(:created) { is_expected.to eq(["2015:
|
43
|
-
its(:creating_application) { is_expected.to contain_exactly("Adobe
|
44
|
-
its(:extent) { is_expected.to eq(["
|
45
|
-
its(:file_size) { is_expected.to eq([
|
46
|
-
its(:fits_version) { is_expected.to eq("
|
42
|
+
its(:created) { is_expected.to eq(["2015:12:09 13:23:09-05:00"]) }
|
43
|
+
its(:creating_application) { is_expected.to contain_exactly("Adobe PDF Library 11.0/Acrobat PDFMaker 11 for Word") }
|
44
|
+
its(:extent) { is_expected.to eq(["2176353"]) }
|
45
|
+
its(:file_size) { is_expected.to eq([2176353]) }
|
46
|
+
its(:fits_version) { is_expected.to eq("1.2.0") }
|
47
47
|
its(:format_label) { is_expected.to eq(["Portable Document Format"]) }
|
48
48
|
its(:format_version) { is_expected.to eq(["1.6"]) }
|
49
|
-
its(:last_modified) { is_expected.to eq(["
|
50
|
-
its(:md5) { is_expected.to eq("
|
49
|
+
its(:last_modified) { is_expected.to eq(["2016-01-07T14:49:50Z"]) }
|
50
|
+
its(:md5) { is_expected.to eq("58fee04df34490ee7ecf3cdd5ddafc72") }
|
51
51
|
its(:media_type) { is_expected.to eq(["application/pdf"]) }
|
52
52
|
its(:pronom_identifier) { is_expected.to eq(["fmt/20"]) }
|
53
|
-
its(:valid) { is_expected.to eq(["
|
53
|
+
its(:valid) { is_expected.to eq(["true"]) }
|
54
54
|
its(:well_formed) { is_expected.to eq(["true"]) }
|
55
55
|
|
56
56
|
describe "datetime fields" do
|
57
|
-
its(:creation_time) { is_expected.to contain_exactly(DateTime.parse("2015-
|
58
|
-
its(:modification_time) { is_expected.to contain_exactly(DateTime.parse("
|
57
|
+
its(:creation_time) { is_expected.to contain_exactly(DateTime.parse("2015-12-09 13:23:09-05:00").to_time.utc) }
|
58
|
+
its(:modification_time) { is_expected.to contain_exactly(DateTime.parse("2016-01-07T14:49:50Z").to_time.utc) }
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
@@ -73,8 +73,8 @@ module Ddr::Managers
|
|
73
73
|
before do
|
74
74
|
obj.fits.content = fixture_file_upload(File.join("fits", "image.xml"))
|
75
75
|
end
|
76
|
-
its(:image_width) { is_expected.to eq(["
|
77
|
-
its(:image_height) { is_expected.to eq(["
|
76
|
+
its(:image_width) { is_expected.to eq(["512"]) }
|
77
|
+
its(:image_height) { is_expected.to eq(["583"]) }
|
78
78
|
its(:color_space) { is_expected.to eq(["YCbCr"]) }
|
79
79
|
its(:icc_profile_name) { is_expected.to eq(["c2"]) }
|
80
80
|
its(:icc_profile_version) { is_expected.to eq(["2.1.0"]) }
|
@@ -91,6 +91,10 @@ module Ddr::Datastreams
|
|
91
91
|
subject.set_values :type, [ "Image", "Still Image " ]
|
92
92
|
expect(subject.type).to eq([ "Image", "Still Image" ])
|
93
93
|
end
|
94
|
+
it "strips controls characters from values" do
|
95
|
+
subject.set_values :type, [ "Image", "Still\f Image" ]
|
96
|
+
expect(subject.type).to eq([ "Image", "Still Image" ])
|
97
|
+
end
|
94
98
|
end
|
95
99
|
describe "#add_value" do
|
96
100
|
it "should add the supplied value to those of the term" do
|
data/spec/models/item_spec.rb
CHANGED
@@ -66,8 +66,10 @@ RSpec.describe Item, type: :model do
|
|
66
66
|
end
|
67
67
|
end
|
68
68
|
describe "when the item has components" do
|
69
|
-
let(:comp1) {
|
70
|
-
let(:comp2) {
|
69
|
+
let(:comp1) { Component.new }
|
70
|
+
let(:comp2) { Component.new }
|
71
|
+
let(:comp3) { Component.new }
|
72
|
+
let(:comp4) { Component.new }
|
71
73
|
let(:expected) do
|
72
74
|
xml = <<-EOS
|
73
75
|
<mets xmlns="http://www.loc.gov/METS/" xmlns:xlink="http://www.w3.org/1999/xlink">
|
@@ -77,11 +79,23 @@ RSpec.describe Item, type: :model do
|
|
77
79
|
</agent>
|
78
80
|
</metsHdr>
|
79
81
|
<structMap TYPE="#{Ddr::Models::Structure::TYPE_DEFAULT}">
|
80
|
-
<div
|
81
|
-
<
|
82
|
+
<div TYPE="Documents">
|
83
|
+
<div ORDER="1">
|
84
|
+
<mptr LOCTYPE="ARK" xlink:href="ark:/99999/fk4ccc" />
|
85
|
+
</div>
|
82
86
|
</div>
|
83
|
-
<div
|
84
|
-
<
|
87
|
+
<div TYPE="Images">
|
88
|
+
<div ORDER="1">
|
89
|
+
<mptr LOCTYPE="ARK" xlink:href="ark:/99999/fk4bbb" />
|
90
|
+
</div>
|
91
|
+
<div ORDER="2">
|
92
|
+
<mptr LOCTYPE="ARK" xlink:href="ark:/99999/fk4aaa" />
|
93
|
+
</div>
|
94
|
+
</div>
|
95
|
+
<div TYPE="Other">
|
96
|
+
<div ORDER="1">
|
97
|
+
<mptr LOCTYPE="ARK" xlink:href="ark:/99999/fk4ddd" />
|
98
|
+
</div>
|
85
99
|
</div>
|
86
100
|
</structMap>
|
87
101
|
</mets>
|
@@ -89,20 +103,32 @@ RSpec.describe Item, type: :model do
|
|
89
103
|
xml
|
90
104
|
end
|
91
105
|
before do
|
92
|
-
comp1.local_id = "
|
106
|
+
comp1.local_id = "test001002"
|
93
107
|
comp1.permanent_id = "ark:/99999/fk4aaa"
|
108
|
+
comp1.upload fixture_file_upload("imageB.tif", "image/tiff")
|
94
109
|
comp1.save!
|
95
|
-
comp2.local_id = "
|
110
|
+
comp2.local_id = "test001001"
|
96
111
|
comp2.permanent_id = "ark:/99999/fk4bbb"
|
112
|
+
comp2.upload fixture_file_upload("imageA.tif", "image/tiff")
|
97
113
|
comp2.save!
|
114
|
+
comp3.local_id = "test001"
|
115
|
+
comp3.permanent_id = "ark:/99999/fk4ccc"
|
116
|
+
comp3.upload fixture_file_upload("sample.pdf", "application/pdf")
|
117
|
+
comp3.save!
|
118
|
+
comp4.local_id = "test123"
|
119
|
+
comp4.permanent_id = "ark:/99999/fk4ddd"
|
120
|
+
comp4.upload fixture_file_upload("abcd1234.vtt", "application/octet-stream")
|
121
|
+
comp4.save!
|
98
122
|
subject.children << comp1
|
99
123
|
subject.children << comp2
|
124
|
+
subject.children << comp3
|
125
|
+
subject.children << comp4
|
100
126
|
subject.save!
|
101
|
-
allow(SecureRandom).to receive(:uuid).and_return("abc-def", "ghi-jkl")
|
102
127
|
end
|
103
128
|
after do
|
104
129
|
comp1.destroy
|
105
130
|
comp2.destroy
|
131
|
+
comp3.destroy
|
106
132
|
end
|
107
133
|
it "should be the appropriate structure" do
|
108
134
|
expect(subject.default_structure.to_xml).to be_equivalent_to(expected)
|
@@ -11,10 +11,6 @@ module Ddr::Models
|
|
11
11
|
allow(described_class.identifier_class).to receive(:find).with("foo") { id }
|
12
12
|
allow(Ddr::Models).to receive(:auto_assign_permanent_id) { true }
|
13
13
|
end
|
14
|
-
after do
|
15
|
-
obj.permanent_id = nil
|
16
|
-
obj.save!
|
17
|
-
end
|
18
14
|
it "assigns a permanent id to the object" do
|
19
15
|
obj.reload
|
20
16
|
expect(obj.permanent_id).to eq("foo")
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Ddr::Models::Structures
|
2
|
+
RSpec.describe ComponentTypeTerm do
|
3
|
+
|
4
|
+
it "should return the correct term" do
|
5
|
+
expect(described_class.term('image/tiff')).to eq("Images")
|
6
|
+
expect(described_class.term('audio/x-wav')).to eq("Media")
|
7
|
+
expect(described_class.term('video/quicktime')).to eq("Media")
|
8
|
+
expect(described_class.term('text/plain')).to eq("Documents")
|
9
|
+
expect(described_class.term('application/pdf')).to eq("Documents")
|
10
|
+
expect(described_class.term('application/vnd.openxmlformats-officedocument.wordprocessingml.document')).to eq("Documents")
|
11
|
+
expect(described_class.term('application/vnd.ms-access')).to be nil
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -69,6 +69,13 @@ RSpec.shared_examples "an object that can have content" do
|
|
69
69
|
expect_any_instance_of(Ddr::Managers::DerivativesManager).to receive(:update_derivatives)
|
70
70
|
subject.save
|
71
71
|
end
|
72
|
+
it "should notify that content has changed" do
|
73
|
+
callback = lambda { |*args| args }
|
74
|
+
ActiveSupport::Notifications.subscribed(callback, "content_changed.content.repo_file") do
|
75
|
+
expect(callback).to receive(:call) { nil }
|
76
|
+
subject.save
|
77
|
+
end
|
78
|
+
end
|
72
79
|
end
|
73
80
|
|
74
81
|
context "and it's an existing object with content" do
|
@@ -78,6 +85,13 @@ RSpec.shared_examples "an object that can have content" do
|
|
78
85
|
expect_any_instance_of(Ddr::Managers::DerivativesManager).to receive(:update_derivatives)
|
79
86
|
subject.upload! file
|
80
87
|
end
|
88
|
+
it "should notify that content has changed" do
|
89
|
+
callback = lambda { |*args| args }
|
90
|
+
ActiveSupport::Notifications.subscribed(callback, "content_changed.content.repo_file") do
|
91
|
+
expect(callback).to receive(:call) { nil }
|
92
|
+
subject.upload! file
|
93
|
+
end
|
94
|
+
end
|
81
95
|
context "and it is saved with :skip_update_derivatives=>true" do
|
82
96
|
it "does not generate derivatives" do
|
83
97
|
expect_any_instance_of(Ddr::Managers::DerivativesManager).not_to receive(:update_derivatives)
|
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ddr-models
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.10.0.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jim Coble
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-11-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -393,6 +393,20 @@ dependencies:
|
|
393
393
|
- - ">="
|
394
394
|
- !ruby/object:Gem::Version
|
395
395
|
version: '0'
|
396
|
+
- !ruby/object:Gem::Dependency
|
397
|
+
name: byebug
|
398
|
+
requirement: !ruby/object:Gem::Requirement
|
399
|
+
requirements:
|
400
|
+
- - ">="
|
401
|
+
- !ruby/object:Gem::Version
|
402
|
+
version: '0'
|
403
|
+
type: :development
|
404
|
+
prerelease: false
|
405
|
+
version_requirements: !ruby/object:Gem::Requirement
|
406
|
+
requirements:
|
407
|
+
- - ">="
|
408
|
+
- !ruby/object:Gem::Version
|
409
|
+
version: '0'
|
396
410
|
description: Models used in the Duke Digital Repository
|
397
411
|
email:
|
398
412
|
- lib-drs@duke.edu
|
@@ -580,6 +594,7 @@ files:
|
|
580
594
|
- lib/ddr/models/streamable.rb
|
581
595
|
- lib/ddr/models/structure.rb
|
582
596
|
- lib/ddr/models/structures/agent.rb
|
597
|
+
- lib/ddr/models/structures/component_type_term.rb
|
583
598
|
- lib/ddr/models/structures/div.rb
|
584
599
|
- lib/ddr/models/structures/f_locat.rb
|
585
600
|
- lib/ddr/models/structures/file.rb
|
@@ -664,6 +679,7 @@ files:
|
|
664
679
|
- spec/dummy/config/locales/en.yml
|
665
680
|
- spec/dummy/config/routes.rb
|
666
681
|
- spec/dummy/config/secrets.yml
|
682
|
+
- spec/dummy/config/structure_component_type.yml
|
667
683
|
- spec/dummy/db/schema.rb
|
668
684
|
- spec/dummy/lib/assets/.keep
|
669
685
|
- spec/dummy/log/.keep
|
@@ -734,6 +750,7 @@ files:
|
|
734
750
|
- spec/models/solr_document_spec.rb
|
735
751
|
- spec/models/structure_spec.rb
|
736
752
|
- spec/models/structures/agent_spec.rb
|
753
|
+
- spec/models/structures/component_type_term_spec.rb
|
737
754
|
- spec/models/structures/div_spec.rb
|
738
755
|
- spec/models/structures/f_locat_spec.rb
|
739
756
|
- spec/models/structures/file_grp_spec.rb
|
@@ -757,7 +774,7 @@ files:
|
|
757
774
|
- spec/support/shared_examples_for_events.rb
|
758
775
|
- spec/support/shared_examples_for_governables.rb
|
759
776
|
- spec/support/shared_examples_for_has_content.rb
|
760
|
-
- spec/support/
|
777
|
+
- spec/support/shared_examples_for_has_intermediate_file.rb
|
761
778
|
- spec/support/shared_examples_for_indexing.rb
|
762
779
|
- spec/support/shared_examples_for_non_collection_models.rb
|
763
780
|
- spec/support/shared_examples_for_publication.rb
|
@@ -781,9 +798,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
781
798
|
version: '0'
|
782
799
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
783
800
|
requirements:
|
784
|
-
- - "
|
801
|
+
- - ">"
|
785
802
|
- !ruby/object:Gem::Version
|
786
|
-
version:
|
803
|
+
version: 1.3.1
|
787
804
|
requirements: []
|
788
805
|
rubyforge_project:
|
789
806
|
rubygems_version: 2.6.11
|
@@ -852,6 +869,7 @@ test_files:
|
|
852
869
|
- spec/dummy/config/locales/en.yml
|
853
870
|
- spec/dummy/config/routes.rb
|
854
871
|
- spec/dummy/config/secrets.yml
|
872
|
+
- spec/dummy/config/structure_component_type.yml
|
855
873
|
- spec/dummy/db/schema.rb
|
856
874
|
- spec/dummy/lib/assets/.keep
|
857
875
|
- spec/dummy/log/.keep
|
@@ -922,6 +940,7 @@ test_files:
|
|
922
940
|
- spec/models/solr_document_spec.rb
|
923
941
|
- spec/models/structure_spec.rb
|
924
942
|
- spec/models/structures/agent_spec.rb
|
943
|
+
- spec/models/structures/component_type_term_spec.rb
|
925
944
|
- spec/models/structures/div_spec.rb
|
926
945
|
- spec/models/structures/f_locat_spec.rb
|
927
946
|
- spec/models/structures/file_grp_spec.rb
|
@@ -945,7 +964,7 @@ test_files:
|
|
945
964
|
- spec/support/shared_examples_for_events.rb
|
946
965
|
- spec/support/shared_examples_for_governables.rb
|
947
966
|
- spec/support/shared_examples_for_has_content.rb
|
948
|
-
- spec/support/
|
967
|
+
- spec/support/shared_examples_for_has_intermediate_file.rb
|
949
968
|
- spec/support/shared_examples_for_indexing.rb
|
950
969
|
- spec/support/shared_examples_for_non_collection_models.rb
|
951
970
|
- spec/support/shared_examples_for_publication.rb
|