From 0141098d2560cd7ab637c867f172470890041394 Mon Sep 17 00:00:00 2001 From: Huafu Gandon Date: Thu, 20 Sep 2018 18:36:32 +0200 Subject: [PATCH] test(e2e): deep paths and coverage --- e2e/__cases__/deep/package.json | 5 + e2e/__cases__/deep/src/Button/click.ts | 5 + e2e/__cases__/deep/src/Button/mod.d.ts | 3 + e2e/__cases__/deep/src/Button/mod.js | 3 + .../deep/src/Tests/Button/click.test.ts | 5 + e2e/__cases__/deep/src/Tests/jest.config.js | 24 ++ e2e/__cases__/deep/src/Tests/tsconfig.json | 5 + e2e/__cases__/deep/src/tsconfig.base.json | 10 + .../deep/src/tsconfig.base.node.json | 10 + e2e/__cases__/deep/tsconfig.json | 5 + .../__snapshots__/deep-path.test.ts.snap | 271 ++++++++++++++++++ e2e/__tests__/deep-path.test.ts | 20 ++ 12 files changed, 366 insertions(+) create mode 100644 e2e/__cases__/deep/package.json create mode 100644 e2e/__cases__/deep/src/Button/click.ts create mode 100644 e2e/__cases__/deep/src/Button/mod.d.ts create mode 100644 e2e/__cases__/deep/src/Button/mod.js create mode 100644 e2e/__cases__/deep/src/Tests/Button/click.test.ts create mode 100755 e2e/__cases__/deep/src/Tests/jest.config.js create mode 100755 e2e/__cases__/deep/src/Tests/tsconfig.json create mode 100755 e2e/__cases__/deep/src/tsconfig.base.json create mode 100755 e2e/__cases__/deep/src/tsconfig.base.node.json create mode 100644 e2e/__cases__/deep/tsconfig.json create mode 100644 e2e/__tests__/__snapshots__/deep-path.test.ts.snap create mode 100644 e2e/__tests__/deep-path.test.ts diff --git a/e2e/__cases__/deep/package.json b/e2e/__cases__/deep/package.json new file mode 100644 index 0000000000..511064b15a --- /dev/null +++ b/e2e/__cases__/deep/package.json @@ -0,0 +1,5 @@ +{ + "scripts": { + "test": "cd src/Tests && jest" + } +} diff --git a/e2e/__cases__/deep/src/Button/click.ts b/e2e/__cases__/deep/src/Button/click.ts new file mode 100644 index 0000000000..e6ac69b45f --- /dev/null +++ b/e2e/__cases__/deep/src/Button/click.ts @@ -0,0 +1,5 @@ +import * as mod from './mod' + +export function click(foo: string) { + return `clicked ${mod(foo)}` +} diff --git a/e2e/__cases__/deep/src/Button/mod.d.ts b/e2e/__cases__/deep/src/Button/mod.d.ts new file mode 100644 index 0000000000..af187fb420 --- /dev/null +++ b/e2e/__cases__/deep/src/Button/mod.d.ts @@ -0,0 +1,3 @@ +type ModExport = (str: string) => string +declare const _export: ModExport +export = _export diff --git a/e2e/__cases__/deep/src/Button/mod.js b/e2e/__cases__/deep/src/Button/mod.js new file mode 100644 index 0000000000..e6b53c197a --- /dev/null +++ b/e2e/__cases__/deep/src/Button/mod.js @@ -0,0 +1,3 @@ +module.exports = function(str) { + return str.toUpperCase() +} diff --git a/e2e/__cases__/deep/src/Tests/Button/click.test.ts b/e2e/__cases__/deep/src/Tests/Button/click.test.ts new file mode 100644 index 0000000000..a99d0e5599 --- /dev/null +++ b/e2e/__cases__/deep/src/Tests/Button/click.test.ts @@ -0,0 +1,5 @@ +import { click } from '../../Button/click' + +test('button should click!', () => { + expect(click('bar')).toBe('clicked BAR') +}) diff --git a/e2e/__cases__/deep/src/Tests/jest.config.js b/e2e/__cases__/deep/src/Tests/jest.config.js new file mode 100755 index 0000000000..3ad00da01c --- /dev/null +++ b/e2e/__cases__/deep/src/Tests/jest.config.js @@ -0,0 +1,24 @@ +const cfg = {} + +if (require('jest/package.json').version.split('.').shift() === '22') { + Object.assign(cfg, require('ts-jest').jestPreset) +} else { + cfg.preset = 'ts-jest' +} + +module.exports = Object.assign({}, cfg, { + collectCoverage: true, + collectCoverageFrom: ["**/*.ts", "!**/*.d.ts", "!**/build/**", "!/FrontEnd/**"], + forceCoverageMatch: ["**/*.test.ts"], + coverageDirectory: "Tests/coverage", + coverageReporters: ["lcov"], + rootDir: "..", + testMatch: ["**/*.test.ts"], + testEnvironment: "node", + globals: { + "ts-jest": { + tsConfig: "./tsconfig.json", + }, + }, + // testResultsProcessor: "jest-teamcity-reporter", +}) diff --git a/e2e/__cases__/deep/src/Tests/tsconfig.json b/e2e/__cases__/deep/src/Tests/tsconfig.json new file mode 100755 index 0000000000..d9567ce808 --- /dev/null +++ b/e2e/__cases__/deep/src/Tests/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "../tsconfig.base.node.json", + "compilerOptions": { + } +} diff --git a/e2e/__cases__/deep/src/tsconfig.base.json b/e2e/__cases__/deep/src/tsconfig.base.json new file mode 100755 index 0000000000..41e9c8ac0e --- /dev/null +++ b/e2e/__cases__/deep/src/tsconfig.base.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "skipLibCheck": true, + "moduleResolution": "node", + "forceConsistentCasingInFileNames": true, + "experimentalDecorators": true, + "emitDecoratorMetadata": true, + "strict": true + } +} diff --git a/e2e/__cases__/deep/src/tsconfig.base.node.json b/e2e/__cases__/deep/src/tsconfig.base.node.json new file mode 100755 index 0000000000..cfd6795637 --- /dev/null +++ b/e2e/__cases__/deep/src/tsconfig.base.node.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.base.json", + "compilerOptions": { + "module": "commonjs", + "target": "es2017", + "lib": [ + "es2017" + ] + } +} diff --git a/e2e/__cases__/deep/tsconfig.json b/e2e/__cases__/deep/tsconfig.json new file mode 100644 index 0000000000..2f98042715 --- /dev/null +++ b/e2e/__cases__/deep/tsconfig.json @@ -0,0 +1,5 @@ +{ + "compilerOptions": { + "esModuleInterop": true + } +} diff --git a/e2e/__tests__/__snapshots__/deep-path.test.ts.snap b/e2e/__tests__/__snapshots__/deep-path.test.ts.snap new file mode 100644 index 0000000000..aacd130d33 --- /dev/null +++ b/e2e/__tests__/__snapshots__/deep-path.test.ts.snap @@ -0,0 +1,271 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Deep paths test should pass using template "default": lcov 1`] = ` +"TN: +SF:/src/Button/click.ts +FN:3,click +FNF:1 +FNH:1 +FNDA:1,click +DA:1,1 +DA:3,1 +DA:4,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:/src/Tests/Button/click.test.ts +FN:3,(anonymous_0) +FNF:1 +FNH:1 +FNDA:1,(anonymous_0) +DA:1,1 +DA:3,1 +DA:4,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +" +`; + +exports[`Deep paths test should pass using template "default": output 1`] = ` + √ npm -s run test + ↳ exit code: 0 + ===[ STDOUT ]=================================================================== + =============================== Coverage summary =============================== + Statements : 100% ( 6/6 ) + Branches : 100% ( 0/0 ) + Functions : 100% ( 2/2 ) + Lines : 100% ( 6/6 ) + ================================================================================ + ===[ STDERR ]=================================================================== + PASS Button/click.test.ts + √ button should click! + + Test Suites: 1 passed, 1 total + Tests: 1 passed, 1 total + Snapshots: 0 total + Time: XXs + Ran all test suites. + ================================================================================ +`; + +exports[`Deep paths test should pass using template "with-babel-6": lcov 1`] = ` +"TN: +SF:/src/Button/click.ts +FN:3,click +FNF:1 +FNH:1 +FNDA:1,click +DA:1,1 +DA:3,1 +DA:4,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:/src/Tests/Button/click.test.ts +FN:3,(anonymous_0) +FNF:1 +FNH:1 +FNDA:1,(anonymous_0) +DA:1,1 +DA:3,1 +DA:4,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +" +`; + +exports[`Deep paths test should pass using template "with-babel-6": output 1`] = ` + √ npm -s run test + ↳ exit code: 0 + ===[ STDOUT ]=================================================================== + =============================== Coverage summary =============================== + Statements : 100% ( 6/6 ) + Branches : 100% ( 0/0 ) + Functions : 100% ( 2/2 ) + Lines : 100% ( 6/6 ) + ================================================================================ + ===[ STDERR ]=================================================================== + PASS Button/click.test.ts + √ button should click! + + Test Suites: 1 passed, 1 total + Tests: 1 passed, 1 total + Snapshots: 0 total + Time: XXs + Ran all test suites. + ================================================================================ +`; + +exports[`Deep paths test should pass using template "with-babel-7": lcov 1`] = ` +"TN: +SF:/src/Button/click.ts +FN:3,click +FNF:1 +FNH:1 +FNDA:1,click +DA:1,1 +DA:3,1 +DA:4,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:/src/Tests/Button/click.test.ts +FN:3,(anonymous_0) +FNF:1 +FNH:1 +FNDA:1,(anonymous_0) +DA:1,1 +DA:3,1 +DA:4,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +" +`; + +exports[`Deep paths test should pass using template "with-babel-7": output 1`] = ` + √ npm -s run test + ↳ exit code: 0 + ===[ STDOUT ]=================================================================== + =============================== Coverage summary =============================== + Statements : 100% ( 6/6 ) + Branches : 100% ( 0/0 ) + Functions : 100% ( 2/2 ) + Lines : 100% ( 6/6 ) + ================================================================================ + ===[ STDERR ]=================================================================== + PASS Button/click.test.ts + √ button should click! + + Test Suites: 1 passed, 1 total + Tests: 1 passed, 1 total + Snapshots: 0 total + Time: XXs + Ran all test suites. + ================================================================================ +`; + +exports[`Deep paths test should pass using template "with-jest-22": lcov 1`] = ` +"TN: +SF:/src/Button/click.ts +FN:3,click +FNF:1 +FNH:1 +FNDA:1,click +DA:1,1 +DA:3,1 +DA:4,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:/src/Tests/Button/click.test.ts +FN:3,(anonymous_0) +FNF:1 +FNH:1 +FNDA:1,(anonymous_0) +DA:1,1 +DA:3,1 +DA:4,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +" +`; + +exports[`Deep paths test should pass using template "with-jest-22": output 1`] = ` + √ npm -s run test + ↳ exit code: 0 + ===[ STDOUT ]=================================================================== + =============================== Coverage summary =============================== + Statements : 100% ( 6/6 ) + Branches : 100% ( 0/0 ) + Functions : 100% ( 2/2 ) + Lines : 100% ( 6/6 ) + ================================================================================ + ===[ STDERR ]=================================================================== + PASS Button/click.test.ts + √ button should click! + + Test Suites: 1 passed, 1 total + Tests: 1 passed, 1 total + Snapshots: 0 total + Time: XXs + Ran all test suites. + ================================================================================ +`; + +exports[`Deep paths test should pass using template "with-typescript-2-7": lcov 1`] = ` +"TN: +SF:/src/Button/click.ts +FN:3,click +FNF:1 +FNH:1 +FNDA:1,click +DA:1,1 +DA:3,1 +DA:4,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:/src/Tests/Button/click.test.ts +FN:3,(anonymous_0) +FNF:1 +FNH:1 +FNDA:1,(anonymous_0) +DA:1,1 +DA:3,1 +DA:4,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +" +`; + +exports[`Deep paths test should pass using template "with-typescript-2-7": output 1`] = ` + √ npm -s run test + ↳ exit code: 0 + ===[ STDOUT ]=================================================================== + =============================== Coverage summary =============================== + Statements : 100% ( 6/6 ) + Branches : 100% ( 0/0 ) + Functions : 100% ( 2/2 ) + Lines : 100% ( 6/6 ) + ================================================================================ + ===[ STDERR ]=================================================================== + PASS Button/click.test.ts + √ button should click! + + Test Suites: 1 passed, 1 total + Tests: 1 passed, 1 total + Snapshots: 0 total + Time: XXs + Ran all test suites. + ================================================================================ +`; diff --git a/e2e/__tests__/deep-path.test.ts b/e2e/__tests__/deep-path.test.ts new file mode 100644 index 0000000000..a13856ee1e --- /dev/null +++ b/e2e/__tests__/deep-path.test.ts @@ -0,0 +1,20 @@ +import { readFileSync } from 'fs' +import { join } from 'path' + +import { allValidPackageSets } from '../__helpers__/templates' +import { configureTestCase } from '../__helpers__/test-case' + +describe('Deep paths test', () => { + const testCase = configureTestCase('deep') + + testCase.runWithTemplates(allValidPackageSets, 0, (runTest, { testLabel }) => { + it(testLabel, () => { + const result = runTest() + expect(result.status).toBe(0) + expect(result).toMatchSnapshot('output') + let content: string = readFileSync(join(result.cwd, 'src', 'Tests', 'coverage', 'lcov.info'), 'utf8') + content = result.normalize(content) + expect(content).toMatchSnapshot('lcov') + }) + }) +})