Skip to content

Commit 5b8db29

Browse files
committed
Add tests for isDataFile & sort's missing cases
1 parent d20e2a0 commit 5b8db29

1 file changed

Lines changed: 95 additions & 1 deletion

File tree

src/lib/contentModelHelpers.spec.js

Lines changed: 95 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ const test = require('tape')
22
const {
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+
101141
test('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+
415509
test('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

Comments
 (0)