@@ -29,6 +29,8 @@ describe('resolveRecommended middleware', () => {
2929 } ,
3030 } ,
3131 redirects : { } ,
32+ currentVersion : 'free-pro-team@latest' ,
33+ currentLanguage : 'en' ,
3234 ...contextData ,
3335 } ,
3436 } ) as ExtendedRequest
@@ -316,4 +318,52 @@ describe('resolveRecommended middleware', () => {
316318 ] )
317319 expect ( mockNext ) . toHaveBeenCalled ( )
318320 } )
321+
322+ test ( 'should filter out articles not available in current version' , async ( ) => {
323+ // Create a test page that is only available in fpt, not ghec
324+ const fptOnlyPage : Partial < import ( '@/types' ) . Page > = {
325+ mtime : Date . now ( ) ,
326+ title : 'FPT Only Article' ,
327+ rawTitle : 'FPT Only Article' ,
328+ intro : 'This article is only for FPT' ,
329+ rawIntro : 'This article is only for FPT' ,
330+ relativePath : 'test/fpt-only.md' ,
331+ fullPath : '/full/path/test/fpt-only.md' ,
332+ languageCode : 'en' ,
333+ documentType : 'article' ,
334+ markdown : 'FPT only content' ,
335+ versions : { fpt : '*' } , // Only available in free-pro-team
336+ applicableVersions : [ 'free-pro-team@latest' ] , // Not available in ghec
337+ permalinks : [
338+ {
339+ languageCode : 'en' ,
340+ pageVersion : 'free-pro-team@latest' ,
341+ title : 'FPT Only Article' ,
342+ href : '/en/test/fpt-only' ,
343+ hrefWithoutLanguage : '/test/fpt-only' ,
344+ } ,
345+ ] ,
346+ renderProp : vi . fn ( ) . mockResolvedValue ( 'rendered' ) ,
347+ renderTitle : vi . fn ( ) . mockResolvedValue ( 'FPT Only Article' ) ,
348+ render : vi . fn ( ) . mockResolvedValue ( 'rendered content' ) ,
349+ buildRedirects : vi . fn ( ) . mockReturnValue ( { } ) ,
350+ }
351+
352+ mockFindPage . mockReturnValue ( fptOnlyPage as any )
353+
354+ // Create a request context where we're viewing the GHEC version
355+ const req = createMockRequest (
356+ { rawRecommended : [ '/test/fpt-only' ] } ,
357+ {
358+ currentVersion : 'enterprise-cloud@latest' , // Current context is GHEC, not FPT
359+ currentLanguage : 'en' ,
360+ } ,
361+ )
362+
363+ await resolveRecommended ( req , mockRes , mockNext )
364+
365+ // The recommended array should be empty since the article isn't available in enterprise-cloud
366+ expect ( ( req . context ! . page as any ) . recommended ) . toEqual ( [ ] )
367+ expect ( mockNext ) . toHaveBeenCalled ( )
368+ } )
319369} )
0 commit comments