Skip to content

Commit 2e93300

Browse files
authored
Merge pull request #140 from Kentico/GH-125-update-repo-base/FB
GH-125 update repo to use ContentRetriever API /fb
2 parents 8d6dd6f + b99d8ec commit 2e93300

File tree

77 files changed

+1318
-602
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

77 files changed

+1318
-602
lines changed

src/.config/dotnet-tools.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"version": 1,
3+
"isRoot": true,
4+
"tools": {
5+
"kentico.xperience.dbmanager": {
6+
"version": "30.6.2",
7+
"commands": [
8+
"kentico-xperience-dbmanager"
9+
],
10+
"rollForward": false
11+
}
12+
}
13+
}

src/TrainingGuides.Web.Tests/Features/Articles/Services/ArticlePageServiceTests.cs

Lines changed: 27 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using CMS.Websites;
2-
using Kentico.Content.Web.Mvc.Routing;
32
using Microsoft.AspNetCore.Html;
43
using Microsoft.Extensions.Localization;
54
using Moq;
@@ -12,11 +11,9 @@ namespace TrainingGuides.Web.Tests.Features.Articles.Services;
1211

1312
public class ArticlePageServiceTests
1413
{
15-
private readonly Mock<IWebPageUrlRetriever> webPageUrlRetrieverMock;
1614
private readonly Mock<IStringLocalizer<SharedResources>> stringLocalizerMock;
17-
private readonly Mock<IPreferredLanguageRetriever> preferredLanguageRetrieverMock;
1815
private readonly Mock<IHttpRequestService> httpRequestServiceMock;
19-
private readonly ArticlePageService articlePageService;
16+
private readonly Mock<ArticlePageService> articlePageServiceMock;
2017

2118
private const string ARTICLE_TITLE = "Title";
2219
private const string ARTICLE_SUMMARY = "Summary";
@@ -27,23 +24,20 @@ public class ArticlePageServiceTests
2724

2825
public ArticlePageServiceTests()
2926
{
30-
webPageUrlRetrieverMock = new Mock<IWebPageUrlRetriever>();
31-
webPageUrlRetrieverMock.Setup(x => x.Retrieve(It.IsAny<ArticlePage>(), It.IsAny<string>(), It.IsAny<CancellationToken>()))
32-
.ReturnsAsync(new WebPageUrl(relativePath: ARTICLE_URL, absoluteUrl: ARTICLE_URL));
33-
3427
stringLocalizerMock = new Mock<IStringLocalizer<SharedResources>>();
35-
36-
preferredLanguageRetrieverMock = new Mock<IPreferredLanguageRetriever>();
37-
preferredLanguageRetrieverMock.Setup(x => x.Get()).Returns("en");
38-
3928
httpRequestServiceMock = new Mock<IHttpRequestService>();
4029

41-
articlePageService = new ArticlePageService(
42-
webPageUrlRetrieverMock.Object,
30+
articlePageServiceMock = new Mock<ArticlePageService>(
4331
stringLocalizerMock.Object,
44-
preferredLanguageRetrieverMock.Object,
4532
httpRequestServiceMock.Object);
4633

34+
// Mock the GetArticlePageRelativeUrl method to avoid IoC container issues
35+
articlePageServiceMock.Setup(x => x.GetArticlePageRelativeUrl(It.IsAny<ArticlePage>()))
36+
.Returns(ARTICLE_URL);
37+
38+
// Call the real implementation for GetArticlePageViewModel
39+
articlePageServiceMock.CallBase = true;
40+
4741
referenceArticleViewModel = new()
4842
{
4943
Title = ARTICLE_TITLE,
@@ -82,76 +76,76 @@ public ArticlePageServiceTests()
8276
};
8377

8478
[Fact]
85-
public async Task GetArticlePageViewModel_IfArticlePageNull_ReturnsEmptyModel()
79+
public void GetArticlePageViewModel_IfArticlePageNull_ReturnsEmptyModel()
8680
{
87-
var articlePageViewModel = await articlePageService.GetArticlePageViewModel(null);
81+
var articlePageViewModel = articlePageServiceMock.Object.GetArticlePageViewModel(null);
8882
Assert.Equivalent(new ArticlePageViewModel(), articlePageViewModel);
8983
}
9084

9185
// old Article type, not using Reusable Field Schema
9286
[Fact]
93-
public async Task GetArticlePageViewModel_ForOldArticle_ReturnsModel_WithArticleTitleSet()
87+
public void GetArticlePageViewModel_ForOldArticle_ReturnsModel_WithArticleTitleSet()
9488
{
9589
var articlePage = BuildSampleArticlePageWithOldArticle();
96-
var articlePageViewModel = await articlePageService.GetArticlePageViewModel(articlePage);
90+
var articlePageViewModel = articlePageServiceMock.Object.GetArticlePageViewModel(articlePage);
9791
Assert.Equal(referenceArticleViewModel.Title, articlePageViewModel.Title);
9892
}
9993

10094
[Fact]
101-
public async Task GetArticlePageViewModel_ForOldArticle_ReturnsModel_WithArticleSummarySet()
95+
public void GetArticlePageViewModel_ForOldArticle_ReturnsModel_WithArticleSummarySet()
10296
{
10397
var articlePage = BuildSampleArticlePageWithOldArticle();
104-
var articlePageViewModel = await articlePageService.GetArticlePageViewModel(articlePage);
98+
var articlePageViewModel = articlePageServiceMock.Object.GetArticlePageViewModel(articlePage);
10599
Assert.Equal(referenceArticleViewModel.SummaryHtml.Value, articlePageViewModel.SummaryHtml.Value);
106100
}
107101

108102
[Fact]
109-
public async Task GetArticlePageViewModel_ForOldArticle_ReturnsModel_WithArticleTextSet()
103+
public void GetArticlePageViewModel_ForOldArticle_ReturnsModel_WithArticleTextSet()
110104
{
111105
var articlePage = BuildSampleArticlePageWithOldArticle();
112-
var articlePageViewModel = await articlePageService.GetArticlePageViewModel(articlePage);
106+
var articlePageViewModel = articlePageServiceMock.Object.GetArticlePageViewModel(articlePage);
113107
Assert.Equal(referenceArticleViewModel.TextHtml.Value, articlePageViewModel.TextHtml.Value);
114108
}
115109

116110
[Fact]
117-
public async Task GetArticlePageViewModel_ForOldArticle_ReturnsModel_WithArticleUrlSet()
111+
public void GetArticlePageViewModel_ForOldArticle_ReturnsModel_WithArticleUrlSet()
118112
{
119113
var articlePage = BuildSampleArticlePageWithOldArticle();
120-
var articlePageViewModel = await articlePageService.GetArticlePageViewModel(articlePage);
114+
var articlePageViewModel = articlePageServiceMock.Object.GetArticlePageViewModel(articlePage);
121115
Assert.Equal(referenceArticleViewModel.Url, articlePageViewModel.Url);
122116
}
123117

124118
// new General article type implementing the reusable field schema
125119

126120
[Fact]
127-
public async Task GetArticlePageViewModel_ForNewRFSArticle_ReturnsModel_WithArticleTitleSet()
121+
public void GetArticlePageViewModel_ForNewRFSArticle_ReturnsModel_WithArticleTitleSet()
128122
{
129123
var articlePage = BuildSampleArticlePageWithNewRFSArticle();
130-
var articlePageViewModel = await articlePageService.GetArticlePageViewModel(articlePage);
124+
var articlePageViewModel = articlePageServiceMock.Object.GetArticlePageViewModel(articlePage);
131125
Assert.Equal(referenceArticleViewModel.Title, articlePageViewModel.Title);
132126
}
133127

134128
[Fact]
135-
public async Task GetArticlePageViewModel_ForNewRFSArticle_ReturnsModel_WithArticleSummarySet()
129+
public void GetArticlePageViewModel_ForNewRFSArticle_ReturnsModel_WithArticleSummarySet()
136130
{
137131
var articlePage = BuildSampleArticlePageWithNewRFSArticle();
138-
var articlePageViewModel = await articlePageService.GetArticlePageViewModel(articlePage);
132+
var articlePageViewModel = articlePageServiceMock.Object.GetArticlePageViewModel(articlePage);
139133
Assert.Equal(referenceArticleViewModel.SummaryHtml.Value, articlePageViewModel.SummaryHtml.Value);
140134
}
141135

142136
[Fact]
143-
public async Task GetArticlePageViewModel_ForNewRFSArticle_ReturnsModel_WithArticleTextSet()
137+
public void GetArticlePageViewModel_ForNewRFSArticle_ReturnsModel_WithArticleTextSet()
144138
{
145139
var articlePage = BuildSampleArticlePageWithNewRFSArticle();
146-
var articlePageViewModel = await articlePageService.GetArticlePageViewModel(articlePage);
140+
var articlePageViewModel = articlePageServiceMock.Object.GetArticlePageViewModel(articlePage);
147141
Assert.Equal(referenceArticleViewModel.TextHtml.Value, articlePageViewModel.TextHtml.Value);
148142
}
149143

150144
[Fact]
151-
public async Task GetArticlePageViewModel_ForNewRFSArticle_ReturnsModel_WithArticleUrlSet()
145+
public void GetArticlePageViewModel_ForNewRFSArticle_ReturnsModel_WithArticleUrlSet()
152146
{
153147
var articlePage = BuildSampleArticlePageWithNewRFSArticle();
154-
var articlePageViewModel = await articlePageService.GetArticlePageViewModel(articlePage);
148+
var articlePageViewModel = articlePageServiceMock.Object.GetArticlePageViewModel(articlePage);
155149
Assert.Equal(referenceArticleViewModel.Url, articlePageViewModel.Url);
156150
}
157151
}

src/TrainingGuides.Web.Tests/Features/Membership/Widgets/LinkOrSignOut/LinkOrSignOutWidgetViewComponentTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public class LinkOrSignOutWidgetViewComponentTests
3030
public LinkOrSignOutWidgetViewComponentTests()
3131
{
3232
contentItemRetrieverServiceMock = new Mock<IContentItemRetrieverService>();
33-
contentItemRetrieverServiceMock.Setup(x => x.RetrieveWebPageByContentItemGuid(It.IsAny<Guid>()))
33+
contentItemRetrieverServiceMock.Setup(x => x.RetrieveWebPageByContentItemGuid(It.IsAny<Guid>(), It.IsAny<int>(), It.IsAny<bool>(), It.IsAny<string?>()))
3434
.ReturnsAsync((IWebPageFieldsSource?)null);
3535

3636
preferredLanguageRetrieverMock = new Mock<IPreferredLanguageRetriever>();

src/TrainingGuides.Web.Tests/Features/Newsletters/NatureSpotlight/NatureSpotlightEmailServiceTests.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,18 @@ public async Task GetNatureSpotlightEmailModel_ReturnsExpectedModel()
2626
NatureSpotlightImages = []
2727
};
2828

29-
var emailContextMock = new Mock<IEmailContextAccessor>();
30-
var emailContext = new Mock<EmailContext>();
31-
emailContext.Setup(x => x.GetEmail<NatureSpotlightEmail>(default)).ReturnsAsync(email);
32-
emailContextMock.Setup(x => x.GetContext()).Returns(emailContext.Object);
29+
var emailContextAccessorMock = new Mock<IEmailContextAccessor>();
3330

3431
var countryServiceMock = new Mock<ICountryService>();
3532
countryServiceMock.Setup(x => x.GetCountryDisplayNamesByGuids(It.IsAny<IEnumerable<Guid>>()))
3633
.Returns([Country]);
3734

38-
var service = new NatureSpotlightEmailService(emailContextMock.Object, countryServiceMock.Object);
35+
var servicePartialMock = new Mock<NatureSpotlightEmailService>(emailContextAccessorMock.Object, countryServiceMock.Object);
36+
// mock the new method
37+
servicePartialMock.Setup(x => x.GetNatureSpotlightEmailFromContext()).ReturnsAsync(email);
38+
servicePartialMock.CallBase = true;
39+
40+
var service = servicePartialMock.Object;
3941

4042
// Act
4143
var result = await service.GetNatureSpotlightEmailModel();

src/TrainingGuides.Web/App_Data/CIRepository/@global/cms.alternativeform/cms.systemtable_om.contact/setcontactfieldvalueautomationstep.xml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,17 @@
151151
</properties>
152152
</field>
153153
<field column="TrainingGuidesContactMemberId" guid="2ea2f027-7796-4f06-acd6-6189d5c10163" enabled="" />
154-
<field column="TrainingGuidesContactFavoriteCoffee" guid="a237d063-85ef-4191-ae93-bc1fae8fed69" enabled="" />
155-
<field column="TrainingGuidesContactLastCommunitationDate" guid="4bca4c08-a464-4dc6-8f30-ce18a3fde2a4" enabled="" />
154+
<field column="TrainingGuidesContactLastCommunitationDate" guid="4bca4c08-a464-4dc6-8f30-ce18a3fde2a4" enabled="" order="31" />
155+
<field column="TrainingGuidesContactFavoriteCoffee" enabled="true" guid="21406831-dbe4-4860-9cdb-a73b59c05600" visible="true" order="32">
156+
<settings>
157+
<controlname>Kentico.Administration.TextInput</controlname>
158+
</settings>
159+
<properties>
160+
<explanationtextashtml>False</explanationtextashtml>
161+
<fieldcaption>Favorite coffee</fieldcaption>
162+
<fielddescriptionashtml>False</fielddescriptionashtml>
163+
</properties>
164+
</field>
156165
</form>
157166
</FormDefinition>
158167
<FormDisplayName>Set contact field value automation step</FormDisplayName>

src/TrainingGuides.Web/App_Data/CIRepository/@global/cms.settingskey/cmsinstanceid.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,5 @@
1818
<KeyValidation>
1919
<![CDATA[^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$]]>
2020
</KeyValidation>
21-
<KeyValue>ee7404de-9ac6-4ac5-8738-5b87e59c09b7</KeyValue>
21+
<KeyValue>37f066c2-22fa-49f5-ab08-d449d86c0bcb</KeyValue>
2222
</cms.settingskey>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<cms.contentitem>
3+
<ContentItemChannelID>
4+
<CodeName>TrainingGuidesEmails</CodeName>
5+
<GUID>49e862ef-2963-49ef-a1f4-f209a01d8fc6</GUID>
6+
<ObjectType>cms.channel</ObjectType>
7+
</ContentItemChannelID>
8+
<ContentItemContentTypeID>
9+
<CodeName>TrainingGuides.BasicEmail</CodeName>
10+
<GUID>10caf932-e6fa-4b10-9fed-1f13d7380445</GUID>
11+
<ObjectType>cms.contenttype</ObjectType>
12+
</ContentItemContentTypeID>
13+
<ContentItemGUID>9dddd79b-6cb4-49a7-b5ad-544d36e71c57</ContentItemGUID>
14+
<ContentItemIsReusable>False</ContentItemIsReusable>
15+
<ContentItemIsSecured>False</ContentItemIsSecured>
16+
<ContentItemName>HottestDeals-osr0o3kd</ContentItemName>
17+
</cms.contentitem>

0 commit comments

Comments
 (0)