@openrewrite/jest-environment
v0.0.11
Published
A jest environment to support openrewrite recipe authoring
Downloads
3
Readme
🚧 Under Construction 🚧
- Jest Environment for recipe authoring
Install
Setup Checklist
- In your jest configuration add:
"preset": "@openrewrite/jest-environment/lib/preset"
Make sure your package.json has a main entry pointing to the index file produced with the openrewrite webpack config
Make sure webpack has been built, you can add your webpack command to your npm script for testing:
"test": "webpack --config webpack.config.js && jest"
How To Use
In a test you will have access to global object OpenRewrite
:
OpenRewrite.runBasicRecipeTests
- runs general validation on your recipe to make sure it is compatible with the polyglot adhoc requestOpenRewrite.runRecipe
- sends a target text, the language of the target text, the contents of your recipe, and any recipe options, to app.moderne.io for analysis
Example:
// recipe file
export class MakePrivateRecipe extends Recipe {...}
// test file
import { MakePrivateRecipe } from './make-private.recipe.ts';
describe('Make Private Recipe', () => {
// Will run a suite of tests in its own describe block
OpenRewrite.runBasicRecipeTests(ChangeLicenseRecipe);
it(`should change private to true`, async () => {
// arrange
const before = `
{
"name": "Name",
"private": "false"
}
`;
// act
const after = await OpenRewrite.runRecipe(before, 'json', MakePrivateRecipe, { fileMatcher: '**/package.json' });
// assert
const expectedAfter = `
{
"name": "Name",
"private": "true"
}
`;
expect(after).toBe(expectedAfter);
});
});
EnvironmentOptions
By default the OpenRewrite Jest Environment's runRecipe
command will execute your recipe via https://api.moderne.io/
.
If you desire to send the requests to a different endpoint you can add the following jest configuration:
"testEnvironmentOptions": {
"moderneURL": "http://localhost:4000"
}