aboutsummaryrefslogtreecommitdiffstats
path: root/gentests.js
diff options
context:
space:
mode:
Diffstat (limited to 'gentests.js')
-rw-r--r--gentests.js157
1 files changed, 82 insertions, 75 deletions
diff --git a/gentests.js b/gentests.js
index 08232e10f..9c591e98c 100644
--- a/gentests.js
+++ b/gentests.js
@@ -1,6 +1,6 @@
const fs = require('fs')
-const async = require('async')
const path = require('path')
+const async = require('async')
const promisify = require('pify')
// start(/\.selectors.js/, generateSelectorTest).catch(console.error)
@@ -8,7 +8,6 @@ const promisify = require('pify')
startContainer(/\.container.js/, generateContainerTest).catch(console.error)
async function getAllFileNames (dirName) {
- const rootPath = path.join(__dirname, dirName)
const allNames = (await promisify(fs.readdir)(dirName))
const fileNames = allNames.filter(name => name.match(/^.+\./))
const dirNames = allNames.filter(name => name.match(/^[^.]+$/))
@@ -16,7 +15,7 @@ async function getAllFileNames (dirName) {
const fullPathDirNames = dirNames.map(d => `${dirName}/${d}`)
const subNameArrays = await promisify(async.map)(fullPathDirNames, getAllFileNames)
let subNames = []
- subNameArrays.forEach(subNameArray => subNames = [...subNames, ...subNameArray])
+ subNameArrays.forEach(subNameArray => { subNames = [...subNames, ...subNameArray] })
return [
...fileNames.map(name => dirName + '/' + name),
@@ -24,14 +23,15 @@ async function getAllFileNames (dirName) {
]
}
+/*
async function start (fileRegEx, testGenerator) {
const fileNames = await getAllFileNames('./ui/app')
const sFiles = fileNames.filter(name => name.match(fileRegEx))
-
+
let sFileMethodNames
let testFilePath
async.each(sFiles, async (sFile, cb) => {
- let [, sRootPath, sPath] = sFile.match(/^(.+\/)([^/]+)$/)
+ const [, sRootPath, sPath] = sFile.match(/^(.+\/)([^/]+)$/)
sFileMethodNames = Object.keys(require(__dirname + '/' + sFile))
testFilePath = sPath.replace('.', '-').replace('.', '.test.')
@@ -44,92 +44,96 @@ async function start (fileRegEx, testGenerator) {
}, (err) => {
console.log(err)
})
-
+
}
+*/
async function startContainer (fileRegEx, testGenerator) {
const fileNames = await getAllFileNames('./ui/app')
const sFiles = fileNames.filter(name => name.match(fileRegEx))
-
- let sFileMethodNames
+
async.each(sFiles, async (sFile, cb) => {
- console.log(`sFile`, sFile);
- let [, sRootPath, sPath] = sFile.match(/^(.+\/)([^/]+)$/)
-
- let testFilePath = sPath.replace('.', '-').replace('.', '.test.')
+ console.log(`sFile`, sFile)
+ const [, sRootPath, sPath] = sFile.match(/^(.+\/)([^/]+)$/)
+
+ const testFilePath = sPath.replace('.', '-').replace('.', '.test.')
await promisify(fs.readFile)(
- __dirname + '/' + sFile,
+ path.join(__dirname, sFile),
'utf8',
async (err, result) => {
- console.log(`result`, result.length);
- const returnObjectStrings = result
- .match(/return\s(\{[\s\S]+?})\n}/g)
- .map(str => {
- return str
- .slice(0, str.length - 1)
- .slice(7)
- .replace(/\n/g, '')
- .replace(/\s\s+/g, ' ')
-
+ if (err) {
+ console.log('Error: ', err)
+ } else {
+ console.log(`result`, result.length)
+ const returnObjectStrings = result
+ .match(/return\s(\{[\s\S]+?})\n}/g)
+ .map(str => {
+ return str
+ .slice(0, str.length - 1)
+ .slice(7)
+ .replace(/\n/g, '')
+ .replace(/\s\s+/g, ' ')
+
+ })
+ const mapStateToPropsAssertionObject = returnObjectStrings[0]
+ .replace(/\w+:\s\w+\([\w,\s]+\),/g, str => {
+ const strKey = str.match(/^\w+/)[0]
+ return strKey + ': \'mock' + str.match(/^\w+/)[0].replace(/^./, c => c.toUpperCase()) + ':mockState\',\n'
+ })
+ .replace(/{\s\w.+/, firstLinePair => `{\n ${firstLinePair.slice(2)}`)
+ .replace(/\w+:.+,/g, s => ` ${s}`)
+ .replace(/}/g, s => ` ${s}`)
+ let mapDispatchToPropsMethodNames
+ if (returnObjectStrings[1]) {
+ mapDispatchToPropsMethodNames = returnObjectStrings[1].match(/\s\w+:\s/g).map(str => str.match(/\w+/)[0])
+ }
+ const proxyquireObject = ('{\n ' + result
+ .match(/import\s{[\s\S]+?}\sfrom\s.+/g)
+ .map(s => s.replace(/\n/g, ''))
+ .map((s, i) => {
+ const proxyKeys = s.match(/{.+}/)[0].match(/\w+/g)
+ return '\'' + s.match(/'(.+)'/)[1] + '\': { ' + (proxyKeys.length > 1
+ ? '\n ' + proxyKeys.join(': () => {},\n ') + ': () => {},\n '
+ : proxyKeys[0] + ': () => {},') + ' }'
+ })
+ .join(',\n ') + '\n}')
+ .replace('{ connect: () => {}, },', `{
+ connect: (ms, md) => {
+ mapStateToProps = ms
+ mapDispatchToProps = md
+ return () => ({})
+ },
+ },`)
+ // console.log(`proxyquireObject`, proxyquireObject);
+ // console.log(`mapStateToPropsAssertionObject`, mapStateToPropsAssertionObject);
+ // console.log(`mapDispatchToPropsMethodNames`, mapDispatchToPropsMethodNames);
+
+ const containerTest = generateContainerTest(sPath, {
+ mapStateToPropsAssertionObject,
+ mapDispatchToPropsMethodNames,
+ proxyquireObject,
})
- const mapStateToPropsAssertionObject = returnObjectStrings[0]
- .replace(/\w+:\s\w+\([\w,\s]+\),/g, str => {
- const strKey = str.match(/^\w+/)[0]
- return strKey + ': \'mock' + str.match(/^\w+/)[0].replace(/^./, c => c.toUpperCase()) + ':mockState\',\n'
- })
- .replace(/{\s\w.+/, firstLinePair => `{\n ${firstLinePair.slice(2)}`)
- .replace(/\w+:.+,/g, s => ` ${s}`)
- .replace(/}/g, s => ` ${s}`)
- let mapDispatchToPropsMethodNames
- if (returnObjectStrings[1]) {
- mapDispatchToPropsMethodNames = returnObjectStrings[1].match(/\s\w+:\s/g).map(str => str.match(/\w+/)[0])
+ // console.log(`containerTest`, `${__dirname}/${sRootPath}tests/${testFilePath}`, containerTest);
+ console.log('----')
+ console.log(`sRootPath`, sRootPath)
+ console.log(`testFilePath`, testFilePath)
+ await promisify(fs.writeFile)(
+ `${__dirname}/${sRootPath}tests/${testFilePath}`,
+ containerTest,
+ 'utf8'
+ )
}
- const proxyquireObject = ('{\n ' + result
- .match(/import\s{[\s\S]+?}\sfrom\s.+/g)
- .map(s => s.replace(/\n/g, ''))
- .map((s, i) => {
- const proxyKeys = s.match(/{.+}/)[0].match(/\w+/g)
- return '\'' + s.match(/'(.+)'/)[1] + '\': { ' + (proxyKeys.length > 1
- ? '\n ' + proxyKeys.join(': () => {},\n ') + ': () => {},\n '
- : proxyKeys[0] + ': () => {},') + ' }'
- })
- .join(',\n ') + '\n}')
- .replace('{ connect: () => {}, },', `{
- connect: (ms, md) => {
- mapStateToProps = ms
- mapDispatchToProps = md
- return () => ({})
- },
- },`)
- // console.log(`proxyquireObject`, proxyquireObject);
- // console.log(`mapStateToPropsAssertionObject`, mapStateToPropsAssertionObject);
- // console.log(`mapDispatchToPropsMethodNames`, mapDispatchToPropsMethodNames);
-
- const containerTest = generateContainerTest(sPath, {
- mapStateToPropsAssertionObject,
- mapDispatchToPropsMethodNames,
- proxyquireObject,
- })
- // console.log(`containerTest`, `${__dirname}/${sRootPath}tests/${testFilePath}`, containerTest);
- console.log('----')
- console.log(`sRootPath`, sRootPath);
- console.log(`testFilePath`, testFilePath);
- await promisify(fs.writeFile)(
- `${__dirname}/${sRootPath}tests/${testFilePath}`,
- containerTest,
- 'utf8'
- )
}
)
}, (err) => {
console.log('123', err)
})
-
-}
+}
+/*
function generateMethodList (methodArray) {
- return methodArray.map(n => ' ' + n).join(',\n') + ','
+ return methodArray.map(n => ' ' + n).join(',\n') + ','
}
function generateMethodDescribeBlock (methodName, index) {
@@ -143,7 +147,7 @@ function generateMethodDescribeBlock (methodName, index) {
})`
return describeBlock
}
-
+*/
function generateDispatchMethodDescribeBlock (methodName, index) {
const describeBlock =
`${index ? ' ' : ''}describe('${methodName}()', () => {
@@ -154,12 +158,13 @@ function generateDispatchMethodDescribeBlock (methodName, index) {
})`
return describeBlock
}
-
+/*
function generateMethodDescribeBlocks (methodArray) {
return methodArray
.map((methodName, index) => generateMethodDescribeBlock(methodName, index))
.join('\n\n')
}
+*/
function generateDispatchMethodDescribeBlocks (methodArray) {
return methodArray
@@ -167,6 +172,7 @@ function generateDispatchMethodDescribeBlocks (methodArray) {
.join('\n\n')
}
+/*
function generateSelectorTest (name, methodArray) {
return `import assert from 'assert'
import {
@@ -192,6 +198,7 @@ describe('${name.match(/^[^.]+/)} utils', () => {
})`
}
+*/
function generateContainerTest (sPath, {
mapStateToPropsAssertionObject,
@@ -231,4 +238,4 @@ describe('${sPath.match(/^[^.]+/)} container', () => {
})
})`
-} \ No newline at end of file
+}