@@ -2,6 +2,7 @@ const test = require('tape')
22const {
33 templateExtensions,
44 isTemplateFile,
5+ isDataFile,
56 removeExtension,
67 makePermalink,
78 makeDateSlug,
@@ -98,6 +99,45 @@ test('isTemplateFile', t => {
9899 t . end ( )
99100} )
100101
102+ test ( 'isDataFile' , t => {
103+ t . ok (
104+ isDataFile ( { extension : '.json' } ) ,
105+ 'recognizes .json as data file'
106+ )
107+
108+ t . ok (
109+ isDataFile ( { extension : '.JSON' } ) ,
110+ 'case-insensitive: recognizes .JSON'
111+ )
112+
113+ t . ok (
114+ isDataFile ( { extension : '.Json' } ) ,
115+ 'case-insensitive: recognizes .Json'
116+ )
117+
118+ t . notOk (
119+ isDataFile ( { extension : '.csv' } ) ,
120+ 'does not recognize .csv as data file'
121+ )
122+
123+ t . notOk (
124+ isDataFile ( { extension : '.xml' } ) ,
125+ 'does not recognize .xml as data file'
126+ )
127+
128+ t . notOk (
129+ isDataFile ( { extension : '.txt' } ) ,
130+ 'does not recognize .txt as data file'
131+ )
132+
133+ t . notOk (
134+ isDataFile ( { extension : '' } ) ,
135+ 'does not recognize empty extension'
136+ )
137+
138+ t . end ( )
139+ } )
140+
101141test ( 'removeExtension' , t => {
102142 t . equal (
103143 removeExtension ( 'file.txt' ) ,
@@ -412,6 +452,60 @@ test('sort case-insensitive descending', t => {
412452 t . end ( )
413453} )
414454
455+ test ( 'sort with empty array' , t => {
456+ const items = [ ]
457+
458+ sort ( items , 'name' , 1 )
459+
460+ t . equal (
461+ items . length ,
462+ 0 ,
463+ 'handles empty array without error'
464+ )
465+
466+ t . end ( )
467+ } )
468+
469+ test ( 'sort with single item' , t => {
470+ const items = [
471+ { name : 'Alice' }
472+ ]
473+
474+ sort ( items , 'name' , 1 )
475+
476+ t . equal (
477+ items [ 0 ] . name ,
478+ 'Alice' ,
479+ 'single item remains unchanged'
480+ )
481+
482+ t . equal (
483+ items . length ,
484+ 1 ,
485+ 'maintains single item array length'
486+ )
487+
488+ t . end ( )
489+ } )
490+
491+ test ( 'sort with identical values' , t => {
492+ const items = [
493+ { name : 'Alice' , id : 1 } ,
494+ { name : 'Alice' , id : 2 } ,
495+ { name : 'Alice' , id : 3 }
496+ ]
497+
498+ sort ( items , 'name' , 1 )
499+
500+ t . deepEqual (
501+ items . map ( i => i . id ) ,
502+ [ 1 , 2 , 3 ] ,
503+ 'preserves original order when all sort keys are identical'
504+ )
505+
506+ t . end ( )
507+ } )
508+
415509test ( 'Markdown.parse' , t => {
416510 const headingResult = Markdown . parse ( '# Hello World' )
417511
@@ -596,4 +690,4 @@ test('safeStringify with null and undefined', t => {
596690 )
597691
598692 t . end ( )
599- } )
693+ } )
0 commit comments