@@ -169,6 +169,61 @@ class MaterialTest < ActiveSupport::TestCase
169169 assert_equal 1 , @material . authors . size
170170 end
171171
172+ test 'should set authors from array of strings (legacy API support)' do
173+ @material . authors = [ 'John Doe' , 'Jane Smith' ]
174+ @material . save!
175+ @material . reload
176+
177+ assert_equal 2 , @material . authors . size
178+ john = @material . authors . find { |a | a . last_name == 'Doe' }
179+ assert_not_nil john
180+ assert_equal 'John' , john . first_name
181+ assert_equal 'Doe' , john . last_name
182+
183+ jane = @material . authors . find { |a | a . last_name == 'Smith' }
184+ assert_not_nil jane
185+ assert_equal 'Jane' , jane . first_name
186+ assert_equal 'Smith' , jane . last_name
187+ end
188+
189+ test 'should set authors from array of hashes' do
190+ @material . authors = [
191+ { first_name : 'John' , last_name : 'Doe' , orcid : '0000-0001-1234-5678' } ,
192+ { first_name : 'Jane' , last_name : 'Smith' }
193+ ]
194+ @material . save!
195+ @material . reload
196+
197+ assert_equal 2 , @material . authors . size
198+ john = @material . authors . find { |a | a . last_name == 'Doe' }
199+ assert_not_nil john
200+ assert_equal '0000-0001-1234-5678' , john . orcid
201+ end
202+
203+ test 'should set authors from array of Person objects' do
204+ person1 = Person . create! ( first_name : 'Alice' , last_name : 'Wonder' )
205+ person2 = Person . create! ( first_name : 'Bob' , last_name : 'Builder' )
206+
207+ @material . authors = [ person1 , person2 ]
208+ @material . save!
209+ @material . reload
210+
211+ assert_equal 2 , @material . authors . size
212+ assert @material . authors . include? ( person1 )
213+ assert @material . authors . include? ( person2 )
214+ end
215+
216+ test 'should handle single name in legacy author string' do
217+ @material . authors = [ 'Madonna' , 'Prince' ]
218+ @material . save!
219+ @material . reload
220+
221+ assert_equal 2 , @material . authors . size
222+ madonna = @material . authors . find { |a | a . last_name == 'Madonna' }
223+ assert_not_nil madonna
224+ assert_equal '' , madonna . first_name
225+ end
226+
172227 test 'should delete material when content provider deleted' do
173228 material = @material
174229 content_provider = @material . content_provider
0 commit comments