@@ -6,6 +6,7 @@ const allVersions = require('../../lib/all-versions')
66const enterpriseServerReleases = require ( '../../lib/enterprise-server-releases' )
77const nonEnterpriseDefaultVersion = require ( '../../lib/non-enterprise-default-version' )
88const { latest } = require ( '../../lib/enterprise-server-releases' )
9+ const enterpriseServerVersions = Object . keys ( allVersions ) . filter ( v => v . startsWith ( 'enterprise-server@' ) )
910
1011const getLinkData = require ( '../../lib/get-link-data' )
1112jest . mock ( '../../lib/get-link-data' )
@@ -168,7 +169,7 @@ describe('Page class', () => {
168169 const context = {
169170 currentVersion : `enterprise-server@${ enterpriseServerReleases . latest } ` ,
170171 currentLanguage : 'en' ,
171- enterpriseServerVersions : Object . keys ( allVersions ) . filter ( id => id . startsWith ( 'enterprise-server@' ) )
172+ enterpriseServerVersions
172173 }
173174 let rendered = await page . render ( context )
174175 let $ = cheerio . load ( rendered )
@@ -353,19 +354,22 @@ describe('Page class', () => {
353354 currentLanguage : 'en' ,
354355 currentProduct : 'snowbird' ,
355356 currentVersion : nonEnterpriseDefaultVersion ,
357+ enterpriseServerVersions,
356358 site : {
357359 data : {
358360 'learning-tracks' : {
359361 snowbird : {
360362 track_1 : {
361363 title : 'title' ,
362364 description : 'description' ,
363- guides
365+ guides,
366+ featured_track : '{% if currentVersion == "free-pro-team@latest" %}true{% else %}false{% endif %}'
364367 } ,
365368 track_2 : {
366369 title : 'title' ,
367370 description : 'description' ,
368- guides
371+ guides,
372+ featured_track : '{% if enterpriseServerVersions contains currentVersion %}true{% else %}false{% endif %}'
369373 } ,
370374 dotcom_only_track : {
371375 title : 'title' ,
@@ -382,19 +386,30 @@ describe('Page class', () => {
382386 }
383387 }
384388 }
389+ // Test that Liquid versioning is respected during rendering.
390+ // Start with Dotcom.
385391 await page . render ( context )
386392 // To actually render the guides in this test, we would have to load context.pages and context.redirects;
387393 // To avoid that we can just test that the function was called with the expected data.
388394 expect ( getLinkData ) . toHaveBeenCalledWith ( guides , context )
389- expect ( page . learningTracks ) . toHaveLength ( 3 )
390- expect ( page . learningTracks . find ( track => track . trackName === 'dotcom_only_track' ) ) . toBeTruthy ( )
391-
392- // Test that Liquid versioning is respected
395+ // Tracks for dotcom should exclude enterprise_only_track and the featured track_1.
396+ expect ( page . learningTracks ) . toHaveLength ( 2 )
397+ const dotcomTrackNames = page . learningTracks . map ( t => t . trackName )
398+ expect ( dotcomTrackNames . includes ( 'track_2' ) ) . toBe ( true )
399+ expect ( dotcomTrackNames . includes ( 'dotcom_only_track' ) ) . toBe ( true )
400+ expect ( page . featuredTrack . trackName === 'track_1' ) . toBeTruthy ( )
401+ expect ( page . featuredTrack . trackName === 'track_2' ) . toBeFalsy ( )
402+
403+ // Switch to Enterprise.
393404 context . currentVersion = `enterprise-server@${ latest } `
394405 await page . render ( context )
395- expect ( page . learningTracks ) . toHaveLength ( 3 )
396- expect ( page . learningTracks . find ( track => track . trackName === 'dotcom_only_track' ) ) . toBeFalsy ( )
397- expect ( page . learningTracks . find ( track => track . trackName === 'enterprise_only_track' ) ) . toBeTruthy ( )
406+ // Tracks for enterprise should exclude dotcom_only_track and the featured track_2.
407+ expect ( page . learningTracks ) . toHaveLength ( 2 )
408+ const ghesTrackNames = page . learningTracks . map ( t => t . trackName )
409+ expect ( ghesTrackNames . includes ( 'track_1' ) ) . toBe ( true )
410+ expect ( ghesTrackNames . includes ( 'enterprise_only_track' ) ) . toBe ( true )
411+ expect ( page . featuredTrack . trackName === 'track_1' ) . toBeFalsy ( )
412+ expect ( page . featuredTrack . trackName === 'track_2' ) . toBeTruthy ( )
398413 } )
399414 } )
400415
0 commit comments