@@ -21,31 +21,35 @@ class ExternalRenderNodeTests: XCTestCase {
21
21
referencePath: " /path/to/external/swiftArticle " ,
22
22
title: " SwiftArticle " ,
23
23
kind: . article,
24
- language: . swift
24
+ language: . swift,
25
+ platforms: [ . init( name: " iOS " , introduced: nil , isBeta: false ) ]
25
26
)
26
27
)
27
28
externalResolver. entitiesToReturn [ " /path/to/external/objCArticle " ] = . success(
28
29
. init(
29
30
referencePath: " /path/to/external/objCArticle " ,
30
31
title: " ObjCArticle " ,
31
32
kind: . article,
32
- language: . objectiveC
33
+ language: . objectiveC,
34
+ platforms: [ . init( name: " macOS " , introduced: nil , isBeta: true ) ]
33
35
)
34
36
)
35
37
externalResolver. entitiesToReturn [ " /path/to/external/swiftSymbol " ] = . success(
36
38
. init(
37
39
referencePath: " /path/to/external/swiftSymbol " ,
38
40
title: " SwiftSymbol " ,
39
41
kind: . class,
40
- language: . swift
42
+ language: . swift,
43
+ platforms: [ . init( name: " iOS " , introduced: nil , isBeta: true ) ]
41
44
)
42
45
)
43
46
externalResolver. entitiesToReturn [ " /path/to/external/objCSymbol " ] = . success(
44
47
. init(
45
48
referencePath: " /path/to/external/objCSymbol " ,
46
49
title: " ObjCSymbol " ,
47
50
kind: . function,
48
- language: . objectiveC
51
+ language: . objectiveC,
52
+ platforms: [ . init( name: " macOS " , introduced: nil , isBeta: false ) ]
49
53
)
50
54
)
51
55
return externalResolver
@@ -89,24 +93,28 @@ class ExternalRenderNodeTests: XCTestCase {
89
93
XCTAssertEqual ( externalRenderNodes [ 0 ] . symbolKind, nil )
90
94
XCTAssertEqual ( externalRenderNodes [ 0 ] . role, " article " )
91
95
XCTAssertEqual ( externalRenderNodes [ 0 ] . externalIdentifier. identifier, " doc://com.test.external/path/to/external/objCArticle " )
92
-
96
+ XCTAssertTrue ( externalRenderNodes [ 0 ] . isBeta)
97
+
93
98
XCTAssertEqual ( externalRenderNodes [ 1 ] . identifier. absoluteString, " doc://org.swift.MixedLanguageFramework/example/path/to/external/objCSymbol " )
94
99
XCTAssertEqual ( externalRenderNodes [ 1 ] . kind, . symbol)
95
100
XCTAssertEqual ( externalRenderNodes [ 1 ] . symbolKind, nil )
96
101
XCTAssertEqual ( externalRenderNodes [ 1 ] . role, " symbol " )
97
102
XCTAssertEqual ( externalRenderNodes [ 1 ] . externalIdentifier. identifier, " doc://com.test.external/path/to/external/objCSymbol " )
103
+ XCTAssertFalse ( externalRenderNodes [ 1 ] . isBeta)
98
104
99
105
XCTAssertEqual ( externalRenderNodes [ 2 ] . identifier. absoluteString, " doc://org.swift.MixedLanguageFramework/example/path/to/external/swiftArticle " )
100
106
XCTAssertEqual ( externalRenderNodes [ 2 ] . kind, . article)
101
107
XCTAssertEqual ( externalRenderNodes [ 2 ] . symbolKind, nil )
102
108
XCTAssertEqual ( externalRenderNodes [ 2 ] . role, " article " )
103
109
XCTAssertEqual ( externalRenderNodes [ 2 ] . externalIdentifier. identifier, " doc://com.test.external/path/to/external/swiftArticle " )
110
+ XCTAssertFalse ( externalRenderNodes [ 2 ] . isBeta)
104
111
105
112
XCTAssertEqual ( externalRenderNodes [ 3 ] . identifier. absoluteString, " doc://org.swift.MixedLanguageFramework/example/path/to/external/swiftSymbol " )
106
113
XCTAssertEqual ( externalRenderNodes [ 3 ] . kind, . symbol)
107
114
XCTAssertEqual ( externalRenderNodes [ 3 ] . symbolKind, nil )
108
115
XCTAssertEqual ( externalRenderNodes [ 3 ] . role, " symbol " )
109
116
XCTAssertEqual ( externalRenderNodes [ 3 ] . externalIdentifier. identifier, " doc://com.test.external/path/to/external/swiftSymbol " )
117
+ XCTAssertTrue ( externalRenderNodes [ 3 ] . isBeta)
110
118
}
111
119
112
120
func testExternalRenderNodeVariantRepresentation( ) throws {
@@ -146,14 +154,16 @@ class ExternalRenderNodeTests: XCTestCase {
146
154
)
147
155
XCTAssertEqual ( swiftNavigatorExternalRenderNode. metadata. title, swiftTitle)
148
156
XCTAssertEqual ( swiftNavigatorExternalRenderNode. metadata. navigatorTitle, navigatorTitle)
149
-
157
+ XCTAssertFalse ( swiftNavigatorExternalRenderNode. metadata. isBeta)
158
+
150
159
let objcNavigatorExternalRenderNode = try XCTUnwrap (
151
160
NavigatorExternalRenderNode ( renderNode: externalRenderNode, trait: . interfaceLanguage( " objc " ) )
152
161
)
153
162
XCTAssertEqual ( objcNavigatorExternalRenderNode. metadata. title, occTitle)
154
163
XCTAssertEqual ( objcNavigatorExternalRenderNode. metadata. navigatorTitle, occNavigatorTitle)
164
+ XCTAssertFalse ( objcNavigatorExternalRenderNode. metadata. isBeta)
155
165
}
156
-
166
+
157
167
func testNavigatorWithExternalNodes( ) async throws {
158
168
let externalResolver = generateExternalResolver ( )
159
169
let ( _, bundle, context) = try await testBundleAndContext (
@@ -208,6 +218,10 @@ class ExternalRenderNodeTests: XCTestCase {
208
218
XCTAssertEqual ( occExternalNodes. map ( \. title) , [ " ObjCArticle " , " ObjCSymbol " ] )
209
219
XCTAssert ( swiftExternalNodes. allSatisfy ( \. isExternal) )
210
220
XCTAssert ( occExternalNodes. allSatisfy ( \. isExternal) )
221
+ XCTAssert ( swiftExternalNodes. first { $0. title == " SwiftArticle " } ? . isBeta == false )
222
+ XCTAssert ( swiftExternalNodes. first { $0. title == " SwiftSymbol " } ? . isBeta == true )
223
+ XCTAssert ( occExternalNodes. first { $0. title == " ObjCArticle " } ? . isBeta == true )
224
+ XCTAssert ( occExternalNodes. first { $0. title == " ObjCSymbol " } ? . isBeta == false )
211
225
}
212
226
213
227
func testNavigatorWithExternalNodesOnlyAddsCuratedNodesToNavigator( ) async throws {
@@ -269,4 +283,52 @@ class ExternalRenderNodeTests: XCTestCase {
269
283
XCTAssert ( swiftExternalNodes. allSatisfy ( \. isExternal) )
270
284
XCTAssert ( occExternalNodes. allSatisfy ( \. isExternal) )
271
285
}
286
+
287
+ func testExternalRenderNodeVariantRepresentationWhenIsBeta( ) throws {
288
+ let renderReferenceIdentifier = RenderReferenceIdentifier ( forExternalLink: " doc://com.test.external/path/to/external/symbol " )
289
+
290
+ // Variants for the title
291
+ let swiftTitle = " Swift Symbol "
292
+ let occTitle = " Occ Symbol "
293
+
294
+ // Variants for the navigator title
295
+ let navigatorTitle : [ DeclarationRenderSection . Token ] = [ . init( text: " symbol " , kind: . identifier) ]
296
+ let occNavigatorTitle : [ DeclarationRenderSection . Token ] = [ . init( text: " occ_symbol " , kind: . identifier) ]
297
+
298
+ // Variants for the fragments
299
+ let fragments : [ DeclarationRenderSection . Token ] = [ . init( text: " func " , kind: . keyword) , . init( text: " symbol " , kind: . identifier) ]
300
+ let occFragments : [ DeclarationRenderSection . Token ] = [ . init( text: " func " , kind: . keyword) , . init( text: " occ_symbol " , kind: . identifier) ]
301
+
302
+ let externalEntity = LinkResolver . ExternalEntity (
303
+ topicRenderReference: . init(
304
+ identifier: renderReferenceIdentifier,
305
+ titleVariants: . init( defaultValue: swiftTitle, objectiveCValue: occTitle) ,
306
+ abstractVariants: . init( defaultValue: [ ] ) ,
307
+ url: " /example/path/to/external/symbol " ,
308
+ kind: . symbol,
309
+ fragmentsVariants: . init( defaultValue: fragments, objectiveCValue: occFragments) ,
310
+ navigatorTitleVariants: . init( defaultValue: navigatorTitle, objectiveCValue: occNavigatorTitle) ,
311
+ isBeta: true
312
+ ) ,
313
+ renderReferenceDependencies: . init( ) ,
314
+ sourceLanguages: [ SourceLanguage ( name: " swift " ) , SourceLanguage ( name: " objc " ) ] )
315
+ let externalRenderNode = ExternalRenderNode (
316
+ externalEntity: externalEntity,
317
+ bundleIdentifier: " com.test.external "
318
+ )
319
+
320
+ let swiftNavigatorExternalRenderNode = try XCTUnwrap (
321
+ NavigatorExternalRenderNode ( renderNode: externalRenderNode)
322
+ )
323
+ XCTAssertEqual ( swiftNavigatorExternalRenderNode. metadata. title, swiftTitle)
324
+ XCTAssertEqual ( swiftNavigatorExternalRenderNode. metadata. navigatorTitle, navigatorTitle)
325
+ XCTAssertTrue ( swiftNavigatorExternalRenderNode. metadata. isBeta)
326
+
327
+ let objcNavigatorExternalRenderNode = try XCTUnwrap (
328
+ NavigatorExternalRenderNode ( renderNode: externalRenderNode, trait: . interfaceLanguage( " objc " ) )
329
+ )
330
+ XCTAssertEqual ( objcNavigatorExternalRenderNode. metadata. title, occTitle)
331
+ XCTAssertEqual ( objcNavigatorExternalRenderNode. metadata. navigatorTitle, occNavigatorTitle)
332
+ XCTAssertTrue ( objcNavigatorExternalRenderNode. metadata. isBeta)
333
+ }
272
334
}
0 commit comments