adminjs
Version:
Admin panel for apps written in node.js
52 lines (38 loc) • 1.66 kB
JavaScript
import path from 'path'
import * as url from 'url'
import AdminJS from '../../adminjs.js'
import { ComponentLoader } from '../utils/index.js'
import generateUserComponentEntry from './generate-user-component-entry.js'
const __dirname = url.fileURLToPath(new URL('.', import.meta.url))
const exampleComponent = '../../../spec/fixtures/example-component.js'
const entryPath = './'
describe('generateUserComponentEntry', function () {
it('defines AdminJS.UserComponents', function () {
const adminJs = new AdminJS()
const entryFile = generateUserComponentEntry(adminJs, entryPath)
expect(entryFile).to.have.string('AdminJS.UserComponents = {}\n')
})
it('adds env variables to the entry file', function () {
const adminJs = new AdminJS({
env: { ENV_NAME: 'value' },
})
const entryFile = generateUserComponentEntry(adminJs, entryPath)
expect(entryFile).to.have.string('AdminJS.env.ENV_NAME = "value"\n')
})
it('adds components to the entry file', function () {
const loader = new ComponentLoader()
const componentId = loader.add('ExampleComponent', exampleComponent)
const adminJs = new AdminJS({ componentLoader: loader })
const rootEntryPath = path.resolve(entryPath)
const filePath = path.relative(
rootEntryPath,
path.normalize(path.join(__dirname, exampleComponent)),
)
const entryFile = generateUserComponentEntry(adminJs, entryPath)
expect(entryFile).to.have.string([
`import ${componentId} from '${filePath.replace('.js', '')}'`,
`AdminJS.UserComponents.${componentId} = ${componentId}`,
].join('\n'))
AdminJS.UserComponents = {}
})
})