cocina-models 0.94.2 → 0.95.0
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/Gemfile.lock +2 -2
- data/README.md +4 -2
- data/lib/cocina/models/validators/description_values_validator.rb +17 -1
- data/lib/cocina/models/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b9e38c26d285ece89fdd8adb1faf3cc5fd19bb4c905d7cdb7a3a338948bcd43d
|
4
|
+
data.tar.gz: 27aec9cce87dff1300ae06216eed4b9b8c7d2f449e6d8e5eebf209c99a201b94
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9c71b2c8b8740baf151eb3dfe150e9a614cc9c655c03f8cbf4924f884d7ce94c2909ec9e5d9a229eac56bc694cc8b9d8142072762b120e2edba98e7fe49f137
|
7
|
+
data.tar.gz: 8cd9dd1787b286a9816714bf75b5d99a246ac390a914ffc83bbd6c9e79bc0d0cca1644cb4d2c16e1bbbd687a2407b3565645693ab6ac5ef60bf9ab564c4eef59
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
cocina-models (0.
|
4
|
+
cocina-models (0.95.0)
|
5
5
|
activesupport
|
6
6
|
deprecation
|
7
7
|
dry-struct (~> 1.0)
|
@@ -121,7 +121,7 @@ GEM
|
|
121
121
|
rspec-core (>= 2, < 4, != 2.12.0)
|
122
122
|
rss (0.3.0)
|
123
123
|
rexml
|
124
|
-
rubocop (1.60.
|
124
|
+
rubocop (1.60.2)
|
125
125
|
json (~> 2.3)
|
126
126
|
language_server-protocol (>= 3.17.0)
|
127
127
|
parallel (~> 1.10)
|
data/README.md
CHANGED
@@ -143,7 +143,7 @@ which pushes the gem to rubygems.org.
|
|
143
143
|
|
144
144
|
### Step 2: Update client gems coupled to the models
|
145
145
|
|
146
|
-
Release new versions of [sdr-client](https://github.com/sul-dlss/sdr-client), [dor-services-client](https://github.com/sul-dlss/dor-services-client/), and [dor_indexing](https://github.com/sul-dlss/dor_indexing/) pinned to use the new cocina-models version because applications such as [Argo](https://github.com/sul-dlss/argo) depend on
|
146
|
+
Release new versions of [sdr-client](https://github.com/sul-dlss/sdr-client), [dor-services-client](https://github.com/sul-dlss/dor-services-client/), and [dor_indexing](https://github.com/sul-dlss/dor_indexing/) pinned to use the new cocina-models version because applications such as [Argo](https://github.com/sul-dlss/argo) and [Dor-Services-App](https://github.com/sul-dlss/dor-services-app)depend on these gems using the same models.
|
147
147
|
|
148
148
|
### Step 3: Update services directly coupled to the models
|
149
149
|
|
@@ -164,7 +164,9 @@ This can be accomplished by copying and pasting the cocina-models schemas to the
|
|
164
164
|
|
165
165
|
If step 3A was needed, use the same PRs to also bump the versions of cocina-models, sdr-client, and dor-services-client in these applications/services. Why? When [dor-services-app](https://github.com/sul-dlss/dor-services-app), for example, is updated to use the new models (via the auto-update script), these clients should be updated at the same time or there is risk of models produced by dor-services-app not being acceptable to the clients.
|
166
166
|
|
167
|
-
With or without step 3A, perform `bundle update` for cocina-models, sdr-client,
|
167
|
+
With or without step 3A, perform `bundle update` for cocina-models, sdr-client, dor-services-client and dor_indexing* gems in the listed services and then make PRs for those repos.
|
168
|
+
|
169
|
+
* dor_indexing gem is used by dor_indexing_app and dor-services-app only.
|
168
170
|
|
169
171
|
#### Step 3C: Merge 'em
|
170
172
|
|
@@ -14,6 +14,7 @@ module Cocina
|
|
14
14
|
@attributes = attributes
|
15
15
|
@error_paths_multiple = []
|
16
16
|
@error_paths_blank = []
|
17
|
+
@error_paths_missing_title_type = []
|
17
18
|
end
|
18
19
|
|
19
20
|
def validate
|
@@ -23,11 +24,12 @@ module Cocina
|
|
23
24
|
|
24
25
|
raise ValidationError, "Multiple value, groupedValue, structuredValue, and parallelValue in description: #{error_paths_multiple.join(', ')}" unless error_paths_multiple.empty?
|
25
26
|
raise ValidationError, "Blank value in description: #{error_paths_blank.join(', ')}" unless error_paths_blank.empty?
|
27
|
+
raise ValidationError, "Missing type for value in description: #{error_paths_missing_title_type.join(', ')}" unless error_paths_missing_title_type.empty?
|
26
28
|
end
|
27
29
|
|
28
30
|
private
|
29
31
|
|
30
|
-
attr_reader :clazz, :attributes, :error_paths_blank, :error_paths_multiple
|
32
|
+
attr_reader :clazz, :attributes, :error_paths_blank, :error_paths_multiple, :error_paths_missing_title_type
|
31
33
|
|
32
34
|
def meets_preconditions?
|
33
35
|
[Cocina::Models::Description, Cocina::Models::RequestDescription].include?(clazz)
|
@@ -36,6 +38,7 @@ module Cocina
|
|
36
38
|
def validate_hash(hash, path)
|
37
39
|
validate_values_for_blanks(hash, path)
|
38
40
|
validate_values_for_multiples(hash, path)
|
41
|
+
validate_title_type(hash, path)
|
39
42
|
hash.each do |key, obj|
|
40
43
|
validate_obj(obj, path + [key])
|
41
44
|
end
|
@@ -64,6 +67,19 @@ module Cocina
|
|
64
67
|
error_paths_multiple << path_to_s(path)
|
65
68
|
end
|
66
69
|
|
70
|
+
def validate_title_type(hash, path)
|
71
|
+
# only apply to title.structuredValue, title.parallelValue.structuredValue, or relatedResource.title with a value
|
72
|
+
return unless hash[:value] && (path.first == :title || related_resource_title?(path)) && path.include?(:structuredValue)
|
73
|
+
|
74
|
+
# if there is a "value" key, make sure there is also a "type" key, only for title.structuredValue
|
75
|
+
error_paths_missing_title_type << path_to_s(path) unless hash[:type]
|
76
|
+
end
|
77
|
+
|
78
|
+
def related_resource_title?(path)
|
79
|
+
# title is directly within relatedResource, e.g [:relatedResource, 0, :title, 0, :structuredValue, 0])
|
80
|
+
path.first == :relatedResource && path[2] == :title
|
81
|
+
end
|
82
|
+
|
67
83
|
def path_to_s(path)
|
68
84
|
# This matches the format used by descriptive spreadsheets
|
69
85
|
path_str = ''
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocina-models
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.95.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Coyne
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-01-
|
11
|
+
date: 2024-01-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -562,7 +562,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
562
562
|
- !ruby/object:Gem::Version
|
563
563
|
version: '0'
|
564
564
|
requirements: []
|
565
|
-
rubygems_version: 3.4.
|
565
|
+
rubygems_version: 3.4.10
|
566
566
|
signing_key:
|
567
567
|
specification_version: 4
|
568
568
|
summary: Data models for the SDR
|