js-build-tools 1.2.3 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +573 -250
- package/dist/build.js +27 -20
- package/dist/build.min.js +1 -1
- package/dist/bundle.js +16 -13
- package/dist/bundle.min.js +1 -1
- package/dist/bundleLint.js +22 -18
- package/dist/bundleLint.min.js +1 -1
- package/dist/bundleMinify.js +13 -17
- package/dist/bundleMinify.min.js +1 -1
- package/dist/compileReadme.js +13 -11
- package/dist/compileReadme.min.js +1 -1
- package/dist/default.js +17 -12
- package/dist/default.min.js +1 -1
- package/dist/dist.js +11 -7
- package/dist/dist.min.js +1 -1
- package/dist/distLint.js +20 -17
- package/dist/distLint.min.js +1 -1
- package/dist/distMinify.js +12 -17
- package/dist/distMinify.min.js +1 -1
- package/dist/partials/addToReadme.js +25 -0
- package/dist/partials/beginWatcher.js +16 -0
- package/dist/partials/clean.js +21 -0
- package/dist/partials/distFor.js +23 -0
- package/dist/partials/distForSrc.js +16 -0
- package/dist/partials/distSeries.js +31 -0
- package/dist/partials/minifyFor.js +21 -0
- package/dist/partials/readmeTemplate.js +18 -0
- package/dist/partials/runOnChange.js +63 -0
- package/dist/partials/tsFor.js +24 -0
- package/dist/partials.js +33 -0
- package/dist/partials.min.js +1 -0
- package/dist/test-helpers/circularObject.js +50 -0
- package/dist/test-helpers/countMatches.js +16 -0
- package/dist/test-helpers/deepReferenceObject.js +20 -0
- package/dist/test-helpers/domItem.js +33 -0
- package/dist/test-helpers/jsonDom.js +20 -0
- package/dist/test-helpers/linkedList.js +23 -0
- package/dist/test-helpers/logObject.js +24 -0
- package/dist/test-helpers/multiReferenceObject.js +20 -0
- package/dist/test-helpers/nodeTree.js +28 -0
- package/dist/test-helpers/setUp.js +127 -0
- package/dist/testFull.js +21 -10
- package/dist/testFull.min.js +1 -1
- package/dist/testHelpers.js +33 -198
- package/dist/testHelpers.min.js +1 -1
- package/dist/testQuick.js +23 -12
- package/dist/testQuick.min.js +1 -1
- package/dist/typeScript.js +14 -0
- package/dist/typeScript.min.js +1 -0
- package/dist/watchFull.js +14 -21
- package/dist/watchFull.min.js +1 -1
- package/dist/watchTest.js +16 -14
- package/dist/watchTest.min.js +1 -1
- package/functions/build.js +8 -5
- package/functions/build.test.js +59 -0
- package/functions/bundle.js +6 -4
- package/functions/bundle.test.js +68 -0
- package/functions/bundleLint.js +5 -3
- package/functions/bundleLint.test.js +61 -0
- package/functions/bundleMinify.js +4 -7
- package/functions/bundleMinify.test.js +14 -0
- package/functions/compileReadme.js +3 -2
- package/functions/compileReadme.test.js +18 -0
- package/functions/default.js +5 -2
- package/functions/default.test.js +32 -0
- package/functions/dist.js +3 -1
- package/functions/dist.test.js +43 -0
- package/functions/distLint.js +4 -2
- package/functions/distLint.test.js +58 -0
- package/functions/distMinify.js +4 -7
- package/functions/distMinify.test.js +14 -0
- package/functions/partials/addToReadme.js +20 -0
- package/functions/partials/addToReadme.test.js +28 -0
- package/functions/partials/beginWatcher.js +12 -0
- package/functions/partials/beginWatcher.test.js +18 -0
- package/functions/partials/clean.js +14 -0
- package/functions/partials/clean.test.js +20 -0
- package/functions/partials/distFor.js +18 -0
- package/functions/partials/distFor.test.js +125 -0
- package/functions/partials/distForSrc.js +14 -0
- package/functions/partials/distForSrc.test.js +17 -0
- package/functions/partials/distSeries.js +21 -0
- package/functions/partials/distSeries.test.js +33 -0
- package/functions/partials/minifyFor.js +16 -0
- package/functions/partials/minifyFor.test.js +48 -0
- package/functions/partials/readmeTemplate.js +15 -0
- package/functions/partials/readmeTemplate.test.js +33 -0
- package/functions/partials/runOnChange.js +57 -0
- package/functions/partials/runOnChange.test.js +93 -0
- package/functions/partials/tsFor.js +21 -0
- package/functions/partials/tsFor.test.js +44 -0
- package/functions/partials.js +32 -0
- package/functions/partials.test.js +7 -0
- package/functions/test-helpers/circularObject.js +28 -0
- package/functions/test-helpers/circularObject.test.js +14 -0
- package/functions/test-helpers/countMatches.js +11 -0
- package/functions/test-helpers/countMatches.test.js +9 -0
- package/functions/test-helpers/deepReferenceObject.js +25 -0
- package/functions/test-helpers/deepReferenceObject.test.js +7 -0
- package/functions/test-helpers/domItem.js +31 -0
- package/functions/test-helpers/domItem.test.js +12 -0
- package/functions/test-helpers/jsonDom.js +16 -0
- package/functions/test-helpers/jsonDom.test.js +12 -0
- package/functions/test-helpers/linkedList.js +10 -0
- package/functions/test-helpers/linkedList.test.js +22 -0
- package/functions/test-helpers/logObject.js +18 -0
- package/functions/test-helpers/logObject.test.js +20 -0
- package/functions/test-helpers/multiReferenceObject.js +25 -0
- package/functions/test-helpers/multiReferenceObject.test.js +14 -0
- package/functions/test-helpers/nodeTree.js +11 -0
- package/functions/test-helpers/nodeTree.test.js +18 -0
- package/functions/test-helpers/setUp.js +67 -0
- package/functions/test-helpers/setUp.test.js +18 -0
- package/functions/testFull.js +13 -3
- package/functions/testFull.test.js +16 -0
- package/functions/testHelpers.js +27 -137
- package/functions/testHelpers.test.js +3 -96
- package/functions/testQuick.js +12 -2
- package/functions/testQuick.test.js +16 -0
- package/functions/typeScript.js +11 -0
- package/functions/typeScript.test.js +10 -0
- package/functions/watchFull.js +6 -12
- package/functions/watchFull.test.js +40 -0
- package/functions/watchTest.js +4 -2
- package/functions/watchTest.test.js +48 -0
- package/gulp.config.js +161 -16
- package/gulpfile.base.js +9 -0
- package/package.json +2 -1
- package/dist/addToReadme.js +0 -22
- package/dist/addToReadme.min.js +0 -1
- package/dist/clean.js +0 -11
- package/dist/clean.min.js +0 -1
- package/dist/distFor.js +0 -21
- package/dist/distFor.min.js +0 -1
- package/dist/readmeTemplate.js +0 -15
- package/dist/readmeTemplate.min.js +0 -1
- package/functions/addToReadme.js +0 -17
- package/functions/clean.js +0 -10
- package/functions/distFor.js +0 -15
- package/functions/readmeTemplate.js +0 -13
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import nodeTree from './nodeTree'
|
|
2
|
+
|
|
3
|
+
describe('nodeTree', () => {
|
|
4
|
+
test('has sample nodeTree object', () => {
|
|
5
|
+
expect(nodeTree.name).toBe('one')
|
|
6
|
+
expect(nodeTree.parent).toBeNull()
|
|
7
|
+
expect(nodeTree.children.length).toBe(2)
|
|
8
|
+
expect(nodeTree.children[0].name).toBe('child one')
|
|
9
|
+
expect(nodeTree.children[0].parent).toBe(nodeTree)
|
|
10
|
+
expect(nodeTree.children[0].children.length).toBe(1)
|
|
11
|
+
expect(nodeTree.children[0].children[0].name).toBe('grandchild one')
|
|
12
|
+
expect(nodeTree.children[0].children[0].parent).toBe(nodeTree.children[0])
|
|
13
|
+
expect(nodeTree.children[0].children[0].children.length).toBe(0)
|
|
14
|
+
expect(nodeTree.children[1].name).toBe('child two')
|
|
15
|
+
expect(nodeTree.children[1].parent).toBe(nodeTree)
|
|
16
|
+
expect(nodeTree.children[1].children.length).toBe(0)
|
|
17
|
+
})
|
|
18
|
+
})
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
const fs = require('fs')
|
|
2
|
+
const del = require('del')
|
|
3
|
+
// Import the configurations and override some of them in order to direct to the temp directory.
|
|
4
|
+
const gulpConfig = require('../../gulp.config.js')
|
|
5
|
+
|
|
6
|
+
let tempDir = 'test-temp/'
|
|
7
|
+
let srcPath = `${tempDir}src`
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Update the gulp configurations with the test data. Set the test directory where temp files will be created for testing.
|
|
11
|
+
* @function
|
|
12
|
+
* @memberOf module:testHelpers
|
|
13
|
+
* @param {string} testDir
|
|
14
|
+
*/
|
|
15
|
+
const setDefaults = (testDir = 'test-temp') => {
|
|
16
|
+
tempDir = `${testDir}/`
|
|
17
|
+
srcPath = `${tempDir}src`
|
|
18
|
+
gulpConfig.set('browserPath', `${tempDir}browser`)
|
|
19
|
+
gulpConfig.set('distMain', `${tempDir}dist/main`)
|
|
20
|
+
gulpConfig.set('distPath', `${tempDir}dist`)
|
|
21
|
+
gulpConfig.set('distSearch', `${tempDir}dist/**/*.js`)
|
|
22
|
+
gulpConfig.set('readmeTemplate', `${tempDir}MAIN.md`)
|
|
23
|
+
gulpConfig.set('readmePath', tempDir)
|
|
24
|
+
gulpConfig.set('rootPath', tempDir)
|
|
25
|
+
gulpConfig.set('srcPath', srcPath)
|
|
26
|
+
gulpConfig.set('srcSearch', `${tempDir}src/**/!(*.test).js`)
|
|
27
|
+
gulpConfig.set('tsSearch', `${tempDir}src/**/*.ts`)
|
|
28
|
+
gulpConfig.set('watchSearch', `${tempDir}src/**/*.js`)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
exports.setDefaults = setDefaults
|
|
32
|
+
|
|
33
|
+
exports.gulpConfig = gulpConfig
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Ensure that the del has completed, recursively attempt to delete and recreate
|
|
37
|
+
* @function
|
|
38
|
+
* @memberOf module:testHelpers
|
|
39
|
+
* @param {boolean} [exists=true]
|
|
40
|
+
* @returns {Promise<*|void>}
|
|
41
|
+
*/
|
|
42
|
+
const createTempDir = async (exists = true) => {
|
|
43
|
+
if (exists) {
|
|
44
|
+
return del(tempDir)
|
|
45
|
+
.then(() => createTempDir(fs.existsSync(tempDir)))
|
|
46
|
+
}
|
|
47
|
+
await fs.mkdirSync(tempDir)
|
|
48
|
+
return fs.mkdirSync(srcPath)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
exports.createTempDir = createTempDir
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* In the Jest.beforeEach function call this one to set up the temp directory.
|
|
55
|
+
* @function
|
|
56
|
+
* @memberOf module:testHelpers
|
|
57
|
+
* @returns {Promise<*|void>}
|
|
58
|
+
*/
|
|
59
|
+
exports.beforeEach = () => createTempDir()
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* In the Jest.afterEach function call this one to clean up and remove the temp directory.
|
|
63
|
+
* @function
|
|
64
|
+
* @memberOf module:testHelpers
|
|
65
|
+
* @returns {Promise<*>}
|
|
66
|
+
*/
|
|
67
|
+
exports.afterEach = async () => await del(tempDir)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { afterEach, createTempDir, gulpConfig, setDefaults } from './setUp'
|
|
2
|
+
import fs from 'fs'
|
|
3
|
+
|
|
4
|
+
setDefaults()
|
|
5
|
+
|
|
6
|
+
describe('setUp', () => {
|
|
7
|
+
test('able to create the test-temp/src directory', async () => {
|
|
8
|
+
expect(fs.existsSync(gulpConfig.get('srcPath'))).toBeFalsy()
|
|
9
|
+
await createTempDir()
|
|
10
|
+
expect(fs.existsSync(gulpConfig.get('srcPath'))).toBeTruthy()
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
test('able to delete the test-temp/src directory', async () => {
|
|
14
|
+
expect(fs.existsSync(gulpConfig.get('srcPath'))).toBeTruthy()
|
|
15
|
+
await afterEach()
|
|
16
|
+
expect(fs.existsSync(gulpConfig.get('srcPath'))).toBeFalsy()
|
|
17
|
+
})
|
|
18
|
+
})
|
package/functions/testFull.js
CHANGED
|
@@ -1,10 +1,20 @@
|
|
|
1
|
-
const gulpConfig = require('../gulp.config.js')
|
|
2
|
-
const { runCLI
|
|
1
|
+
const gulpConfig = require('../gulp.config.js')
|
|
2
|
+
const { runCLI } = require('jest')
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Run all tests with jest.
|
|
6
|
+
* @function
|
|
7
|
+
* @memberOf module:js-build-tools
|
|
8
|
+
* @param {function} [done=null]
|
|
9
|
+
* @param {Array.<string>|string} [testPath='path/config/test/files']
|
|
6
10
|
* @returns {Promise<*>}
|
|
7
11
|
*/
|
|
8
|
-
const testFull =
|
|
12
|
+
const testFull = (done = null, testPath = gulpConfig.get('testPath')) => {
|
|
13
|
+
if (!Array.isArray(testPath)) {
|
|
14
|
+
// The testPath must be an array of strings
|
|
15
|
+
testPath = [testPath]
|
|
16
|
+
}
|
|
17
|
+
return runCLI(gulpConfig.get('testOptions'), testPath)
|
|
18
|
+
}
|
|
9
19
|
|
|
10
20
|
module.exports = testFull
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const { setUp } = require('./testHelpers')
|
|
2
|
+
const gulpConfig = setUp.gulpConfig
|
|
3
|
+
const { runCLI } = require('jest')
|
|
4
|
+
const testFull = require('./testFull')
|
|
5
|
+
|
|
6
|
+
jest.mock('jest', () => ({
|
|
7
|
+
'runCLI': jest.fn(() => Promise.resolve(true))
|
|
8
|
+
}))
|
|
9
|
+
|
|
10
|
+
describe('testFull', () => {
|
|
11
|
+
test('runs the Jest CLI with the configured options', () => {
|
|
12
|
+
expect.assertions(1)
|
|
13
|
+
testFull()
|
|
14
|
+
expect(runCLI).toHaveBeenCalledWith(gulpConfig.get('testOptions'), [gulpConfig.get('testPath')])
|
|
15
|
+
})
|
|
16
|
+
})
|
package/functions/testHelpers.js
CHANGED
|
@@ -1,142 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* @
|
|
4
|
-
* @
|
|
2
|
+
* An assortment of objects that can be used in tests and some functions to help debug and write tests.
|
|
3
|
+
* @file
|
|
4
|
+
* @author Joshua Heagle <joshuaheagle@gmail.com>
|
|
5
|
+
* @version 2.0.0
|
|
6
|
+
* @module testHelpers
|
|
7
|
+
* @memberOf module:js-build-tools
|
|
5
8
|
*/
|
|
6
|
-
export const logObject = (object, label = 'logging') => {
|
|
7
|
-
if (typeof require === 'undefined') {
|
|
8
|
-
console.log(label, object)
|
|
9
|
-
return
|
|
10
|
-
}
|
|
11
|
-
console.log(label, require('util').inspect(object, false, null, true))
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Multilayered node tree-like structure with parent references
|
|
16
|
-
* @type {Object.<string, string|Object|Array>}
|
|
17
|
-
*/
|
|
18
|
-
export const circularObject = { name: 'root', parent: {}, body: {}, head: {}, children: [] }
|
|
19
|
-
circularObject.children = [
|
|
20
|
-
{ name: 'body', parent: {}, children: [] },
|
|
21
|
-
{ name: 'head', parent: {}, children: [] }
|
|
22
|
-
]
|
|
23
|
-
circularObject.body = circularObject.children[0]
|
|
24
|
-
circularObject.head = circularObject.children[1]
|
|
25
|
-
circularObject.body.parent = circularObject
|
|
26
|
-
circularObject.head.parent = circularObject
|
|
27
|
-
circularObject.body.children = [
|
|
28
|
-
{ name: 'body child one', parent: {}, children: [] },
|
|
29
|
-
{ name: 'body child two', parent: {}, children: [] }
|
|
30
|
-
]
|
|
31
|
-
circularObject.body.children[0].parent = circularObject.body
|
|
32
|
-
circularObject.body.children[1].parent = circularObject.body
|
|
33
|
-
circularObject.head.children = [
|
|
34
|
-
{ name: 'head child one', parent: {}, children: [] },
|
|
35
|
-
{ name: 'head child two', parent: {}, children: [] }
|
|
36
|
-
]
|
|
37
|
-
circularObject.head.children[0].parent = circularObject.head
|
|
38
|
-
circularObject.head.children[1].parent = circularObject.head
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Sample object with deep references.
|
|
42
|
-
* @type {Object.<string, string|number|Object>}
|
|
43
|
-
*/
|
|
44
|
-
export const deepReferenceObject = {
|
|
45
|
-
object1: {
|
|
46
|
-
name: 'someName',
|
|
47
|
-
object2: {
|
|
48
|
-
age: 12,
|
|
49
|
-
array1: [
|
|
50
|
-
'someString',
|
|
51
|
-
'anotherString'
|
|
52
|
-
]
|
|
53
|
-
},
|
|
54
|
-
array2: [
|
|
55
|
-
89,
|
|
56
|
-
32
|
|
57
|
-
]
|
|
58
|
-
},
|
|
59
|
-
title: 'Some Title',
|
|
60
|
-
item: 45
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Sample LinkedList for testing circular references.
|
|
65
|
-
* @type {Object.<string, string|Object>}
|
|
66
|
-
*/
|
|
67
|
-
export const linkedList = { name: 'one', prev: null, next: null }
|
|
68
|
-
linkedList.next = { name: 'two', prev: linkedList, next: null }
|
|
69
|
-
linkedList.next.next = { name: 'three', prev: linkedList.next, next: null }
|
|
70
9
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
axis: 'x'
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Sample of domItem child with nested child and optional details
|
|
86
|
-
*/
|
|
87
|
-
export const domItem = [
|
|
88
|
-
{
|
|
89
|
-
attributes: { className: 'row', style: {} },
|
|
90
|
-
axis: 'y',
|
|
91
|
-
children: [
|
|
92
|
-
{
|
|
93
|
-
attributes: { style: {} },
|
|
94
|
-
axis: 'x',
|
|
95
|
-
children: [],
|
|
96
|
-
element: {},
|
|
97
|
-
eventListeners: {},
|
|
98
|
-
hasShip: false,
|
|
99
|
-
isHit: false,
|
|
100
|
-
parentItem: {},
|
|
101
|
-
point: {},
|
|
102
|
-
tagName: 'div'
|
|
103
|
-
}
|
|
104
|
-
],
|
|
105
|
-
element: null,
|
|
106
|
-
eventListeners: {},
|
|
107
|
-
parentItem: {},
|
|
108
|
-
tagName: 'div'
|
|
109
|
-
}
|
|
110
|
-
]
|
|
10
|
+
const circularObject = require('./test-helpers/circularObject')
|
|
11
|
+
const countMatches = require('./test-helpers/countMatches')
|
|
12
|
+
const deepReferenceObject = require('./test-helpers/deepReferenceObject')
|
|
13
|
+
const domItem = require('./test-helpers/domItem')
|
|
14
|
+
const jsonDom = require('./test-helpers/jsonDom')
|
|
15
|
+
const linkedList = require('./test-helpers/linkedList')
|
|
16
|
+
const logObject = require('./test-helpers/logObject')
|
|
17
|
+
const multiReferenceObject = require('./test-helpers/multiReferenceObject')
|
|
18
|
+
const nodeTree = require('./test-helpers/nodeTree')
|
|
19
|
+
const setUp = require('./test-helpers/setUp')
|
|
111
20
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
array1: [
|
|
124
|
-
'someString',
|
|
125
|
-
'anotherString'
|
|
126
|
-
],
|
|
127
|
-
array2: [
|
|
128
|
-
89,
|
|
129
|
-
32
|
|
130
|
-
],
|
|
131
|
-
title: 'Some Title',
|
|
132
|
-
item: 45
|
|
21
|
+
module.exports = {
|
|
22
|
+
circularObject,
|
|
23
|
+
countMatches,
|
|
24
|
+
deepReferenceObject,
|
|
25
|
+
domItem,
|
|
26
|
+
jsonDom,
|
|
27
|
+
linkedList,
|
|
28
|
+
logObject,
|
|
29
|
+
multiReferenceObject,
|
|
30
|
+
nodeTree,
|
|
31
|
+
setUp,
|
|
133
32
|
}
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Sample NodeTree for testing circular references and arrays.
|
|
137
|
-
* @type {Object.<string, string|Object|Array>}
|
|
138
|
-
*/
|
|
139
|
-
export const nodeTree = { name: 'one', parent: null, children: [] }
|
|
140
|
-
nodeTree.children[0] = { name: 'child one', parent: nodeTree, children: [] }
|
|
141
|
-
nodeTree.children[1] = { name: 'child two', parent: nodeTree, children: [] }
|
|
142
|
-
nodeTree.children[0].children[0] = { name: 'grandchild one', parent: nodeTree.children[0], children: [] }
|
|
@@ -1,100 +1,7 @@
|
|
|
1
|
-
const
|
|
2
|
-
circularObject,
|
|
3
|
-
deepReferenceObject,
|
|
4
|
-
domItem,
|
|
5
|
-
jsonDom,
|
|
6
|
-
linkedList,
|
|
7
|
-
logObject,
|
|
8
|
-
multiReferenceObject,
|
|
9
|
-
nodeTree
|
|
10
|
-
} = require('./testHelpers.js')
|
|
11
|
-
const util = require('util')
|
|
1
|
+
const testHelpers = require('./testHelpers')
|
|
12
2
|
|
|
13
3
|
describe('testHelpers', () => {
|
|
14
|
-
test('
|
|
15
|
-
|
|
16
|
-
const inspectSpy = jest.spyOn(util, 'inspect')
|
|
17
|
-
const someObject = { one: 1, two: 2, three: 3 }
|
|
18
|
-
logObject(someObject, 'someObject')
|
|
19
|
-
expect(inspectSpy).toHaveBeenCalledWith(someObject, false, null, true)
|
|
20
|
-
expect(logSpy).toHaveBeenCalledWith('someObject', util.inspect(someObject, false, null, true))
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
test('has sample circular object', () => {
|
|
24
|
-
expect(circularObject.body.parent).toBe(circularObject)
|
|
25
|
-
expect(circularObject.body.children[0].parent).toBe(circularObject.body)
|
|
26
|
-
expect(circularObject.body.children[1].parent).toBe(circularObject.body)
|
|
27
|
-
expect(circularObject.children[0]).toBe(circularObject.body)
|
|
28
|
-
expect(circularObject.head.parent).toBe(circularObject)
|
|
29
|
-
expect(circularObject.head.children[0].parent).toBe(circularObject.head)
|
|
30
|
-
expect(circularObject.head.children[1].parent).toBe(circularObject.head)
|
|
31
|
-
expect(circularObject.children[1]).toBe(circularObject.head)
|
|
32
|
-
})
|
|
33
|
-
|
|
34
|
-
test('has sample deep reference object', () => {
|
|
35
|
-
expect(deepReferenceObject).toHaveProperty('object1.object2.array1')
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
test('has sample domItem object', () => {
|
|
39
|
-
expect(domItem[0]).toHaveProperty('attributes')
|
|
40
|
-
expect(domItem[0]).toHaveProperty('children')
|
|
41
|
-
expect(domItem[0]).toHaveProperty('element')
|
|
42
|
-
expect(domItem[0]).toHaveProperty('eventListeners')
|
|
43
|
-
expect(domItem[0]).toHaveProperty('parentItem')
|
|
44
|
-
expect(domItem[0]).toHaveProperty('tagName')
|
|
45
|
-
})
|
|
46
|
-
|
|
47
|
-
test('has sample jsonDom object', () => {
|
|
48
|
-
expect(jsonDom).toHaveProperty('attributes')
|
|
49
|
-
expect(jsonDom).toHaveProperty('children')
|
|
50
|
-
expect(jsonDom).toHaveProperty('element')
|
|
51
|
-
expect(jsonDom).toHaveProperty('eventListeners')
|
|
52
|
-
expect(jsonDom).toHaveProperty('parentItem')
|
|
53
|
-
expect(jsonDom).toHaveProperty('tagName')
|
|
54
|
-
})
|
|
55
|
-
|
|
56
|
-
test('has sample linkedList object', () => {
|
|
57
|
-
expect(linkedList.name).toBe('one')
|
|
58
|
-
expect(linkedList).toHaveProperty('prev')
|
|
59
|
-
expect(linkedList.prev).toBeNull()
|
|
60
|
-
|
|
61
|
-
expect(linkedList).toHaveProperty('next')
|
|
62
|
-
expect(linkedList.next.name).toBe('two')
|
|
63
|
-
expect(linkedList).toHaveProperty('next.prev')
|
|
64
|
-
expect(linkedList.next.prev).toBe(linkedList)
|
|
65
|
-
|
|
66
|
-
expect(linkedList).toHaveProperty('next.next')
|
|
67
|
-
expect(linkedList.next.next.name).toBe('three')
|
|
68
|
-
expect(linkedList).toHaveProperty('next.prev')
|
|
69
|
-
expect(linkedList.next.next.prev).toBe(linkedList.next)
|
|
70
|
-
|
|
71
|
-
expect(linkedList).toHaveProperty('next.next.next')
|
|
72
|
-
expect(linkedList.next.next.next).toBeNull()
|
|
73
|
-
})
|
|
74
|
-
|
|
75
|
-
test('has sample multiReferenceObject object', () => {
|
|
76
|
-
expect(multiReferenceObject).toHaveProperty('object1.name')
|
|
77
|
-
expect(multiReferenceObject).toHaveProperty('object2.age')
|
|
78
|
-
expect(multiReferenceObject).toHaveProperty('array1.0')
|
|
79
|
-
expect(multiReferenceObject).toHaveProperty('array1.1')
|
|
80
|
-
expect(multiReferenceObject).toHaveProperty('array2.0')
|
|
81
|
-
expect(multiReferenceObject).toHaveProperty('array2.1')
|
|
82
|
-
expect(multiReferenceObject).toHaveProperty('title')
|
|
83
|
-
expect(multiReferenceObject).toHaveProperty('item')
|
|
84
|
-
})
|
|
85
|
-
|
|
86
|
-
test('has sample nodeTree object', () => {
|
|
87
|
-
expect(nodeTree.name).toBe('one')
|
|
88
|
-
expect(nodeTree.parent).toBeNull()
|
|
89
|
-
expect(nodeTree.children.length).toBe(2)
|
|
90
|
-
expect(nodeTree.children[0].name).toBe('child one')
|
|
91
|
-
expect(nodeTree.children[0].parent).toBe(nodeTree)
|
|
92
|
-
expect(nodeTree.children[0].children.length).toBe(1)
|
|
93
|
-
expect(nodeTree.children[0].children[0].name).toBe('grandchild one')
|
|
94
|
-
expect(nodeTree.children[0].children[0].parent).toBe(nodeTree.children[0])
|
|
95
|
-
expect(nodeTree.children[0].children[0].children.length).toBe(0)
|
|
96
|
-
expect(nodeTree.children[1].name).toBe('child two')
|
|
97
|
-
expect(nodeTree.children[1].parent).toBe(nodeTree)
|
|
98
|
-
expect(nodeTree.children[1].children.length).toBe(0)
|
|
4
|
+
test('is object with all helper exports', () => {
|
|
5
|
+
expect(Object.keys(testHelpers).length).toBe(10)
|
|
99
6
|
})
|
|
100
7
|
})
|
package/functions/testQuick.js
CHANGED
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
const gulpConfig = require('../gulp.config.js')
|
|
2
|
-
const { runCLI
|
|
2
|
+
const { runCLI } = require('jest')
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Run the Jest tests for files which have been modified (based on git status).
|
|
6
|
+
* @function
|
|
7
|
+
* @memberOf module:js-build-tools
|
|
8
|
+
* @param {function} [done=null]
|
|
9
|
+
* @param {Array.<string>|string} [testPath='path/config/test/files']
|
|
6
10
|
* @returns {Promise<*>}
|
|
7
11
|
*/
|
|
8
|
-
const testQuick =
|
|
12
|
+
const testQuick = (done = null, testPath = gulpConfig.get('testPath')) => {
|
|
13
|
+
if (!Array.isArray(testPath)) {
|
|
14
|
+
// The testPath must be an array of strings
|
|
15
|
+
testPath = [testPath]
|
|
16
|
+
}
|
|
17
|
+
return runCLI({ onlyChanged: true }, testPath)
|
|
18
|
+
}
|
|
9
19
|
|
|
10
20
|
module.exports = testQuick
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const { setUp } = require('./testHelpers')
|
|
2
|
+
const gulpConfig = setUp.gulpConfig
|
|
3
|
+
const { runCLI } = require('jest')
|
|
4
|
+
const testQuick = require('./testQuick')
|
|
5
|
+
|
|
6
|
+
jest.mock('jest', () => ({
|
|
7
|
+
'runCLI': jest.fn(() => Promise.resolve(true))
|
|
8
|
+
}))
|
|
9
|
+
|
|
10
|
+
describe('testQuick', () => {
|
|
11
|
+
test('runs the jest CLI with onlyChanged option', () => {
|
|
12
|
+
expect.assertions(1)
|
|
13
|
+
testQuick()
|
|
14
|
+
expect(runCLI).toHaveBeenCalledWith({ onlyChanged: true }, [gulpConfig.get('testPath')])
|
|
15
|
+
})
|
|
16
|
+
})
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
const typeScript = require('./typeScript')
|
|
2
|
+
const tsFor = require('./partials/tsFor')
|
|
3
|
+
jest.mock('./partials/tsFor', () => jest.fn())
|
|
4
|
+
|
|
5
|
+
describe('typeScript', () => {
|
|
6
|
+
test('calls tsFor with no parameters', () => {
|
|
7
|
+
typeScript()
|
|
8
|
+
expect(tsFor).toHaveBeenCalled()
|
|
9
|
+
})
|
|
10
|
+
})
|
package/functions/watchFull.js
CHANGED
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
const
|
|
2
|
-
const distFor = require('./distFor')
|
|
3
|
-
const gulpConfig = require('../gulp.config.js')
|
|
4
|
-
const { parallel, series, watch } = require('gulp')
|
|
5
|
-
const testQuick = require('./testQuick')
|
|
1
|
+
const { beginWatcher, runOnChange } = require('./partials')
|
|
6
2
|
|
|
7
3
|
/**
|
|
8
4
|
* Watch for changes and run the distribution for the changed files, then bundle and test the changed files.
|
|
9
|
-
* @
|
|
5
|
+
* @function
|
|
6
|
+
* @memberOf module:js-build-tools
|
|
7
|
+
* @returns {FSWatcher}
|
|
10
8
|
*/
|
|
11
|
-
const watchFull = () =>
|
|
12
|
-
.on('change',
|
|
13
|
-
const pathRegex = new RegExp(`^${gulpConfig.srcPath}(.*\\/).+\\.js$`, 'i')
|
|
14
|
-
const distForPath = () => distFor(path, path.replace(pathRegex, `${gulpConfig.distPath}$1`))
|
|
15
|
-
return parallel(testQuick, series(distForPath, bundle))()
|
|
16
|
-
})
|
|
9
|
+
const watchFull = () => beginWatcher()
|
|
10
|
+
.on('change', runOnChange)
|
|
17
11
|
|
|
18
12
|
module.exports = watchFull
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const fs = require('fs')
|
|
2
|
+
const setUp = require('./test-helpers/setUp')
|
|
3
|
+
setUp.setDefaults('test-watch-full')
|
|
4
|
+
const gulpConfig = setUp.gulpConfig
|
|
5
|
+
const watchFull = require('./watchFull')
|
|
6
|
+
const beginWatcher = require('./partials/beginWatcher')
|
|
7
|
+
const runOnChange = require('./partials/runOnChange')
|
|
8
|
+
|
|
9
|
+
jest.mock('./partials/beginWatcher', () => jest.fn(() => ({ on: (event, fn) => fn() })))
|
|
10
|
+
jest.mock('./partials/runOnChange', () => jest.fn())
|
|
11
|
+
|
|
12
|
+
const rawContents = 'const { beginWatcher, runOnChange } = require(\'./partials\')\n' +
|
|
13
|
+
'\n' +
|
|
14
|
+
'/**\n' +
|
|
15
|
+
' * Watch for changes and run the distribution for the changed files, then bundle and test the changed files.\n' +
|
|
16
|
+
' * @function\n' +
|
|
17
|
+
' * @memberOf module:js-build-tools\n' +
|
|
18
|
+
' * @returns {FSWatcher}\n' +
|
|
19
|
+
' */\n' +
|
|
20
|
+
'const watchFull = () => beginWatcher()\n' +
|
|
21
|
+
' .on(\'change\', runOnChange)\n' +
|
|
22
|
+
'\n' +
|
|
23
|
+
'module.exports = watchFull\n'
|
|
24
|
+
|
|
25
|
+
beforeEach(setUp.beforeEach)
|
|
26
|
+
|
|
27
|
+
afterEach(setUp.afterEach)
|
|
28
|
+
|
|
29
|
+
describe('watchFull', () => {
|
|
30
|
+
test('should call beginWatcher and runOnChange for change event', () => {
|
|
31
|
+
const srcPath = gulpConfig.get('srcPath')
|
|
32
|
+
gulpConfig.set('watchSearch', `${srcPath}/*.js`)
|
|
33
|
+
const srcFile = `${srcPath}/watchFull.js`
|
|
34
|
+
fs.writeFileSync(srcFile, rawContents)
|
|
35
|
+
expect.assertions(2)
|
|
36
|
+
watchFull()
|
|
37
|
+
expect(beginWatcher).toHaveBeenCalled()
|
|
38
|
+
expect(runOnChange).toHaveBeenCalled()
|
|
39
|
+
})
|
|
40
|
+
})
|
package/functions/watchTest.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
const gulpConfig = require('../gulp.config.js')
|
|
2
|
-
const {
|
|
2
|
+
const { watch } = require('gulp')
|
|
3
3
|
const testQuick = require('./testQuick')
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Watch for changes and run the tests.
|
|
7
|
+
* @function
|
|
8
|
+
* @memberOf module:js-build-tools
|
|
7
9
|
* @returns {*}
|
|
8
10
|
*/
|
|
9
|
-
const watchTest = () => watch(gulpConfig.watchSearch, { ignoreInitial: false },
|
|
11
|
+
const watchTest = () => watch(gulpConfig.get('watchSearch'), { ignoreInitial: false }, testQuick)
|
|
10
12
|
|
|
11
13
|
module.exports = watchTest
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
const setUp = require('./test-helpers/setUp')
|
|
2
|
+
setUp.setDefaults('test-watch-test')
|
|
3
|
+
const gulpConfig = setUp.gulpConfig
|
|
4
|
+
gulpConfig.set('watchSearch', 'test-begin-watcher/*.js')
|
|
5
|
+
const watchTest = require('./watchTest')
|
|
6
|
+
const { EventEmitter } = require('node:events')
|
|
7
|
+
const fs = require('fs')
|
|
8
|
+
const testQuick = require('./testQuick')
|
|
9
|
+
|
|
10
|
+
jest.mock('./testQuick', () => jest.fn(() => Promise.resolve(true)))
|
|
11
|
+
|
|
12
|
+
const rawContents = 'const gulpConfig = require(\'../gulp.config.js\')\n' +
|
|
13
|
+
'const { watch } = require(\'gulp\')\n' +
|
|
14
|
+
'const testQuick = require(\'./testQuick\')\n' +
|
|
15
|
+
'\n' +
|
|
16
|
+
'/**\n' +
|
|
17
|
+
' * Watch for changes and run the tests.\n' +
|
|
18
|
+
' * @function\n' +
|
|
19
|
+
' * @memberOf module:js-build-tools\n' +
|
|
20
|
+
' * @returns {*}\n' +
|
|
21
|
+
' */\n' +
|
|
22
|
+
'const watchTest = () => watch(gulpConfig.get(\'watchSearch\'), { ignoreInitial: false }, testQuick)\n' +
|
|
23
|
+
'\n' +
|
|
24
|
+
'module.exports = watchTest\n'
|
|
25
|
+
|
|
26
|
+
const filePath = gulpConfig.get('srcPath') + '/watchTest.js'
|
|
27
|
+
|
|
28
|
+
beforeEach(() => setUp.beforeEach()
|
|
29
|
+
.then(
|
|
30
|
+
() => fs.writeFileSync(filePath, rawContents)
|
|
31
|
+
)
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
afterEach(setUp.afterEach)
|
|
35
|
+
|
|
36
|
+
describe('watchTest', () => {
|
|
37
|
+
test('returns instance of EventEmitter / FSWatcher and calls testQuick on change', done => {
|
|
38
|
+
expect.assertions(2)
|
|
39
|
+
const fsWatcher = watchTest()
|
|
40
|
+
expect(fsWatcher).toBeInstanceOf(EventEmitter)
|
|
41
|
+
fsWatcher.emit('change')
|
|
42
|
+
setTimeout(() => {
|
|
43
|
+
expect(testQuick).toHaveBeenCalled()
|
|
44
|
+
done()
|
|
45
|
+
}, 500)
|
|
46
|
+
fsWatcher.close()
|
|
47
|
+
})
|
|
48
|
+
})
|