@@ -75,20 +75,8 @@ class SampleDownloadTests: XCTestCase {
75
75
}
76
76
77
77
func testParseSampleDownload( ) throws {
78
- let ( bundle, context) = try testBundleAndContext ( named: " SampleBundle " )
79
- let reference = ResolvedTopicReference (
80
- bundleIdentifier: bundle. identifier,
81
- path: " /documentation/SampleBundle/MySample " ,
82
- sourceLanguage: . swift
83
- )
84
- let article = try XCTUnwrap ( context. entity ( with: reference) . semantic as? Article )
85
- var translator = RenderNodeTranslator (
86
- context: context,
87
- bundle: bundle,
88
- identifier: reference,
89
- source: nil
90
- )
91
- let renderNode = try XCTUnwrap ( translator. visitArticle ( article) as? RenderNode )
78
+ let renderNode = try renderNodeFromSampleBundle ( at: " /documentation/SampleBundle/MySample " )
79
+
92
80
let sampleCodeDownload = try XCTUnwrap ( renderNode. sampleDownload)
93
81
guard case . reference( identifier: let ident, isActive: true , overridingTitle: " Download " , overridingTitleInlineContent: nil ) = sampleCodeDownload. action else {
94
82
XCTFail ( " Unexpected action in callToAction " )
@@ -98,20 +86,8 @@ class SampleDownloadTests: XCTestCase {
98
86
}
99
87
100
88
func testParseSampleLocalDownload( ) throws {
101
- let ( bundle, context) = try testBundleAndContext ( named: " SampleBundle " )
102
- let reference = ResolvedTopicReference (
103
- bundleIdentifier: bundle. identifier,
104
- path: " /documentation/SampleBundle/MyLocalSample " ,
105
- sourceLanguage: . swift
106
- )
107
- let article = try XCTUnwrap ( context. entity ( with: reference) . semantic as? Article )
108
- var translator = RenderNodeTranslator (
109
- context: context,
110
- bundle: bundle,
111
- identifier: reference,
112
- source: nil
113
- )
114
- let renderNode = try XCTUnwrap ( translator. visitArticle ( article) as? RenderNode )
89
+ let renderNode = try renderNodeFromSampleBundle ( at: " /documentation/SampleBundle/MyLocalSample " )
90
+
115
91
let sampleCodeDownload = try XCTUnwrap ( renderNode. sampleDownload)
116
92
guard case . reference( identifier: let ident, isActive: true , overridingTitle: " Download " , overridingTitleInlineContent: nil ) = sampleCodeDownload. action else {
117
93
XCTFail ( " Unexpected action in callToAction " )
@@ -121,20 +97,7 @@ class SampleDownloadTests: XCTestCase {
121
97
}
122
98
123
99
func testSampleDownloadRoundtrip( ) throws {
124
- let ( bundle, context) = try testBundleAndContext ( named: " SampleBundle " )
125
- let reference = ResolvedTopicReference (
126
- bundleIdentifier: bundle. identifier,
127
- path: " /documentation/SampleBundle/MySample " ,
128
- sourceLanguage: . swift
129
- )
130
- let article = try XCTUnwrap ( context. entity ( with: reference) . semantic as? Article )
131
- var translator = RenderNodeTranslator (
132
- context: context,
133
- bundle: bundle,
134
- identifier: reference,
135
- source: nil
136
- )
137
- let renderNode = try XCTUnwrap ( translator. visitArticle ( article) as? RenderNode )
100
+ let renderNode = try renderNodeFromSampleBundle ( at: " /documentation/SampleBundle/MySample " )
138
101
139
102
let encoder = JSONEncoder ( )
140
103
let decoder = JSONDecoder ( )
@@ -161,12 +124,12 @@ class SampleDownloadTests: XCTestCase {
161
124
162
125
XCTAssertEqual ( origIdent, decodedIdent)
163
126
}
164
-
165
- func testSampleDownloadRelativeURL ( ) throws {
127
+
128
+ private func renderNodeFromSampleBundle ( at referencePath : String ) throws -> RenderNode {
166
129
let ( bundle, context) = try testBundleAndContext ( named: " SampleBundle " )
167
130
let reference = ResolvedTopicReference (
168
131
bundleIdentifier: bundle. identifier,
169
- path: " /documentation/SampleBundle/RelativeURLSample " ,
132
+ path: referencePath ,
170
133
sourceLanguage: . swift
171
134
)
172
135
let article = try XCTUnwrap ( context. entity ( with: reference) . semantic as? Article )
@@ -176,7 +139,11 @@ class SampleDownloadTests: XCTestCase {
176
139
identifier: reference,
177
140
source: nil
178
141
)
179
- let renderNode = try XCTUnwrap ( translator. visitArticle ( article) as? RenderNode )
142
+ return try XCTUnwrap ( translator. visitArticle ( article) as? RenderNode )
143
+ }
144
+
145
+ func testSampleDownloadRelativeURL( ) throws {
146
+ let renderNode = try renderNodeFromSampleBundle ( at: " /documentation/SampleBundle/RelativeURLSample " )
180
147
let sampleCodeDownload = try XCTUnwrap ( renderNode. sampleDownload)
181
148
guard case . reference( identifier: let ident, isActive: true , overridingTitle: " Download " , overridingTitleInlineContent: nil ) = sampleCodeDownload. action else {
182
149
XCTFail ( " Unexpected action in callToAction " )
@@ -197,20 +164,7 @@ class SampleDownloadTests: XCTestCase {
197
164
}
198
165
199
166
func testExternalLocationRoundtrip( ) throws {
200
- let ( bundle, context) = try testBundleAndContext ( named: " SampleBundle " )
201
- let reference = ResolvedTopicReference (
202
- bundleIdentifier: bundle. identifier,
203
- path: " /documentation/SampleBundle/RelativeURLSample " ,
204
- sourceLanguage: . swift
205
- )
206
- let article = try XCTUnwrap ( context. entity ( with: reference) . semantic as? Article )
207
- var translator = RenderNodeTranslator (
208
- context: context,
209
- bundle: bundle,
210
- identifier: reference,
211
- source: nil
212
- )
213
- let renderNode = try XCTUnwrap ( translator. visitArticle ( article) as? RenderNode )
167
+ let renderNode = try renderNodeFromSampleBundle ( at: " /documentation/SampleBundle/RelativeURLSample " )
214
168
let sampleCodeDownload = try XCTUnwrap ( renderNode. sampleDownload)
215
169
guard case . reference( identifier: let ident, isActive: true , overridingTitle: " Download " , overridingTitleInlineContent: nil ) = sampleCodeDownload. action else {
216
170
XCTFail ( " Unexpected action in callToAction " )
@@ -260,4 +214,30 @@ class SampleDownloadTests: XCTestCase {
260
214
XCTAssertEqual ( firstJson, finalJson)
261
215
}
262
216
}
217
+
218
+ func testExternalLinkOnSampleCodePage( ) throws {
219
+ let renderNode = try renderNodeFromSampleBundle ( at: " /documentation/SampleBundle/MyExternalSample " )
220
+ let sampleCodeDownload = try XCTUnwrap ( renderNode. sampleDownload)
221
+ guard case . reference( identifier: let identifier, isActive: true , overridingTitle: " View Source " , overridingTitleInlineContent: nil ) = sampleCodeDownload. action else {
222
+ XCTFail ( " Unexpected action in callToAction " )
223
+ return
224
+ }
225
+
226
+ XCTAssertEqual ( identifier. identifier, " https://www.example.com/source-repository.git " )
227
+ let reference = try XCTUnwrap ( renderNode. references [ identifier. identifier] )
228
+ XCTAssert ( reference is ExternalLocationReference )
229
+ }
230
+
231
+ func testExternalLinkOnRegularArticlePage( ) throws {
232
+ let renderNode = try renderNodeFromSampleBundle ( at: " /documentation/SampleBundle/MyArticle " )
233
+ let sampleCodeDownload = try XCTUnwrap ( renderNode. sampleDownload)
234
+ guard case . reference( identifier: let identifier, isActive: true , overridingTitle: " Visit " , overridingTitleInlineContent: nil ) = sampleCodeDownload. action else {
235
+ XCTFail ( " Unexpected action in callToAction " )
236
+ return
237
+ }
238
+
239
+ XCTAssertEqual ( identifier. identifier, " https://www.example.com " )
240
+ let reference = try XCTUnwrap ( renderNode. references [ identifier. identifier] )
241
+ XCTAssert ( reference is ExternalLocationReference )
242
+ }
263
243
}
0 commit comments