@@ -97,10 +97,49 @@ func TestParsePackage(t *testing.T) {
97
97
assert .Equal (t , packageDescription , p .Metadata .Description )
98
98
assert .ElementsMatch (t , []string {"swift" , "package" }, p .Metadata .Keywords )
99
99
assert .Equal (t , packageLicense , p .Metadata .License )
100
+ assert .Equal (t , packageAuthor , p .Metadata .Author .Name )
100
101
assert .Equal (t , packageAuthor , p .Metadata .Author .GivenName )
101
102
assert .Equal (t , packageRepositoryURL , p .Metadata .RepositoryURL )
102
103
assert .ElementsMatch (t , []string {packageRepositoryURL }, p .RepositoryURLs )
103
104
})
105
+
106
+ t .Run ("WithExplicitNameField" , func (t * testing.T ) {
107
+ data := createArchive (map [string ][]byte {
108
+ "Package.swift" : []byte ("// swift-tools-version:5.7\n //\n // Package.swift" ),
109
+ })
110
+
111
+ authorName := "John Doe"
112
+ p , err := ParsePackage (
113
+ data ,
114
+ data .Size (),
115
+ strings .NewReader (`{"name":"` + packageName + `","version":"` + packageVersion + `","description":"` + packageDescription + `","author":{"name":"` + authorName + `","givenName":"John","familyName":"Doe"}}` ),
116
+ )
117
+ assert .NotNil (t , p )
118
+ assert .NoError (t , err )
119
+
120
+ assert .Equal (t , authorName , p .Metadata .Author .Name )
121
+ assert .Equal (t , "John" , p .Metadata .Author .GivenName )
122
+ assert .Equal (t , "Doe" , p .Metadata .Author .FamilyName )
123
+ })
124
+
125
+ t .Run ("NameFieldGeneration" , func (t * testing.T ) {
126
+ data := createArchive (map [string ][]byte {
127
+ "Package.swift" : []byte ("// swift-tools-version:5.7\n //\n // Package.swift" ),
128
+ })
129
+
130
+ // Test with only individual name components - Name should be auto-generated
131
+ p , err := ParsePackage (
132
+ data ,
133
+ data .Size (),
134
+ strings .NewReader (`{"author":{"givenName":"John","middleName":"Q","familyName":"Doe"}}` ),
135
+ )
136
+ assert .NotNil (t , p )
137
+ assert .NoError (t , err )
138
+ assert .Equal (t , "John Q Doe" , p .Metadata .Author .Name )
139
+ assert .Equal (t , "John" , p .Metadata .Author .GivenName )
140
+ assert .Equal (t , "Q" , p .Metadata .Author .MiddleName )
141
+ assert .Equal (t , "Doe" , p .Metadata .Author .FamilyName )
142
+ })
104
143
}
105
144
106
145
func TestTrimmedVersionString (t * testing.T ) {
@@ -142,3 +181,43 @@ func TestTrimmedVersionString(t *testing.T) {
142
181
assert .Equal (t , c .Expected , TrimmedVersionString (c .Version ))
143
182
}
144
183
}
184
+
185
+ func TestPersonNameString (t * testing.T ) {
186
+ cases := []struct {
187
+ Name string
188
+ Person Person
189
+ Expected string
190
+ }{
191
+ {
192
+ Name : "GivenNameOnly" ,
193
+ Person : Person {GivenName : "John" },
194
+ Expected : "John" ,
195
+ },
196
+ {
197
+ Name : "GivenAndFamily" ,
198
+ Person : Person {GivenName : "John" , FamilyName : "Doe" },
199
+ Expected : "John Doe" ,
200
+ },
201
+ {
202
+ Name : "FullName" ,
203
+ Person : Person {GivenName : "John" , MiddleName : "Q" , FamilyName : "Doe" },
204
+ Expected : "John Q Doe" ,
205
+ },
206
+ {
207
+ Name : "MiddleAndFamily" ,
208
+ Person : Person {MiddleName : "Q" , FamilyName : "Doe" },
209
+ Expected : "Q Doe" ,
210
+ },
211
+ {
212
+ Name : "Empty" ,
213
+ Person : Person {},
214
+ Expected : "" ,
215
+ },
216
+ }
217
+
218
+ for _ , c := range cases {
219
+ t .Run (c .Name , func (t * testing.T ) {
220
+ assert .Equal (t , c .Expected , c .Person .String ())
221
+ })
222
+ }
223
+ }
0 commit comments