-
-
Notifications
You must be signed in to change notification settings - Fork 6.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
9279a3a
commit 8054b94
Showing
12 changed files
with
303 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
/** | ||
* Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
*/ | ||
|
||
module.exports = { | ||
plugins: [ | ||
'babel-plugin-transform-typescript-metadata', | ||
['@babel/plugin-proposal-decorators', {legacy: true}], | ||
'@babel/plugin-proposal-class-properties', | ||
], | ||
presets: [ | ||
[ | ||
'@babel/preset-env', | ||
{ | ||
shippedProposals: true, | ||
targets: {node: 8}, | ||
}, | ||
], | ||
'@babel/preset-typescript', | ||
] | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
import {ComponentFixture, TestBed, async} from '@angular/core/testing'; | ||
|
||
import {AppComponent} from './app.component'; | ||
import {DataService} from './shared/data.service'; | ||
|
||
const title = 'Test'; | ||
const getTitleFn = jest.fn().mockReturnValue(title); | ||
const dataServiceSpy = jest.fn().mockImplementation( | ||
(): Partial<DataService> => ({ | ||
getTitle: getTitleFn, | ||
}) | ||
); | ||
|
||
describe('AppComponent', () => { | ||
let fixture: ComponentFixture<AppComponent>; | ||
let app: AppComponent; | ||
|
||
beforeEach(async(() => { | ||
TestBed.configureTestingModule({ | ||
declarations: [AppComponent], | ||
providers: [{provide: DataService, useClass: dataServiceSpy}], | ||
}).compileComponents(); | ||
fixture = TestBed.createComponent(AppComponent); | ||
app = fixture.debugElement.componentInstance; | ||
})); | ||
|
||
it('should create the app', () => { | ||
expect(app).toBeTruthy(); | ||
}); | ||
|
||
it(`should have as title 'angular'`, () => { | ||
expect(app.title).toEqual(title); | ||
}); | ||
|
||
it('should render title in a h1 tag', () => { | ||
fixture.detectChanges(); | ||
const compiled = fixture.debugElement.nativeElement; | ||
expect(compiled.querySelector('h1').textContent).toContain( | ||
`Welcome to ${title}!` | ||
); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
import {Component} from '@angular/core'; | ||
|
||
import {DataService} from './shared/data.service'; | ||
|
||
@Component({ | ||
selector: 'app-root', | ||
template: '<h1>Welcome to {{ title }}!</h1>', | ||
}) | ||
export class AppComponent { | ||
public title: string; | ||
|
||
constructor(dataService: DataService) { | ||
this.title = dataService.getTitle(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
import {BrowserModule} from '@angular/platform-browser'; | ||
import {NgModule} from '@angular/core'; | ||
|
||
import {AppComponent} from './app.component'; | ||
|
||
@NgModule({ | ||
bootstrap: [AppComponent], | ||
declarations: [AppComponent], | ||
imports: [BrowserModule], | ||
}) | ||
export class AppModule {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
module.exports = { | ||
moduleFileExtensions: ['ts', 'html', 'js', 'json'], | ||
setupFilesAfterEnv: ['<rootDir>/setupJest.js'], | ||
transform: { | ||
'^.+\\.[t|j]s$': [ | ||
'babel-jest', | ||
{configFile: require.resolve('./.babelrc')}, | ||
], | ||
}, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
{ | ||
"name": "angular", | ||
"version": "0.0.1", | ||
"scripts": { | ||
"test": "jest" | ||
}, | ||
"private": true, | ||
"dependencies": { | ||
"@angular/common": "^8.2.5", | ||
"@angular/compiler": "^8.2.5", | ||
"@angular/core": "^8.2.5", | ||
"@angular/forms": "^8.2.5", | ||
"@angular/platform-browser": "^8.2.5", | ||
"@angular/platform-browser-dynamic": "^8.2.5", | ||
"core-js": "^3.2.1", | ||
"rxjs": "^6.5.3", | ||
"typescript": "*", | ||
"zone.js": "~0.9.1" | ||
}, | ||
"devDependencies": { | ||
"@babel/plugin-proposal-class-properties": "*", | ||
"@babel/plugin-proposal-decorators": "*", | ||
"@babel/preset-env": "*", | ||
"@babel/preset-typescript": "*", | ||
"babel-jest": "*", | ||
"babel-plugin-transform-typescript-metadata": "*", | ||
"@types/jest": "*", | ||
"jest": "*", | ||
"jest-zone-patch": "*" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
'use strict'; | ||
|
||
require('core-js/proposals/reflect-metadata'); | ||
require('zone.js/dist/zone.js'); | ||
require('zone.js/dist/proxy.js'); | ||
require('zone.js/dist/sync-test'); | ||
require('zone.js/dist/async-test'); | ||
require('zone.js/dist/fake-async-test'); | ||
// eslint-disable-next-line import/no-extraneous-dependencies | ||
require('jest-zone-patch'); | ||
|
||
const {getTestBed} = require('@angular/core/testing'); | ||
const testingModule = require('@angular/platform-browser-dynamic/testing'); | ||
|
||
getTestBed().initTestEnvironment( | ||
testingModule.BrowserDynamicTestingModule, | ||
testingModule.platformBrowserDynamicTesting() | ||
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
import {TestBed} from '@angular/core/testing'; | ||
|
||
import {DataService} from './data.service'; | ||
import {SubService} from './sub.service'; | ||
|
||
const title = 'SubTest'; | ||
const getTitleFn = jest.fn().mockReturnValue(title); | ||
const subServiceSpy = jest.fn().mockImplementation(() => ({ | ||
getTitle: getTitleFn, | ||
})); | ||
|
||
describe('Service: DataService', () => { | ||
let service: DataService; | ||
|
||
beforeEach(() => { | ||
TestBed.configureTestingModule({ | ||
providers: [DataService, {provide: SubService, useClass: subServiceSpy}], | ||
}); | ||
|
||
service = TestBed.get(DataService); | ||
}); | ||
|
||
it('should create service', () => { | ||
expect(service).toBeTruthy(); | ||
}); | ||
|
||
it('should return the right title', () => { | ||
expect(service.getTitle()).toEqual(title); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
import {Injectable} from '@angular/core'; | ||
|
||
import {SubService} from './sub.service'; | ||
|
||
@Injectable() | ||
export class DataService { | ||
constructor(private subService: SubService) {} | ||
|
||
getTitle() { | ||
return this.subService.getTitle(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
import {TestBed} from '@angular/core/testing'; | ||
|
||
import {SubService} from './sub.service'; | ||
|
||
describe('Service: SubService', () => { | ||
let service: SubService; | ||
|
||
beforeEach(() => { | ||
TestBed.configureTestingModule({ | ||
providers: [SubService], | ||
}); | ||
service = TestBed.get(SubService); | ||
}); | ||
|
||
it('should create service', () => { | ||
expect(service).toBeTruthy(); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
import {Injectable} from '@angular/core'; | ||
|
||
@Injectable() | ||
export class SubService { | ||
public getTitle() { | ||
return 'Angular App with Jest24'; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,6 +2,48 @@ | |
# yarn lockfile v1 | ||
|
||
|
||
"@angular/common@^8.2.5": | ||
version "8.2.5" | ||
resolved "https://registry.yarnpkg.com/@angular/common/-/common-8.2.5.tgz#4155df1ca4a6ac50a82b9cbf40dbc357f214e040" | ||
integrity sha512-7iSDLVhS+jbVRkECpbTzU9+6IQPS3Wl0CF73EA0sdzPbTC2GKvGfM9WLnIZZIxewkii6Wn1Yb0x0qRdWMT2STA== | ||
dependencies: | ||
tslib "^1.9.0" | ||
|
||
"@angular/compiler@^8.2.5": | ||
version "8.2.5" | ||
resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-8.2.5.tgz#015928a7698677484f5ff38054c5b12ea71a8e44" | ||
integrity sha512-u3OgSBTupn9DN1uDF+NmXqN7w9m6bbrIalJkwdw+kFXnXt8JpdIeJmeV2jN4wLuGp6A3sWS1ze+6u4kpFHMqTw== | ||
dependencies: | ||
tslib "^1.9.0" | ||
|
||
"@angular/core@^8.2.5": | ||
version "8.2.5" | ||
resolved "https://registry.yarnpkg.com/@angular/core/-/core-8.2.5.tgz#c94f41c81abc318c9597285648f790b88ca7bfa6" | ||
integrity sha512-cBEiHhLE8VFIdB53seR+nQYNQFlNloKgD7ro26eMazvRF94wBSzO9VrD3+/XmNWdIYibU7PBaXhDCOKTe+ZSHw== | ||
dependencies: | ||
tslib "^1.9.0" | ||
|
||
"@angular/forms@^8.2.5": | ||
version "8.2.5" | ||
resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-8.2.5.tgz#3d86574b344ffbe51403bf7237585cf42daaa8ab" | ||
integrity sha512-USJdzopslLC7JVMu7v58SA/g0NWeQeAM16qcR4LHj+wdMbJ+5G64LdZQe9vEHRdgGpgrZU4c2ODAwDEa1MzIDA== | ||
dependencies: | ||
tslib "^1.9.0" | ||
|
||
"@angular/platform-browser-dynamic@^8.2.5": | ||
version "8.2.5" | ||
resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-8.2.5.tgz#9d10e6a6ab11e541892049f41ea6244723a2c9ab" | ||
integrity sha512-4Ewg8I3T0t6/ClLt5ZFZ6ncDTqvEyI84h0K1cnNTsyoup3QKrY/FnklFbZbNl4ONVioHS6fkEg3R+xt1WthhYQ== | ||
dependencies: | ||
tslib "^1.9.0" | ||
|
||
"@angular/platform-browser@^8.2.5": | ||
version "8.2.5" | ||
resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-8.2.5.tgz#2c71197a7ae1bf3b09f17f0c81c027d3142f8bf2" | ||
integrity sha512-JIm4uOcgQq0oX1oTzRbQpwxFYAEYKiLi/uAPUf2CZeU2lVxMkhScAW0b8+tVFLIJ7IaVx5d2QxZ6HK81r+QSVg== | ||
dependencies: | ||
tslib "^1.9.0" | ||
|
||
"@babel/[email protected]", "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5": | ||
version "7.5.5" | ||
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" | ||
|
@@ -72,7 +114,7 @@ | |
"@babel/traverse" "^7.4.4" | ||
"@babel/types" "^7.4.4" | ||
|
||
"@babel/helper-create-class-features-plugin@^7.5.5": | ||
"@babel/helper-create-class-features-plugin@^7.4.4", "@babel/helper-create-class-features-plugin@^7.5.5": | ||
version "7.5.5" | ||
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.5.5.tgz#401f302c8ddbc0edd36f7c6b2887d8fa1122e5a4" | ||
integrity sha512-ZsxkyYiRA7Bg+ZTRpPvB6AbOFKTFFK4LrvTet8lInm0V468MWCaSYJE+I7v2z2r8KNLtYiV+K5kTCnR7dvyZjg== | ||
|
@@ -262,6 +304,15 @@ | |
"@babel/helper-create-class-features-plugin" "^7.5.5" | ||
"@babel/helper-plugin-utils" "^7.0.0" | ||
|
||
"@babel/plugin-proposal-decorators@*": | ||
version "7.4.4" | ||
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.4.4.tgz#de9b2a1a8ab0196f378e2a82f10b6e2a36f21cc0" | ||
integrity sha512-z7MpQz3XC/iQJWXH9y+MaWcLPNSMY9RQSthrLzak8R8hCj0fuyNk+Dzi9kfNe/JxxlWQ2g7wkABbgWjW36MTcw== | ||
dependencies: | ||
"@babel/helper-create-class-features-plugin" "^7.4.4" | ||
"@babel/helper-plugin-utils" "^7.0.0" | ||
"@babel/plugin-syntax-decorators" "^7.2.0" | ||
|
||
"@babel/plugin-proposal-dynamic-import@^7.5.0": | ||
version "7.5.0" | ||
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz#e532202db4838723691b10a67b8ce509e397c506" | ||
|
@@ -341,6 +392,13 @@ | |
dependencies: | ||
"@babel/helper-plugin-utils" "^7.0.0" | ||
|
||
"@babel/plugin-syntax-decorators@^7.2.0": | ||
version "7.2.0" | ||
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.2.0.tgz#c50b1b957dcc69e4b1127b65e1c33eef61570c1b" | ||
integrity sha512-38QdqVoXdHUQfTpZo3rQwqQdWtCn5tMv4uV6r2RMfTqNBuv4ZBhz79SfaQWKTVmxHjeFv/DnXVC/+agHCklYWA== | ||
dependencies: | ||
"@babel/helper-plugin-utils" "^7.0.0" | ||
|
||
"@babel/plugin-syntax-dynamic-import@^7.0.0", "@babel/plugin-syntax-dynamic-import@^7.2.0": | ||
version "7.2.0" | ||
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612" | ||
|
@@ -2971,6 +3029,13 @@ babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: | |
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" | ||
integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== | ||
|
||
babel-plugin-transform-typescript-metadata@*: | ||
version "0.2.2" | ||
resolved "https://registry.yarnpkg.com/babel-plugin-transform-typescript-metadata/-/babel-plugin-transform-typescript-metadata-0.2.2.tgz#fc44611187409ed9d5cb372ca2f85939a359cada" | ||
integrity sha512-wWRw1p3IDNZN8l3UOLgeScq9Nhh4lvxT7ZOvUzYi5sMw8lUWW+KdRlnBeQKehHAsgDs5TR6PvMJmsQ6e6NmKCg== | ||
dependencies: | ||
"@babel/helper-plugin-utils" "^7.0.0" | ||
|
||
babel-plugin-typescript-strip-namespaces@^1.1.1: | ||
version "1.1.1" | ||
resolved "https://registry.yarnpkg.com/babel-plugin-typescript-strip-namespaces/-/babel-plugin-typescript-strip-namespaces-1.1.1.tgz#160433b17e424b57cf72e3b4d8f08195ad28d7fd" | ||
|
@@ -4296,7 +4361,7 @@ core-js@^2.2.2, core-js@^2.4.0, core-js@^2.4.1, core-js@^2.6.5: | |
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" | ||
integrity sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A== | ||
|
||
core-js@^3.0.0, core-js@^3.1.3: | ||
core-js@^3.0.0, core-js@^3.1.3, core-js@^3.2.1: | ||
version "3.2.1" | ||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.2.1.tgz#cd41f38534da6cc59f7db050fe67307de9868b09" | ||
integrity sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw== | ||
|
@@ -8118,6 +8183,11 @@ [email protected]: | |
dependencies: | ||
merge-stream "^1.0.1" | ||
|
||
jest-zone-patch@*: | ||
version "0.0.10" | ||
resolved "https://registry.yarnpkg.com/jest-zone-patch/-/jest-zone-patch-0.0.10.tgz#58252f44ab4aad45aaed62a705819577b9709b82" | ||
integrity sha512-K5uHLHgMgi2Eyj74gbY+xSeGGekb5U48bXsgDwgipRbFdaekyZK+TAcp8auamqU4UjrAt5S4sIUZz/2bBNyTTA== | ||
|
||
jpegtran-bin@^4.0.0: | ||
version "4.0.0" | ||
resolved "https://registry.yarnpkg.com/jpegtran-bin/-/jpegtran-bin-4.0.0.tgz#d00aed809fba7aa6f30817e59eee4ddf198f8f10" | ||
|
@@ -12134,6 +12204,13 @@ rxjs@^6.4.0: | |
dependencies: | ||
tslib "^1.9.0" | ||
|
||
rxjs@^6.5.3: | ||
version "6.5.3" | ||
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.3.tgz#510e26317f4db91a7eb1de77d9dd9ba0a4899a3a" | ||
integrity sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA== | ||
dependencies: | ||
tslib "^1.9.0" | ||
|
||
[email protected], safe-buffer@~5.1.0, safe-buffer@~5.1.1: | ||
version "5.1.2" | ||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" | ||
|
@@ -14454,3 +14531,8 @@ [email protected]: | |
version "0.1.2" | ||
resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" | ||
integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= | ||
|
||
zone.js@~0.9.1: | ||
version "0.9.1" | ||
resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.9.1.tgz#e37c6e5c54c13fae4de26b5ffe8d8e9212da6d9b" | ||
integrity sha512-GkPiJL8jifSrKReKaTZ5jkhrMEgXbXYC+IPo1iquBjayRa0q86w3Dipjn8b415jpitMExe9lV8iTsv8tk3DGag== |