11import { describe , expect , test } from 'vitest' ;
22
3- import { getVersionedIndexPath } from './mdx' ;
3+ import { getVersionedIndexPath , getVersionsFromDoc } from './mdx' ;
4+ import { FrontMatter } from './types' ;
5+
6+ const mockFm : FrontMatter [ ] = [
7+ {
8+ title : 'js' ,
9+ slug : 'platforms/javascript' ,
10+ } ,
11+ {
12+ title : 'go' ,
13+ slug : 'platforms/go' ,
14+ } ,
15+ ] ;
416
517describe ( 'mdx' , ( ) => {
618 describe ( 'getVersionedIndexPath' , ( ) => {
@@ -27,5 +39,56 @@ describe('mdx', () => {
2739 '/does/not/exist.mdx'
2840 ) ;
2941 } ) ;
42+ test ( 'return versioned path for root level common file' , ( ) => {
43+ expect (
44+ getVersionedIndexPath ( '/' , 'docs/platforms/javascript__v7/common' , '.mdx' )
45+ ) . toBe ( '/docs/platforms/javascript/common/index__v7.mdx' ) ;
46+ } ) ;
47+ } ) ;
48+
49+ describe ( 'getVersionsFromDoc' , ( ) => {
50+ test ( 'should return no versions from unversioned docs' , ( ) => {
51+ const fm : FrontMatter [ ] = [ ...mockFm ] ;
52+ const versions = getVersionsFromDoc ( fm , '/platforms/javascript' ) ;
53+ expect ( versions ) . toHaveLength ( 0 ) ;
54+ } ) ;
55+
56+ test ( 'should return one version from versioned docs' , ( ) => {
57+ const fm : FrontMatter [ ] = [
58+ ...mockFm ,
59+ { title : 'js' , slug : 'platforms/javascript__v2' } ,
60+ { title : 'go' , slug : 'platforms/go__v2' } ,
61+ ] ;
62+ const versions = getVersionsFromDoc ( fm , '/platforms/javascript' ) ;
63+ expect ( versions ) . toHaveLength ( 1 ) ;
64+ expect ( versions ) . toContain ( '2' ) ;
65+ } ) ;
66+
67+ test ( 'should return several versions from versioned docs' , ( ) => {
68+ const fm : FrontMatter [ ] = [
69+ ...mockFm ,
70+ { title : 'js' , slug : 'platforms/javascript__v2' } ,
71+ { title : 'js' , slug : 'platforms/javascript__v1.23' } ,
72+ { title : 'js' , slug : 'platforms/javascript__v1.23.1' } ,
73+ { title : 'go' , slug : 'platforms/go__v2' } ,
74+ ] ;
75+ const versions = getVersionsFromDoc ( fm , '/platforms/javascript' ) ;
76+ expect ( versions ) . toHaveLength ( 3 ) ;
77+ expect ( versions ) . toContain ( '1.23' ) ;
78+ expect ( versions ) . toContain ( '1.23.1' ) ;
79+ expect ( versions ) . toContain ( '2' ) ;
80+ } ) ;
81+
82+ test ( 'should not contain duplicates' , ( ) => {
83+ const fm : FrontMatter [ ] = [
84+ ...mockFm ,
85+ { title : 'js' , slug : 'platforms/javascript__v2' } ,
86+ { title : 'js' , slug : 'platforms/javascript/guides/nextjs' } ,
87+ { title : 'js' , slug : 'platforms/javascript/guides/nextjs__v2' } ,
88+ ] ;
89+ const versions = getVersionsFromDoc ( fm , 'platforms/javascript/guides/nextjs' ) ;
90+ expect ( versions ) . toHaveLength ( 1 ) ;
91+ expect ( versions ) . toContain ( '2' ) ;
92+ } ) ;
3093 } ) ;
3194} ) ;
0 commit comments