Fix author names as arrays in linked data. (#30957)
This commit is contained in:
		
							parent
							
								
									f1300ad284
								
							
						
					
					
						commit
						fa8e972722
					
				| @ -62,7 +62,8 @@ class LinkDetailsExtractor | ||||
|     end | ||||
| 
 | ||||
|     def author_name | ||||
|       author['name'] | ||||
|       name = author['name'] | ||||
|       name.is_a?(Array) ? name.join(', ') : name | ||||
|     end | ||||
| 
 | ||||
|     def author_url | ||||
| @ -294,7 +295,7 @@ class LinkDetailsExtractor | ||||
|   def html_entities_decode(string) | ||||
|     return if string.nil? | ||||
| 
 | ||||
|     unicode_string = string.encode('UTF-8') | ||||
|     unicode_string = string.to_s.encode('UTF-8') | ||||
|     raise EncodingError, 'cannot convert string to valid UTF-8' unless unicode_string.valid_encoding? | ||||
| 
 | ||||
|     html_entities.decode(unicode_string) | ||||
|  | ||||
| @ -192,6 +192,35 @@ RSpec.describe LinkDetailsExtractor do | ||||
| 
 | ||||
|       include_examples 'structured data' | ||||
|     end | ||||
| 
 | ||||
|     context 'with author names as array' do | ||||
|       let(:ld_json) do | ||||
|         { | ||||
|           '@context' => 'https://schema.org', | ||||
|           '@type' => 'NewsArticle', | ||||
|           'headline' => 'A lot of authors', | ||||
|           'description' => 'But we decided to cram them into one', | ||||
|           'author' => { | ||||
|             '@type' => 'Person', | ||||
|             'name' => ['Author 1', 'Author 2'], | ||||
|           }, | ||||
|         }.to_json | ||||
|       end | ||||
|       let(:html) { <<~HTML } | ||||
|         <!doctype html> | ||||
|         <html> | ||||
|         <body> | ||||
|           <script type="application/ld+json"> | ||||
|             #{ld_json} | ||||
|           </script> | ||||
|         </body> | ||||
|         </html> | ||||
|       HTML | ||||
| 
 | ||||
|       it 'joins author names' do | ||||
|         expect(subject.author_name).to eq 'Author 1, Author 2' | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   context 'when Open Graph protocol data is present' do | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user