@@ -21,31 +21,35 @@ class ExternalRenderNodeTests: XCTestCase {
2121 referencePath: " /path/to/external/swiftArticle " ,
2222 title: " SwiftArticle " ,
2323 kind: . article,
24- language: . swift
24+ language: . swift,
25+ platforms: [ . init( name: " iOS " , introduced: nil , isBeta: false ) ]
2526 )
2627 )
2728 externalResolver. entitiesToReturn [ " /path/to/external/objCArticle " ] = . success(
2829 . init(
2930 referencePath: " /path/to/external/objCArticle " ,
3031 title: " ObjCArticle " ,
3132 kind: . article,
32- language: . objectiveC
33+ language: . objectiveC,
34+ platforms: [ . init( name: " macOS " , introduced: nil , isBeta: true ) ]
3335 )
3436 )
3537 externalResolver. entitiesToReturn [ " /path/to/external/swiftSymbol " ] = . success(
3638 . init(
3739 referencePath: " /path/to/external/swiftSymbol " ,
3840 title: " SwiftSymbol " ,
3941 kind: . class,
40- language: . swift
42+ language: . swift,
43+ platforms: [ . init( name: " iOS " , introduced: nil , isBeta: true ) ]
4144 )
4245 )
4346 externalResolver. entitiesToReturn [ " /path/to/external/objCSymbol " ] = . success(
4447 . init(
4548 referencePath: " /path/to/external/objCSymbol " ,
4649 title: " ObjCSymbol " ,
4750 kind: . function,
48- language: . objectiveC
51+ language: . objectiveC,
52+ platforms: [ . init( name: " macOS " , introduced: nil , isBeta: false ) ]
4953 )
5054 )
5155 return externalResolver
@@ -89,24 +93,28 @@ class ExternalRenderNodeTests: XCTestCase {
8993 XCTAssertEqual ( externalRenderNodes [ 0 ] . symbolKind, nil )
9094 XCTAssertEqual ( externalRenderNodes [ 0 ] . role, " article " )
9195 XCTAssertEqual ( externalRenderNodes [ 0 ] . externalIdentifier. identifier, " doc://com.test.external/path/to/external/objCArticle " )
92-
96+ XCTAssertTrue ( externalRenderNodes [ 0 ] . isBeta)
97+
9398 XCTAssertEqual ( externalRenderNodes [ 1 ] . identifier. absoluteString, " doc://org.swift.MixedLanguageFramework/example/path/to/external/objCSymbol " )
9499 XCTAssertEqual ( externalRenderNodes [ 1 ] . kind, . symbol)
95100 XCTAssertEqual ( externalRenderNodes [ 1 ] . symbolKind, nil )
96101 XCTAssertEqual ( externalRenderNodes [ 1 ] . role, " symbol " )
97102 XCTAssertEqual ( externalRenderNodes [ 1 ] . externalIdentifier. identifier, " doc://com.test.external/path/to/external/objCSymbol " )
103+ XCTAssertFalse ( externalRenderNodes [ 1 ] . isBeta)
98104
99105 XCTAssertEqual ( externalRenderNodes [ 2 ] . identifier. absoluteString, " doc://org.swift.MixedLanguageFramework/example/path/to/external/swiftArticle " )
100106 XCTAssertEqual ( externalRenderNodes [ 2 ] . kind, . article)
101107 XCTAssertEqual ( externalRenderNodes [ 2 ] . symbolKind, nil )
102108 XCTAssertEqual ( externalRenderNodes [ 2 ] . role, " article " )
103109 XCTAssertEqual ( externalRenderNodes [ 2 ] . externalIdentifier. identifier, " doc://com.test.external/path/to/external/swiftArticle " )
110+ XCTAssertFalse ( externalRenderNodes [ 2 ] . isBeta)
104111
105112 XCTAssertEqual ( externalRenderNodes [ 3 ] . identifier. absoluteString, " doc://org.swift.MixedLanguageFramework/example/path/to/external/swiftSymbol " )
106113 XCTAssertEqual ( externalRenderNodes [ 3 ] . kind, . symbol)
107114 XCTAssertEqual ( externalRenderNodes [ 3 ] . symbolKind, nil )
108115 XCTAssertEqual ( externalRenderNodes [ 3 ] . role, " symbol " )
109116 XCTAssertEqual ( externalRenderNodes [ 3 ] . externalIdentifier. identifier, " doc://com.test.external/path/to/external/swiftSymbol " )
117+ XCTAssertTrue ( externalRenderNodes [ 3 ] . isBeta)
110118 }
111119
112120 func testExternalRenderNodeVariantRepresentation( ) throws {
@@ -146,14 +154,16 @@ class ExternalRenderNodeTests: XCTestCase {
146154 )
147155 XCTAssertEqual ( swiftNavigatorExternalRenderNode. metadata. title, swiftTitle)
148156 XCTAssertEqual ( swiftNavigatorExternalRenderNode. metadata. navigatorTitle, navigatorTitle)
149-
157+ XCTAssertFalse ( swiftNavigatorExternalRenderNode. metadata. isBeta)
158+
150159 let objcNavigatorExternalRenderNode = try XCTUnwrap (
151160 NavigatorExternalRenderNode ( renderNode: externalRenderNode, trait: . interfaceLanguage( " objc " ) )
152161 )
153162 XCTAssertEqual ( objcNavigatorExternalRenderNode. metadata. title, occTitle)
154163 XCTAssertEqual ( objcNavigatorExternalRenderNode. metadata. navigatorTitle, occNavigatorTitle)
164+ XCTAssertFalse ( objcNavigatorExternalRenderNode. metadata. isBeta)
155165 }
156-
166+
157167 func testNavigatorWithExternalNodes( ) async throws {
158168 let externalResolver = generateExternalResolver ( )
159169 let ( _, bundle, context) = try await testBundleAndContext (
@@ -208,6 +218,10 @@ class ExternalRenderNodeTests: XCTestCase {
208218 XCTAssertEqual ( occExternalNodes. map ( \. title) , [ " ObjCArticle " , " ObjCSymbol " ] )
209219 XCTAssert ( swiftExternalNodes. allSatisfy ( \. isExternal) )
210220 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 )
211225 }
212226
213227 func testNavigatorWithExternalNodesOnlyAddsCuratedNodesToNavigator( ) async throws {
@@ -269,4 +283,52 @@ class ExternalRenderNodeTests: XCTestCase {
269283 XCTAssert ( swiftExternalNodes. allSatisfy ( \. isExternal) )
270284 XCTAssert ( occExternalNodes. allSatisfy ( \. isExternal) )
271285 }
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+ }
272334}
0 commit comments