Skip to content

Commit d0f4ce0

Browse files
committed
feat(babel): alternative setup babel/typescript
BREAKING CHANGE: add an alternative preset for babel and restructures the whole repository to treat babel and ts-jest equally. The jest config of users will have to be adjusted, see the CHANGELOG.md for migration information.
1 parent f925564 commit d0f4ce0

26 files changed

+1785
-71
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
## Changelog (master)
22

3+
#### Features
4+
* (**BREAKING?**): Add preset `babel` as transpilation alternative to `ts-jest` ([#317](https://github.com/thymikee/jest-preset-angular/pull/317)).
5+
36
### v8.0.0
47

58
#### Features

example/babel.config.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
const { babelAngularConfig } = require('jest-preset-angular/build/babel/babel.config')
2+
module.exports = api => {
3+
api.cache(false)
4+
return {
5+
presets: babelAngularConfig.presets,
6+
plugins: [
7+
...babelAngularConfig.plugins,
8+
// your plugins
9+
]
10+
}
11+
}
12+

example/jest.config.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
module.exports = {
2-
preset: "jest-preset-angular",
2+
preset: "jest-preset-angular/build/ts-jest",
3+
// preset: "jest-preset-angular/build/babel",
34
snapshotSerializers: [
45
"jest-preset-angular/build/AngularNoNgAttributesSnapshotSerializer.js",
56
"jest-preset-angular/build/AngularSnapshotSerializer.js",

example/package.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,19 @@
3030
"@angular/cli": "~8.3.4",
3131
"@angular/compiler-cli": "~8.2.5",
3232
"@angular/language-service": "~8.2.5",
33+
"@babel/core": "^7.6.2",
34+
"@babel/plugin-proposal-class-properties": "^7.5.5",
35+
"@babel/plugin-proposal-decorators": "^7.6.0",
36+
"@babel/preset-env": "^7.6.2",
37+
"@babel/preset-typescript": "^7.6.0",
3338
"@types/jest": "^24.0.0",
3439
"@types/node": "^11.0.0",
40+
"babel-jest": "^24.9.0",
41+
"babel-plugin-const-enum": "^0.0.2",
42+
"babel-plugin-transform-typescript-metadata": "^0.2.2",
3543
"jest": "^24.0.0",
3644
"jest-preset-angular": "file:../",
45+
"ts-jest": "^24.1.0",
3746
"ts-node": "^8.0.3",
3847
"typescript": "~3.5.3"
3948
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { Injectable } from "@angular/core";
2+
import { HeroCategory, HeroColor } from "./hero-properties";
3+
4+
@Injectable({
5+
providedIn: "root"
6+
})
7+
export class HeroCategoryService {
8+
getCategoryForHero(heroName: string): HeroCategory {
9+
switch (heroName) {
10+
case "Joker":
11+
return HeroCategory.Evil;
12+
case "Batman":
13+
return HeroCategory.Good;
14+
default:
15+
return HeroCategory.Neutral;
16+
}
17+
}
18+
19+
getColorForHero(heroName: string): HeroColor {
20+
switch (heroName) {
21+
case "Joker":
22+
return HeroColor.Purple;
23+
case "Batman":
24+
return HeroColor.Black;
25+
case "Catwoman":
26+
return HeroColor.Black;
27+
default:
28+
return HeroColor.Transparent;
29+
}
30+
}
31+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { async } from "@angular/core/testing";
2+
3+
import { HeroCategoryService } from "./hero-category.service";
4+
import { HeroCategory, HeroColor } from './hero-properties';
5+
6+
describe("HeroCategoryService", () => {
7+
let service: HeroCategoryService;
8+
9+
beforeEach(() => (service = new HeroCategoryService()));
10+
11+
it("should create", () => {
12+
expect(service).toBeTruthy();
13+
});
14+
15+
it("should return the right category for heroes", () => {
16+
expect(service.getCategoryForHero("Batman")).toEqual(HeroCategory.Good);
17+
expect(service.getCategoryForHero("Joker")).toEqual(HeroCategory.Evil);
18+
expect(service.getCategoryForHero("Catwoman")).toEqual(HeroCategory.Neutral);
19+
});
20+
21+
it("should return the right color for heroes", () => {
22+
expect(service.getColorForHero("Batman")).toEqual(HeroColor.Black);
23+
expect(service.getColorForHero("Joker")).toEqual(HeroColor.Purple);
24+
expect(service.getColorForHero("The Penguin")).toEqual(HeroColor.Transparent);
25+
});
26+
27+
});
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
2+
export enum HeroCategory {
3+
Evil,
4+
Good,
5+
Neutral
6+
}
7+
8+
export const enum HeroColor {
9+
Black = "#000000",
10+
Purple = "#551A8B",
11+
Transparent = "#00000000"
12+
}

0 commit comments

Comments
 (0)