File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -42,6 +42,7 @@ def enhance_metadata
4242 metadata . each do |key , value |
4343 translate_formats ( key , value )
4444 enhance_subjects ( key , value )
45+ infer_geometry_type_from_subject ( key , value )
4546 format_proper_date ( key , value )
4647 fields_should_be_array ( key , value )
4748 translate_geometry_type ( key , value )
@@ -115,6 +116,17 @@ def translate_geometry_type(key, value)
115116 metadata [ key ] = geometry_types [ value ]
116117 end
117118
119+ ##
120+ # Enhances empty 'layer_geom_type_s' field by populating from related subject
121+ def infer_geometry_type_from_subject ( key , value )
122+ return unless key == 'layer_geom_type_s' && value . blank?
123+
124+ # If any subjects match a known geometry type, use the first that does as the geometry type
125+ metadata [ 'dc_subject_sm' ] . find { |subject | geometry_types . value? ( subject . capitalize ) } &.tap do |subject |
126+ metadata [ key ] = subject . capitalize
127+ end
128+ end
129+
118130 ##
119131 # Enhances the 'dc_subject_sm' field by translating subjects to ISO topic
120132 # categories
Original file line number Diff line number Diff line change 6161 it 'formats the geometry type field' do
6262 expect ( enhanced_geobl . metadata [ 'layer_geom_type_s' ] ) . to eq 'Polygon'
6363 end
64+
65+ it 'populates the geometry type field from the subject field if not set' do
66+ enhanced_from_subject_geobl = described_class . new ( basic_geoblacklight , 'dc_subject_sm' => [ 'polygon' ] )
67+ enhanced_from_subject_geobl . enhance_metadata
68+ expect ( enhanced_from_subject_geobl . metadata [ 'layer_geom_type_s' ] ) . to eq 'Polygon'
69+ end
6470 end
6571
6672 describe '#validate!' do
You can’t perform that action at this time.
0 commit comments