11using CMS . Websites ;
2- using Kentico . Content . Web . Mvc . Routing ;
32using Microsoft . AspNetCore . Html ;
43using Microsoft . Extensions . Localization ;
54using Moq ;
@@ -12,11 +11,9 @@ namespace TrainingGuides.Web.Tests.Features.Articles.Services;
1211
1312public 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}
0 commit comments