@@ -13,9 +13,11 @@ import { ActivatedRoute, Router } from '@angular/router';
1313import { HelpScoutService } from '@core/services/help-scout.service' ;
1414import { PrerenderReadyService } from '@core/services/prerender-ready.service' ;
1515import { ClearCurrentProvider } from '@core/store/provider' ;
16+ import { MetaTagsData } from '@osf/shared/models/meta-tags/meta-tags-data.model' ;
1617import { CustomDialogService } from '@osf/shared/services/custom-dialog.service' ;
1718import { DataciteService } from '@osf/shared/services/datacite/datacite.service' ;
1819import { MetaTagsService } from '@osf/shared/services/meta-tags.service' ;
20+ import { MetaTagsBuilderService } from '@osf/shared/services/meta-tags-builder.service' ;
1921import { ToastService } from '@osf/shared/services/toast.service' ;
2022import { ContributorsSelectors } from '@osf/shared/stores/contributors' ;
2123
@@ -55,6 +57,7 @@ import { provideOSFCore } from '@testing/osf.testing.provider';
5557import { CustomDialogServiceMockBuilder } from '@testing/providers/custom-dialog-provider.mock' ;
5658import { HelpScoutServiceMockFactory } from '@testing/providers/help-scout.service.mock' ;
5759import { MetaTagsServiceMockFactory } from '@testing/providers/meta-tags.service.mock' ;
60+ import { MetaTagsBuilderServiceMockFactory } from '@testing/providers/meta-tags-builder.service.mock' ;
5861import { PrerenderReadyServiceMockFactory } from '@testing/providers/prerender-ready.service.mock' ;
5962import { ActivatedRouteMockBuilder } from '@testing/providers/route-provider.mock' ;
6063import { RouterMockBuilder , RouterMockType } from '@testing/providers/router-provider.mock' ;
@@ -70,6 +73,7 @@ describe('PreprintDetailsComponent', () => {
7073 let prerenderReadyServiceMock : jest . Mocked < PrerenderReadyService > ;
7174 let dataciteServiceMock : ReturnType < typeof DataciteMockFactory > ;
7275 let metaTagsServiceMock : ReturnType < typeof MetaTagsServiceMockFactory > ;
76+ let metaTagsBuilderServiceMock : ReturnType < typeof MetaTagsBuilderServiceMockFactory > ;
7377 let customDialogServiceMock : ReturnType < CustomDialogServiceMockBuilder [ 'build' ] > ;
7478 let toastService : ToastServiceMockType ;
7579
@@ -122,6 +126,13 @@ describe('PreprintDetailsComponent', () => {
122126 prerenderReadyServiceMock = PrerenderReadyServiceMockFactory ( ) ;
123127 dataciteServiceMock = DataciteMockFactory ( ) ;
124128 metaTagsServiceMock = MetaTagsServiceMockFactory ( ) ;
129+ metaTagsBuilderServiceMock = MetaTagsBuilderServiceMockFactory ( ) ;
130+ metaTagsBuilderServiceMock . buildPreprintMetaTagsData . mockImplementation (
131+ ( { providerId, preprint } ) =>
132+ ( {
133+ canonicalUrl : `http://localhost:4200/preprints/${ providerId } /${ preprint ?. id } ` ,
134+ } ) as MetaTagsData
135+ ) ;
125136 toastService = ToastServiceMock . simple ( ) ;
126137 customDialogServiceMock =
127138 overrides ?. dialogReturnsCloseValue === false
@@ -167,6 +178,7 @@ describe('PreprintDetailsComponent', () => {
167178 MockProvider ( PrerenderReadyService , prerenderReadyServiceMock ) ,
168179 MockProvider ( DataciteService , dataciteServiceMock ) ,
169180 MockProvider ( MetaTagsService , metaTagsServiceMock ) ,
181+ MockProvider ( MetaTagsBuilderService , metaTagsBuilderServiceMock ) ,
170182 MockProvider ( CustomDialogService , customDialogServiceMock ) ,
171183 provideMockStore ( { signals } ) ,
172184 ] ,
@@ -199,7 +211,19 @@ describe('PreprintDetailsComponent', () => {
199211 it ( 'should update meta tags when preprint and contributors are loaded' , ( ) => {
200212 setup ( ) ;
201213
202- expect ( metaTagsServiceMock . updateMetaTags ) . toHaveBeenCalled ( ) ;
214+ expect ( metaTagsBuilderServiceMock . buildPreprintMetaTagsData ) . toHaveBeenCalledWith (
215+ expect . objectContaining ( {
216+ providerId : 'osf' ,
217+ preprint : expect . objectContaining ( { id : 'preprint-1' } ) ,
218+ } )
219+ ) ;
220+
221+ expect ( metaTagsServiceMock . updateMetaTags ) . toHaveBeenCalledWith (
222+ expect . objectContaining ( {
223+ canonicalUrl : 'http://localhost:4200/preprints/osf/preprint-1' ,
224+ } ) ,
225+ expect . anything ( )
226+ ) ;
203227 } ) ;
204228
205229 it ( 'should not fetch moderation actions when not moderator and no permissions' , ( ) => {
@@ -532,6 +556,7 @@ describe('PreprintDetailsComponent SSR', () => {
532556 MockProvider ( Router , routerMock ) ,
533557 MockProvider ( CustomDialogService , CustomDialogServiceMockBuilder . create ( ) . withDefaultOpen ( ) . build ( ) ) ,
534558 MockProvider ( DataciteService , DataciteMockFactory ( ) ) ,
559+ MockProvider ( MetaTagsBuilderService , MetaTagsBuilderServiceMockFactory ( ) ) ,
535560 MockProvider ( MetaTagsService , MetaTagsServiceMockFactory ( ) ) ,
536561 MockProvider ( PrerenderReadyService , PrerenderReadyServiceMockFactory ( ) ) ,
537562 MockProvider ( HelpScoutService , helpScoutServiceMock ) ,
0 commit comments