src/helpers.js
- import { parse } from "path"
- import lowerCamelCase from "camelcase"
- import upperCamelCase from "uppercamelcase"
- import { types as t } from "babel-core"
-
- export function getModuleName(filename) {
- const name = parse(filename).name
- return name[0] === name[0].toUpperCase() ? upperCamelCase(name) : lowerCamelCase(name)
- }
-
- export function ensureIdentifier(value) {
- return typeof value === "string" ? t.identifier(value) : value
- }
-
- export function ensureStringLiteral(value) {
- return typeof value === "string" ? t.stringLiteral(value) : value
- }
-
- export function buildMockExportDefaultDeclaration(mock, name, expression) {
- return t.exportDefaultDeclaration(t.callExpression(
- ensureIdentifier(mock), [ ensureIdentifier(expression), ensureStringLiteral(name) ]
- ))
- }
-
- export function buildMockExportVar(mock, name, _name, declaration) {
- return t.variableDeclaration("const",
- [
- t.variableDeclarator(
- ensureIdentifier(_name),
- t.callExpression(
- ensureIdentifier(mock),
- [ ensureIdentifier(declaration || name), ensureStringLiteral(name) ]
- )
- ),
- ]
- )
- }
-
- export function buildExportNamedDeclaration(local, exported) {
- return t.exportNamedDeclaration(
- null,
- [
- t.exportSpecifier(ensureIdentifier(local), ensureIdentifier(exported)),
- ],
- null
- )
- }
-
- export function buildMocktailImport(mock) {
- return t.importDeclaration(
- [ t.importSpecifier(mock, ensureIdentifier("mock")) ],
- ensureStringLiteral("mocktail")
- )
- }