38 lines
1.2 KiB
JavaScript
38 lines
1.2 KiB
JavaScript
'use strict'
|
||
|
||
const tap = require('tap')
|
||
const index = require('./index.js')
|
||
const { readdirSync } = require('fs')
|
||
const { basename } = require('path')
|
||
|
||
tap.test(
|
||
'index exports exactly all non-test files excluding itself',
|
||
async t => {
|
||
// Read all files in the `util` directory
|
||
const files = readdirSync(__dirname)
|
||
|
||
for (const file of files) {
|
||
const kebabName = basename(file, '.js')
|
||
const snakeName = kebabName.split('-').map((part, idx) => {
|
||
if (idx === 0) return part
|
||
return part[0].toUpperCase() + part.slice(1)
|
||
}).join('')
|
||
|
||
if (file.endsWith('.test.js') === false && file !== 'index.js') {
|
||
// We expect all files to be exported except…
|
||
t.ok(index[snakeName], `exports ${snakeName}`)
|
||
} else {
|
||
// …test files and the index file itself – those must not be exported
|
||
t.notOk(index[snakeName], `does not export ${snakeName}`)
|
||
}
|
||
|
||
// Remove the exported file from the index object
|
||
delete index[snakeName]
|
||
}
|
||
|
||
// Now the index is expected to be empty, as nothing else should be
|
||
// exported from it
|
||
t.same(index, {}, 'does not export anything else')
|
||
}
|
||
)
|