Skip to content

Commit

Permalink
feat(transformer): error when running tests with no transformer insta…
Browse files Browse the repository at this point in the history
…llation
  • Loading branch information
Pmyl committed Jun 27, 2020
1 parent 02c5590 commit 16506e5
Show file tree
Hide file tree
Showing 21 changed files with 103 additions and 35 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
const webpackConfig = require('../test/webpack.js');
process.env.CHROME_BIN = require('puppeteer').executablePath();

module.exports = function(config, url) {
module.exports = function(config, url, webpackConfig) {
return {
basePath: '',
frameworks: ['jasmine'],
Expand Down
6 changes: 6 additions & 0 deletions config/karma/base/karma.config.noTransformer.base.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
const webpackConfig = require('../../test/noTransformer/webpack.js');
const karmaBase = require('./karma.config.base');

module.exports = function(config, url) {
return karmaBase(config, url, webpackConfig);
};
6 changes: 6 additions & 0 deletions config/karma/base/karma.config.transformer.base.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
const webpackConfig = require('../../test/transformer/webpack.js');
const karmaBase = require('./karma.config.base');

module.exports = function(config, url) {
return karmaBase(config, url, webpackConfig);
};
2 changes: 1 addition & 1 deletion config/karma/karma.config.features.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const karmaBaseConfig = require('./karma.config.base');
const karmaBaseConfig = require('./base/karma.config.transformer.base');

module.exports = function(config) {
const karmaConfig = karmaBaseConfig(config, '../../test/features/context.ts');
Expand Down
2 changes: 1 addition & 1 deletion config/karma/karma.config.framework.context.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const karmaBaseConfig = require('./karma.config.base');
const karmaBaseConfig = require('./base/karma.config.transformer.base');

module.exports = function(config) {
const karmaConfig = karmaBaseConfig(config, "../../test/frameworkContext/context.ts");
Expand Down
2 changes: 1 addition & 1 deletion config/karma/karma.config.framework.deprecated.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const karmaBaseConfig = require('./karma.config.base');
const karmaBaseConfig = require('./base/karma.config.transformer.base');

module.exports = function(config) {
const karmaConfig = karmaBaseConfig(config, "../../test/frameworkContext/contextDeprecated.ts");
Expand Down
2 changes: 1 addition & 1 deletion config/karma/karma.config.framework.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const karmaBaseConfig = require('./karma.config.base');
const karmaBaseConfig = require('./base/karma.config.transformer.base');

module.exports = function(config) {
const karmaConfig = karmaBaseConfig(config, "../../test/framework/**/*.test.ts");
Expand Down
7 changes: 7 additions & 0 deletions config/karma/karma.config.noTransformer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
const karmaBaseConfig = require('./base/karma.config.noTransformer.base');

module.exports = function(config) {
const karmaConfig = karmaBaseConfig(config, "../../test/noTransformer/**/*.test.ts");

config.set(karmaConfig);
};
2 changes: 1 addition & 1 deletion config/karma/karma.config.registerMock.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const karmaBaseConfig = require('./karma.config.base');
const karmaBaseConfig = require('./base/karma.config.transformer.base');

module.exports = function(config) {
const karmaConfig = karmaBaseConfig(config, '../../test/registerMock/context.ts');
Expand Down
2 changes: 1 addition & 1 deletion config/karma/karma.config.transformer.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const karmaBaseConfig = require('./karma.config.base');
const karmaBaseConfig = require('./base/karma.config.transformer.base');

module.exports = function(config) {
const karmaConfig = karmaBaseConfig(config, '../../test/transformer/context.ts');
Expand Down
2 changes: 1 addition & 1 deletion config/karma/karma.config.transformer.playground.build.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const karmaBaseConfig = require('./karma.config.base');
const karmaBaseConfig = require('./base/karma.config.transformer.base');

module.exports = function(config) {
const karmaConfig = karmaBaseConfig(config, '../../test/playground/**/*.test.js');
Expand Down
2 changes: 1 addition & 1 deletion config/karma/karma.config.transformer.playground.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const karmaBaseConfig = require('./karma.config.base');
const karmaBaseConfig = require('./base/karma.config.transformer.base');

module.exports = function(config) {
const karmaConfig = karmaBaseConfig(config, '../../test/playground/**/*.test.ts');
Expand Down
2 changes: 1 addition & 1 deletion config/karma/karma.config.unit.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const karmaBaseConfig = require('./karma.config.base');
const karmaBaseConfig = require('./base/karma.config.transformer.base');

module.exports = function(config) {
const karmaConfig = karmaBaseConfig(config, '../../test/unit/**/*.test.ts');
Expand Down
1 change: 1 addition & 0 deletions config/test/noTransformer/webpack.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = require('../webpack.base.js');
27 changes: 7 additions & 20 deletions config/test/webpack.js → config/test/transformer/webpack.js
Original file line number Diff line number Diff line change
@@ -1,26 +1,13 @@
const transformer = require('../../dist/transformer');
const path = require('path');
const DetermineCacheBetweenTestsFromDebugEnvironment = require('./../utils/cache');
const DetermineFeaturesFromEnvironment = require('./../utils/features');
const transformer = require('../../../dist/transformer');
const merge = require('webpack-merge');
const base = require('../webpack.base.js');
const DetermineCacheBetweenTestsFromDebugEnvironment = require('./../../utils/cache');
const DetermineFeaturesFromEnvironment = require('./../../utils/features');

module.exports = function () {
return {
mode: "development",
resolve: {
extensions: ['.ts', '.js'],
alias: {
['ts-auto-mock']: path.join(__dirname, '../../dist'),
['ts-auto-mock/repository']: path.join(__dirname, '../../dist/repository'),
['ts-auto-mock/extension']: path.join(__dirname, '../../dist/extension'),
}
},
return merge.smart(base(), {
module: {
rules: [
{
test: /\.ts$/,
enforce: 'pre',
loader: 'eslint-loader'
},
{
test: /\.ts$/,
loader: 'awesome-typescript-loader',
Expand All @@ -36,5 +23,5 @@ module.exports = function () {
}
]
}
}
});
};
28 changes: 28 additions & 0 deletions config/test/webpack.base.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
const path = require('path');

module.exports = function () {
return {
mode: "development",
resolve: {
extensions: ['.ts', '.js'],
alias: {
['ts-auto-mock']: path.join(__dirname, '../../dist'),
['ts-auto-mock/repository']: path.join(__dirname, '../../dist/repository'),
['ts-auto-mock/extension']: path.join(__dirname, '../../dist/extension'),
}
},
module: {
rules: [
{
test: /\.ts$/,
enforce: 'pre',
loader: 'eslint-loader'
},
{
test: /\.ts$/,
loader: 'awesome-typescript-loader'
}
]
}
}
};
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,10 @@
"build:modules:debug": "cross-env DEBUG=true webpack --config config/modules/webpack.js",
"build:transformer:definitelyTyped": "webpack --config config/modules/definitelyTypedTransformer/webpack.functions.js && webpack --config config/modules/definitelyTypedTransformer/webpack.js",
"build:playground": "ttsc --project tsconfig.playground.json",
"test": "npm run test:transformer && npm run test:framework:context && npm run test:framework && npm run test:frameworkDeprecated && npm run test:registerMock && npm run test:features && npm run test:unit",
"test": "npm run test:transformer && npm run test:noTransformer && npm run test:framework:context && npm run test:framework && npm run test:frameworkDeprecated && npm run test:registerMock && npm run test:features && npm run test:unit",
"test:unit": "karma start config/karma/karma.config.unit.js",
"test:transformer": "cross-env CACHE=true karma start config/karma/karma.config.transformer.js",
"test:noTransformer": "cross-env CACHE=true karma start config/karma/karma.config.noTransformer.js",
"test:registerMock": "cross-env CACHE=true karma start config/karma/karma.config.registerMock.js",
"test:framework:context": "cross-env CACHE=true karma start config/karma/karma.config.framework.context.js",
"test:frameworkDeprecated": "cross-env CACHE=true karma start config/karma/karma.config.framework.deprecated.js",
Expand Down
9 changes: 8 additions & 1 deletion src/create-mock-list.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,9 @@
import { DeepPartial } from './partial/deepPartial';
export declare function createMockList<T extends object>(quantity: number, iterator?: (index: number) => DeepPartial<T>): T[];

// eslint-disable-next-line @typescript-eslint/no-unused-vars
export function createMockList<T extends object>(quantity: number, iterator?: (index: number) => DeepPartial<T>): T[] {
throw new Error(`
ts-auto-mock is not been configured as a transformer. Please follow the instructions in https://typescript-tdd.github.io/ts-auto-mock/installation
If help is required you can find us on https://typescript-tdd.github.io
`);
}
8 changes: 7 additions & 1 deletion src/create-mock.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
import { DeepPartial } from './partial/deepPartial';

export declare function createMock<T extends object>(values?: DeepPartial<T>): T;
// eslint-disable-next-line @typescript-eslint/no-unused-vars
export function createMock<T extends object>(values?: DeepPartial<T>): T {
throw new Error(`
ts-auto-mock is not been configured as a transformer. Please follow the instructions in https://typescript-tdd.github.io/ts-auto-mock/installation
If help is required you can find us on https://typescript-tdd.github.io
`);
}
8 changes: 7 additions & 1 deletion src/register-mock.ts
Original file line number Diff line number Diff line change
@@ -1 +1,7 @@
export declare function registerMock<T extends object>(factory: () => T): void;
// eslint-disable-next-line @typescript-eslint/no-unused-vars
export function registerMock<T extends object>(factory: () => T): void {
throw new Error(`
ts-auto-mock is not been configured as a transformer. Please follow the instructions in https://typescript-tdd.github.io/ts-auto-mock/installation
If help is required you can find us on https://typescript-tdd.github.io
`);
}
14 changes: 14 additions & 0 deletions test/noTransformer/noTransformer.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { createMock, createMockList, registerMock } from 'ts-auto-mock';

interface MyInterface {
a: string;
b: number;
}

describe('when using placeholder functions without installing the transformer', () => {
it('should throw an error linking the installation guide', () => {
expect(() => createMock<MyInterface>()).toThrowError(/https:\/\/typescript-tdd.github.io\/ts-auto-mock\/installation/);
expect(() => createMockList<MyInterface>(2)).toThrowError(/https:\/\/typescript-tdd.github.io\/ts-auto-mock\/installation/);
expect(() => registerMock<MyInterface>(() => ({ a: '', b: 4 }))).toThrowError(/https:\/\/typescript-tdd.github.io\/ts-auto-mock\/installation/);
});
});

0 comments on commit 16506e5

Please sign in to comment.