@@ -41,6 +41,11 @@ class ExternalRenderNodeTests: XCTestCase {
41
41
title: " SwiftSymbol " ,
42
42
kind: . class,
43
43
language: . swift,
44
+ declarationFragments: . init( declarationFragments: [
45
+ . init( kind: . keyword, spelling: " class " , preciseIdentifier: nil ) ,
46
+ . init( kind: . text, spelling: " " , preciseIdentifier: nil ) ,
47
+ . init( kind: . identifier, spelling: " SwiftSymbol " , preciseIdentifier: nil )
48
+ ] ) ,
44
49
platforms: [ . init( name: " iOS " , introduced: nil , isBeta: true ) ]
45
50
)
46
51
)
@@ -50,6 +55,13 @@ class ExternalRenderNodeTests: XCTestCase {
50
55
title: " ObjCSymbol " ,
51
56
kind: . function,
52
57
language: . objectiveC,
58
+ declarationFragments: . init( declarationFragments: [
59
+ . init( kind: . text, spelling: " - " , preciseIdentifier: nil ) ,
60
+ . init( kind: . text, spelling: " ( " , preciseIdentifier: nil ) ,
61
+ . init( kind: . typeIdentifier, spelling: " void " , preciseIdentifier: nil ) ,
62
+ . init( kind: . text, spelling: " ) " , preciseIdentifier: nil ) ,
63
+ . init( kind: . identifier, spelling: " ObjCSymbol " , preciseIdentifier: nil )
64
+ ] ) ,
53
65
platforms: [ . init( name: " macOS " , introduced: nil , isBeta: false ) ]
54
66
)
55
67
)
@@ -152,12 +164,14 @@ class ExternalRenderNodeTests: XCTestCase {
152
164
)
153
165
XCTAssertEqual ( swiftNavigatorExternalRenderNode. metadata. title, swiftTitle)
154
166
XCTAssertFalse ( swiftNavigatorExternalRenderNode. metadata. isBeta)
155
-
167
+ XCTAssertEqual ( swiftNavigatorExternalRenderNode. metadata. fragments, swiftFragments)
168
+
156
169
let objcNavigatorExternalRenderNode = try XCTUnwrap (
157
170
NavigatorExternalRenderNode ( renderNode: externalRenderNode, trait: . interfaceLanguage( SourceLanguage . objectiveC. id) )
158
171
)
159
172
XCTAssertEqual ( objcNavigatorExternalRenderNode. metadata. title, objcTitle)
160
173
XCTAssertFalse ( objcNavigatorExternalRenderNode. metadata. isBeta)
174
+ XCTAssertEqual ( objcNavigatorExternalRenderNode. metadata. fragments, objcFragments)
161
175
}
162
176
163
177
func testNavigatorWithExternalNodes( ) async throws {
@@ -218,19 +232,38 @@ class ExternalRenderNodeTests: XCTestCase {
218
232
XCTAssertEqual ( renderIndex. interfaceLanguages [ SourceLanguage . swift. id] ? . count ( where: \. isExternal) , 0 )
219
233
XCTAssertEqual ( renderIndex. interfaceLanguages [ SourceLanguage . objectiveC. id] ? . count ( where: \. isExternal) , 0 )
220
234
235
+
236
+ func externalNodes( by language: SourceLanguage ) -> [ RenderIndex . Node ] ? {
237
+ renderIndex. interfaceLanguages [ language. id] ? . first? . children? . filter ( \. isExternal)
238
+ }
239
+
221
240
// Verify that the curated external links are part of the index.
222
- let swiftExternalNodes = ( renderIndex. interfaceLanguages [ SourceLanguage . swift. id] ? . first? . children? . filter ( \. isExternal) ?? [ ] ) . sorted ( by: \. title)
223
- let objcExternalNodes = ( renderIndex. interfaceLanguages [ SourceLanguage . objectiveC. id] ? . first? . children? . filter ( \. isExternal) ?? [ ] ) . sorted ( by: \. title)
241
+ let swiftExternalNodes = try XCTUnwrap ( externalNodes ( by: . swift) )
224
242
XCTAssertEqual ( swiftExternalNodes. count, 2 )
243
+
244
+ let objcExternalNodes = try XCTUnwrap ( externalNodes ( by: . objectiveC) )
225
245
XCTAssertEqual ( objcExternalNodes. count, 2 )
226
- XCTAssertEqual ( swiftExternalNodes. map ( \. title) , [ " SwiftArticle " , " SwiftSymbol " ] )
227
- XCTAssertEqual ( objcExternalNodes. map ( \. title) , [ " ObjCArticle " , " ObjCSymbol " ] )
228
- XCTAssert ( swiftExternalNodes. first? . isBeta == false )
229
- XCTAssert ( swiftExternalNodes. last? . isBeta == true )
230
- XCTAssert ( objcExternalNodes. first? . isBeta == true )
231
- XCTAssert ( objcExternalNodes. last? . isBeta == false )
232
- XCTAssertEqual ( swiftExternalNodes. map ( \. type) , [ " article " , " class " ] )
233
- XCTAssertEqual ( objcExternalNodes. map ( \. type) , [ " article " , " func " ] )
246
+
247
+ let swiftArticleExternalNode = try XCTUnwrap ( swiftExternalNodes. first ( where: { $0. path == " /path/to/external/swiftarticle " } ) )
248
+ let swiftSymbolExternalNode = try XCTUnwrap ( swiftExternalNodes. first ( where: { $0. path == " /path/to/external/swiftsymbol " } ) )
249
+ let objcArticleExternalNode = try XCTUnwrap ( objcExternalNodes. first ( where: { $0. path == " /path/to/external/objcarticle " } ) )
250
+ let objcSymbolExternalNode = try XCTUnwrap ( objcExternalNodes. first ( where: { $0. path == " /path/to/external/objcsymbol " } ) )
251
+
252
+ XCTAssertEqual ( swiftArticleExternalNode. title, " SwiftArticle " )
253
+ XCTAssertEqual ( swiftArticleExternalNode. isBeta, false )
254
+ XCTAssertEqual ( swiftArticleExternalNode. type, " article " )
255
+
256
+ XCTAssertEqual ( swiftSymbolExternalNode. title, " SwiftSymbol " ) // Classes don't use declaration fragments in their navigator title
257
+ XCTAssertEqual ( swiftSymbolExternalNode. isBeta, true )
258
+ XCTAssertEqual ( swiftSymbolExternalNode. type, " class " )
259
+
260
+ XCTAssertEqual ( objcArticleExternalNode. title, " ObjCArticle " )
261
+ XCTAssertEqual ( objcArticleExternalNode. isBeta, true )
262
+ XCTAssertEqual ( objcArticleExternalNode. type, " article " )
263
+
264
+ XCTAssertEqual ( objcSymbolExternalNode. title, " - (void) ObjCSymbol " )
265
+ XCTAssertEqual ( objcSymbolExternalNode. isBeta, false )
266
+ XCTAssertEqual ( objcSymbolExternalNode. type, " func " )
234
267
}
235
268
236
269
func testNavigatorWithExternalNodesOnlyAddsCuratedNodesToNavigator( ) async throws {
@@ -299,7 +332,7 @@ class ExternalRenderNodeTests: XCTestCase {
299
332
XCTAssertEqual ( swiftExternalNodes. count, 1 )
300
333
XCTAssertEqual ( objcExternalNodes. count, 1 )
301
334
XCTAssertEqual ( swiftExternalNodes. map ( \. title) , [ " SwiftArticle " ] )
302
- XCTAssertEqual ( objcExternalNodes. map ( \. title) , [ " ObjCSymbol " ] )
335
+ XCTAssertEqual ( objcExternalNodes. map ( \. title) , [ " - (void) ObjCSymbol" ] )
303
336
XCTAssertEqual ( swiftExternalNodes. map ( \. type) , [ " article " ] )
304
337
XCTAssertEqual ( objcExternalNodes. map ( \. type) , [ " func " ] )
305
338
}
0 commit comments