1
- using System ;
2
- using System . Collections . Generic ;
3
- using System . IO ;
4
- using System . Linq ;
5
- using System . Net . Http ;
6
- using System . Reflection ;
7
- using System . Threading . Tasks ;
8
- using AngleSharp . Html . Parser ;
1
+ using AngleSharp . Html . Parser ;
9
2
using FakeItEasy ;
10
3
using Kontent . Ai . Delivery . Abstractions ;
11
4
using Kontent . Ai . Delivery . ContentItems ;
14
7
using Kontent . Ai . Urls . Delivery . QueryParameters ;
15
8
using NodaTime ;
16
9
using RichardSzalay . MockHttp ;
10
+ using System ;
11
+ using System . Collections . Generic ;
12
+ using System . IO ;
13
+ using System . Linq ;
14
+ using System . Net . Http ;
15
+ using System . Reflection ;
16
+ using System . Threading . Tasks ;
17
17
using Xunit ;
18
18
19
19
namespace Kontent . Ai . Delivery . Tests
@@ -72,7 +72,7 @@ public async void LinkedItemCodenamesValueConverter()
72
72
73
73
var article = await client . GetItemAsync < Article > ( "on_roasts" ) ;
74
74
75
- Assert . Equal ( new [ ] { "coffee_processing_techniques" , "origins_of_arabica_bourbon" } , article . Item . RelatedArticleCodenames ) ;
75
+ Assert . Equal ( new [ ] { "coffee_processing_techniques" , "origins_of_arabica_bourbon" } , article . Item . RelatedArticleCodenames ) ;
76
76
}
77
77
78
78
[ Fact ]
@@ -120,7 +120,7 @@ public async void RichTextViaValueConverter()
120
120
Assert . NotNull ( hostedVideo ) ;
121
121
Assert . NotNull ( tweet ) ;
122
122
}
123
-
123
+
124
124
[ Fact ]
125
125
public async Task AssetElementValueConverter_NoPresetSpecifiedInConfig_AssetUrlIsUntouched ( )
126
126
{
@@ -138,7 +138,26 @@ public async Task AssetElementValueConverter_NoPresetSpecifiedInConfig_AssetUrlI
138
138
139
139
Assert . Equal ( assetUrl , teaserImage . Url ) ;
140
140
}
141
-
141
+
142
+ [ Fact ]
143
+ public async Task AssetElementValueConverter_NoPresetSpecifiedInConfig_AssetUrlReplacementSpecifiedInConfig_AssetUrlIsTouched ( )
144
+ {
145
+ var mockHttp = new MockHttpMessageHandler ( ) ;
146
+ mockHttp
147
+ . When ( $ "{ _baseUrl } /items/coffee_beverages_explained")
148
+ . Respond ( "application/json" , await File . ReadAllTextAsync ( Path . Combine ( Environment . CurrentDirectory , $ "Fixtures{ Path . DirectorySeparatorChar } DeliveryClient{ Path . DirectorySeparatorChar } coffee_beverages_explained.json") ) ) ;
149
+
150
+ var client = InitializeDeliveryClient ( mockHttp ) ;
151
+ client . DeliveryOptions . CurrentValue . AssetUrlReplacement = "https://cdn.example.com/assets" ;
152
+
153
+ var response = await client . GetItemAsync < Article > ( "coffee_beverages_explained" ) ;
154
+ var teaserImage = response . Item . TeaserImage . FirstOrDefault ( ) ;
155
+
156
+ var assetUrl = "https://cdn.example.com/assets/975bf280-fd91-488c-994c-2f04416e5ee3/e700596b-03b0-4cee-ac5c-9212762c027a/coffee-beverages-explained-1080px.jpg" ;
157
+
158
+ Assert . Equal ( assetUrl , teaserImage . Url ) ;
159
+ }
160
+
142
161
[ Fact ]
143
162
public async Task AssetElementValueConverter_DefaultPresetSpecifiedInConfig_AssetUrlContainsDefaultRenditionQuery ( )
144
163
{
@@ -149,7 +168,7 @@ public async Task AssetElementValueConverter_DefaultPresetSpecifiedInConfig_Asse
149
168
150
169
var defaultRenditionPreset = "default" ;
151
170
152
- var client = InitializeDeliveryClient ( mockHttp , new DeliveryOptions { EnvironmentId = _guid , DefaultRenditionPreset = defaultRenditionPreset } ) ;
171
+ var client = InitializeDeliveryClient ( mockHttp , new DeliveryOptions { EnvironmentId = _guid , DefaultRenditionPreset = defaultRenditionPreset } ) ;
153
172
154
173
var response = await client . GetItemAsync < Article > ( "coffee_beverages_explained" ) ;
155
174
var teaserImage = response . Item . TeaserImage . FirstOrDefault ( ) ;
@@ -159,7 +178,29 @@ public async Task AssetElementValueConverter_DefaultPresetSpecifiedInConfig_Asse
159
178
160
179
Assert . Equal ( $ "{ assetUrl } ?{ defaultRenditionQuery } ", teaserImage . Url ) ;
161
180
}
162
-
181
+
182
+ [ Fact ]
183
+ public async Task AssetElementValueConverter_DefaultPresetSpecifiedInConfig_AssetUrlReplacementSpecifiedInConfig_AssetUrlContainsDefaultRenditionQuery ( )
184
+ {
185
+ var mockHttp = new MockHttpMessageHandler ( ) ;
186
+ mockHttp
187
+ . When ( $ "{ _baseUrl } /items/coffee_beverages_explained")
188
+ . Respond ( "application/json" , await File . ReadAllTextAsync ( Path . Combine ( Environment . CurrentDirectory , $ "Fixtures{ Path . DirectorySeparatorChar } DeliveryClient{ Path . DirectorySeparatorChar } coffee_beverages_explained.json") ) ) ;
189
+
190
+ var defaultRenditionPreset = "default" ;
191
+
192
+ var client = InitializeDeliveryClient ( mockHttp , new DeliveryOptions { EnvironmentId = _guid , DefaultRenditionPreset = defaultRenditionPreset } ) ;
193
+ client . DeliveryOptions . CurrentValue . AssetUrlReplacement = "https://cdn.example.com/assets" ;
194
+
195
+ var response = await client . GetItemAsync < Article > ( "coffee_beverages_explained" ) ;
196
+ var teaserImage = response . Item . TeaserImage . FirstOrDefault ( ) ;
197
+
198
+ var assetUrl = "https://cdn.example.com/assets/975bf280-fd91-488c-994c-2f04416e5ee3/e700596b-03b0-4cee-ac5c-9212762c027a/coffee-beverages-explained-1080px.jpg" ;
199
+ var defaultRenditionQuery = "w=200&h=150&fit=clip&rect=7,23,300,200" ;
200
+
201
+ Assert . Equal ( $ "{ assetUrl } ?{ defaultRenditionQuery } ", teaserImage . Url ) ;
202
+ }
203
+
163
204
[ Fact ]
164
205
public async Task AssetElementValueConverter_MobilePresetSpecifiedInConfig_AssetUrlIsUntouchedAsThereIsNoMobileRenditionSpecified ( )
165
206
{
@@ -170,8 +211,8 @@ public async Task AssetElementValueConverter_MobilePresetSpecifiedInConfig_Asset
170
211
171
212
var defaultRenditionPreset = "mobile" ;
172
213
173
- var client = InitializeDeliveryClient ( mockHttp , new DeliveryOptions { EnvironmentId = _guid , DefaultRenditionPreset = defaultRenditionPreset } ) ;
174
-
214
+ var client = InitializeDeliveryClient ( mockHttp , new DeliveryOptions { EnvironmentId = _guid , DefaultRenditionPreset = defaultRenditionPreset } ) ;
215
+
175
216
var response = await client . GetItemAsync < Article > ( "coffee_beverages_explained" ) ;
176
217
var teaserImage = response . Item . TeaserImage . FirstOrDefault ( ) ;
177
218
@@ -180,6 +221,27 @@ public async Task AssetElementValueConverter_MobilePresetSpecifiedInConfig_Asset
180
221
Assert . Equal ( assetUrl , teaserImage . Url ) ;
181
222
}
182
223
224
+ [ Fact ]
225
+ public async Task AssetElementValueConverter_MobilePresetSpecifiedInConfig_AssetUrlReplacementSpecifiedInConfig_AssetUrlIsUntouchedAsThereIsNoMobileRenditionSpecified ( )
226
+ {
227
+ var mockHttp = new MockHttpMessageHandler ( ) ;
228
+ mockHttp
229
+ . When ( $ "{ _baseUrl } /items/coffee_beverages_explained")
230
+ . Respond ( "application/json" , await File . ReadAllTextAsync ( Path . Combine ( Environment . CurrentDirectory , $ "Fixtures{ Path . DirectorySeparatorChar } DeliveryClient{ Path . DirectorySeparatorChar } coffee_beverages_explained.json") ) ) ;
231
+
232
+ var defaultRenditionPreset = "mobile" ;
233
+
234
+ var client = InitializeDeliveryClient ( mockHttp , new DeliveryOptions { EnvironmentId = _guid , DefaultRenditionPreset = defaultRenditionPreset } ) ;
235
+ client . DeliveryOptions . CurrentValue . AssetUrlReplacement = "https://cdn.example.com/assets" ;
236
+
237
+ var response = await client . GetItemAsync < Article > ( "coffee_beverages_explained" ) ;
238
+ var teaserImage = response . Item . TeaserImage . FirstOrDefault ( ) ;
239
+
240
+ var assetUrl = "https://cdn.example.com/assets/975bf280-fd91-488c-994c-2f04416e5ee3/e700596b-03b0-4cee-ac5c-9212762c027a/coffee-beverages-explained-1080px.jpg" ;
241
+
242
+ Assert . Equal ( assetUrl , teaserImage . Url ) ;
243
+ }
244
+
183
245
private DeliveryClient InitializeDeliveryClient ( MockHttpMessageHandler mockHttp , DeliveryOptions options = null )
184
246
{
185
247
var deliveryHttpClient = new DeliveryHttpClient ( mockHttp . ToHttpClient ( ) ) ;
0 commit comments