mirror of https://github.com/abpframework/abp.git
Browse Source
Migrate ABP Angular templates to Vitest as the default testing framework - Issue 24714pull/24887/head
committed by
GitHub
26 changed files with 141 additions and 446 deletions
@ -1,44 +0,0 @@ |
|||
// Karma configuration file, see link for more information
|
|||
// https://karma-runner.github.io/1.0/config/configuration-file.html
|
|||
|
|||
module.exports = function (config) { |
|||
config.set({ |
|||
basePath: '', |
|||
frameworks: ['jasmine', '@angular-devkit/build-angular'], |
|||
plugins: [ |
|||
require('karma-jasmine'), |
|||
require('karma-chrome-launcher'), |
|||
require('karma-jasmine-html-reporter'), |
|||
require('karma-coverage'), |
|||
|
|||
], |
|||
client: { |
|||
jasmine: { |
|||
// you can add configuration options for Jasmine here
|
|||
// the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
|
|||
// for example, you can disable the random execution with `random: false`
|
|||
// or set a specific seed with `seed: 4321`
|
|||
}, |
|||
clearContext: false // leave Jasmine Spec Runner output visible in browser
|
|||
}, |
|||
jasmineHtmlReporter: { |
|||
suppressAll: true // removes the duplicated traces
|
|||
}, |
|||
coverageReporter: { |
|||
dir: require('path').join(__dirname, './coverage/MyProjectName'), |
|||
subdir: '.', |
|||
reporters: [ |
|||
{ type: 'html' }, |
|||
{ type: 'text-summary' } |
|||
] |
|||
}, |
|||
reporters: ['progress', 'kjhtml'], |
|||
port: 9876, |
|||
colors: true, |
|||
logLevel: config.LOG_INFO, |
|||
autoWatch: true, |
|||
browsers: ['Chrome'], |
|||
singleRun: false, |
|||
restartOnFileChange: true |
|||
}); |
|||
}; |
|||
@ -1,13 +0,0 @@ |
|||
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
|
|||
import 'zone.js/testing'; |
|||
import { getTestBed } from '@angular/core/testing'; |
|||
import { |
|||
BrowserDynamicTestingModule, |
|||
platformBrowserDynamicTesting, |
|||
} from '@angular/platform-browser-dynamic/testing'; |
|||
|
|||
// First, initialize the Angular testing environment.
|
|||
getTestBed().initTestEnvironment( |
|||
BrowserDynamicTestingModule, |
|||
platformBrowserDynamicTesting() |
|||
); |
|||
@ -1,15 +1,15 @@ |
|||
/* To learn more about this file see: https://angular.io/config/tsconfig. */ |
|||
/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ |
|||
/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ |
|||
{ |
|||
"extends": "./tsconfig.json", |
|||
"compilerOptions": { |
|||
"outDir": "./out-tsc/app", |
|||
"types": [] |
|||
}, |
|||
"files": [ |
|||
"src/main.ts", |
|||
"src/polyfills.ts" |
|||
], |
|||
"include": [ |
|||
"src/**/*.d.ts" |
|||
"src/**/*.ts" |
|||
], |
|||
"exclude": [ |
|||
"src/**/*.spec.ts" |
|||
] |
|||
} |
|||
|
|||
@ -1,18 +1,15 @@ |
|||
/* To learn more about this file see: https://angular.io/config/tsconfig. */ |
|||
/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ |
|||
/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ |
|||
{ |
|||
"extends": "./tsconfig.json", |
|||
"compilerOptions": { |
|||
"outDir": "./out-tsc/spec", |
|||
"types": [ |
|||
"jasmine" |
|||
"vitest/globals" |
|||
] |
|||
}, |
|||
"files": [ |
|||
"src/test.ts", |
|||
"src/polyfills.ts" |
|||
], |
|||
"include": [ |
|||
"src/**/*.spec.ts", |
|||
"src/**/*.d.ts" |
|||
"src/**/*.d.ts", |
|||
"src/**/*.spec.ts" |
|||
] |
|||
} |
|||
|
|||
@ -1,44 +0,0 @@ |
|||
// Karma configuration file, see link for more information
|
|||
// https://karma-runner.github.io/1.0/config/configuration-file.html
|
|||
|
|||
module.exports = function (config) { |
|||
config.set({ |
|||
basePath: '', |
|||
frameworks: ['jasmine', '@angular-devkit/build-angular'], |
|||
plugins: [ |
|||
require('karma-jasmine'), |
|||
require('karma-chrome-launcher'), |
|||
require('karma-jasmine-html-reporter'), |
|||
require('karma-coverage'), |
|||
|
|||
], |
|||
client: { |
|||
jasmine: { |
|||
// you can add configuration options for Jasmine here
|
|||
// the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
|
|||
// for example, you can disable the random execution with `random: false`
|
|||
// or set a specific seed with `seed: 4321`
|
|||
}, |
|||
clearContext: false // leave Jasmine Spec Runner output visible in browser
|
|||
}, |
|||
jasmineHtmlReporter: { |
|||
suppressAll: true // removes the duplicated traces
|
|||
}, |
|||
coverageReporter: { |
|||
dir: require('path').join(__dirname, './coverage/MyProjectName'), |
|||
subdir: '.', |
|||
reporters: [ |
|||
{ type: 'html' }, |
|||
{ type: 'text-summary' } |
|||
] |
|||
}, |
|||
reporters: ['progress', 'kjhtml'], |
|||
port: 9876, |
|||
colors: true, |
|||
logLevel: config.LOG_INFO, |
|||
autoWatch: true, |
|||
browsers: ['Chrome'], |
|||
singleRun: false, |
|||
restartOnFileChange: true |
|||
}); |
|||
}; |
|||
@ -1,98 +1,88 @@ |
|||
import { CoreTestingModule } from "@abp/ng.core/testing"; |
|||
import { ThemeSharedTestingModule } from "@abp/ng.theme.shared/testing"; |
|||
import { ComponentFixture, TestBed, waitForAsync } from "@angular/core/testing"; |
|||
import { ComponentFixture, TestBed } from "@angular/core/testing"; |
|||
import { NgxValidateCoreModule } from "@ngx-validate/core"; |
|||
import { HomeComponent } from "./home.component"; |
|||
import { OAuthService } from 'angular-oauth2-oidc'; |
|||
import { AuthService } from '@abp/ng.core'; |
|||
import { vi } from 'vitest'; |
|||
|
|||
describe("HomeComponent", () => { |
|||
let fixture: ComponentFixture<HomeComponent>; |
|||
const mockOAuthService = jasmine.createSpyObj('OAuthService', ['hasValidAccessToken']) |
|||
const mockAuthService = jasmine.createSpyObj('AuthService', ['navigateToLogin']) |
|||
beforeEach( |
|||
waitForAsync(() => { |
|||
TestBed.configureTestingModule({ |
|||
declarations: [], |
|||
imports: [ |
|||
CoreTestingModule.withConfig(), |
|||
ThemeSharedTestingModule.withConfig(), |
|||
NgxValidateCoreModule, |
|||
HomeComponent |
|||
], |
|||
providers: [ |
|||
/* mock providers here */ |
|||
{ |
|||
provide: OAuthService, |
|||
useValue: mockOAuthService |
|||
}, |
|||
{ |
|||
provide: AuthService, |
|||
useValue: mockAuthService |
|||
} |
|||
], |
|||
}).compileComponents(); |
|||
}) |
|||
); |
|||
|
|||
beforeEach(() => { |
|||
fixture = TestBed.createComponent(HomeComponent); |
|||
fixture.detectChanges(); |
|||
let mockAuthService: { isAuthenticated: boolean; navigateToLogin: ReturnType<typeof vi.fn> }; |
|||
|
|||
beforeEach(async () => { |
|||
mockAuthService = { |
|||
isAuthenticated: false, |
|||
navigateToLogin: vi.fn() |
|||
}; |
|||
|
|||
await TestBed.configureTestingModule({ |
|||
imports: [ |
|||
CoreTestingModule.withConfig(), |
|||
ThemeSharedTestingModule.withConfig(), |
|||
NgxValidateCoreModule, |
|||
HomeComponent |
|||
], |
|||
providers: [ |
|||
{ |
|||
provide: AuthService, |
|||
useValue: mockAuthService |
|||
} |
|||
], |
|||
}).compileComponents(); |
|||
}); |
|||
|
|||
it("should be initiated", () => { |
|||
fixture = TestBed.createComponent(HomeComponent); |
|||
fixture.detectChanges(); |
|||
expect(fixture.componentInstance).toBeTruthy(); |
|||
}); |
|||
|
|||
|
|||
|
|||
describe('when login state is true', () => { |
|||
beforeAll(() => { |
|||
mockOAuthService.hasValidAccessToken.and.returnValue(true) |
|||
beforeEach(() => { |
|||
mockAuthService.isAuthenticated = true; |
|||
fixture = TestBed.createComponent(HomeComponent); |
|||
fixture.detectChanges(); |
|||
}); |
|||
|
|||
it("hasLoggedIn should be true", () => { |
|||
|
|||
expect(fixture.componentInstance.hasLoggedIn).toBeTrue(); |
|||
expect(mockOAuthService.hasValidAccessToken).toHaveBeenCalled() |
|||
}) |
|||
expect(fixture.componentInstance.hasLoggedIn).toBe(true); |
|||
}); |
|||
|
|||
it("button should not be exists", () => { |
|||
const element = fixture.nativeElement |
|||
const button = element.querySelector('[role="button"]') |
|||
expect(button).toBeNull() |
|||
}) |
|||
|
|||
}) |
|||
const element = fixture.nativeElement; |
|||
const button = element.querySelector('[role="button"]'); |
|||
expect(button).toBeNull(); |
|||
}); |
|||
}); |
|||
|
|||
describe('when login state is false', () => { |
|||
beforeAll(() => { |
|||
mockOAuthService.hasValidAccessToken.and.returnValue(false) |
|||
beforeEach(() => { |
|||
mockAuthService.isAuthenticated = false; |
|||
fixture = TestBed.createComponent(HomeComponent); |
|||
fixture.detectChanges(); |
|||
}); |
|||
|
|||
it("hasLoggedIn should be false", () => { |
|||
|
|||
expect(fixture.componentInstance.hasLoggedIn).toBeFalse(); |
|||
expect(mockOAuthService.hasValidAccessToken).toHaveBeenCalled() |
|||
}) |
|||
expect(fixture.componentInstance.hasLoggedIn).toBe(false); |
|||
}); |
|||
|
|||
it("button should be exists", () => { |
|||
const element = fixture.nativeElement |
|||
const button = element.querySelector('[role="button"]') |
|||
expect(button).toBeDefined() |
|||
}) |
|||
describe('when button clicked', () => { |
|||
const element = fixture.nativeElement; |
|||
const button = element.querySelector('[role="button"]'); |
|||
expect(button).toBeDefined(); |
|||
}); |
|||
|
|||
describe('when button clicked', () => { |
|||
beforeEach(() => { |
|||
const element = fixture.nativeElement |
|||
const button = element.querySelector('[role="button"]') |
|||
button.click() |
|||
const element = fixture.nativeElement; |
|||
const button = element.querySelector('[role="button"]'); |
|||
button.click(); |
|||
}); |
|||
|
|||
it("navigateToLogin have been called", () => { |
|||
expect(mockAuthService.navigateToLogin).toHaveBeenCalled() |
|||
}) |
|||
}) |
|||
}) |
|||
|
|||
expect(mockAuthService.navigateToLogin).toHaveBeenCalled(); |
|||
}); |
|||
}); |
|||
}); |
|||
}); |
|||
|
|||
@ -1,13 +0,0 @@ |
|||
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
|
|||
import 'zone.js/testing'; |
|||
import { getTestBed } from '@angular/core/testing'; |
|||
import { |
|||
BrowserDynamicTestingModule, |
|||
platformBrowserDynamicTesting, |
|||
} from '@angular/platform-browser-dynamic/testing'; |
|||
|
|||
// First, initialize the Angular testing environment.
|
|||
getTestBed().initTestEnvironment( |
|||
BrowserDynamicTestingModule, |
|||
platformBrowserDynamicTesting() |
|||
); |
|||
@ -1,15 +1,15 @@ |
|||
/* To learn more about this file see: https://angular.io/config/tsconfig. */ |
|||
/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ |
|||
/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ |
|||
{ |
|||
"extends": "./tsconfig.json", |
|||
"compilerOptions": { |
|||
"outDir": "./out-tsc/app", |
|||
"types": [] |
|||
}, |
|||
"files": [ |
|||
"src/main.ts", |
|||
"src/polyfills.ts" |
|||
], |
|||
"include": [ |
|||
"src/**/*.d.ts" |
|||
"src/**/*.ts" |
|||
], |
|||
"exclude": [ |
|||
"src/**/*.spec.ts" |
|||
] |
|||
} |
|||
|
|||
@ -1,18 +1,15 @@ |
|||
/* To learn more about this file see: https://angular.io/config/tsconfig. */ |
|||
/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ |
|||
/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ |
|||
{ |
|||
"extends": "./tsconfig.json", |
|||
"compilerOptions": { |
|||
"outDir": "./out-tsc/spec", |
|||
"types": [ |
|||
"jasmine" |
|||
"vitest/globals" |
|||
] |
|||
}, |
|||
"files": [ |
|||
"src/test.ts", |
|||
"src/polyfills.ts" |
|||
], |
|||
"include": [ |
|||
"src/**/*.spec.ts", |
|||
"src/**/*.d.ts" |
|||
"src/**/*.d.ts", |
|||
"src/**/*.spec.ts" |
|||
] |
|||
} |
|||
|
|||
@ -1,44 +0,0 @@ |
|||
// Karma configuration file, see link for more information
|
|||
// https://karma-runner.github.io/1.0/config/configuration-file.html
|
|||
|
|||
module.exports = function (config) { |
|||
config.set({ |
|||
basePath: '', |
|||
frameworks: ['jasmine', '@angular-devkit/build-angular'], |
|||
plugins: [ |
|||
require('karma-jasmine'), |
|||
require('karma-chrome-launcher'), |
|||
require('karma-jasmine-html-reporter'), |
|||
require('karma-coverage'), |
|||
|
|||
], |
|||
client: { |
|||
jasmine: { |
|||
// you can add configuration options for Jasmine here
|
|||
// the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
|
|||
// for example, you can disable the random execution with `random: false`
|
|||
// or set a specific seed with `seed: 4321`
|
|||
}, |
|||
clearContext: false // leave Jasmine Spec Runner output visible in browser
|
|||
}, |
|||
jasmineHtmlReporter: { |
|||
suppressAll: true // removes the duplicated traces
|
|||
}, |
|||
coverageReporter: { |
|||
dir: require('path').join(__dirname, '../../coverage/dev-app'), |
|||
subdir: '.', |
|||
reporters: [ |
|||
{ type: 'html' }, |
|||
{ type: 'text-summary' } |
|||
] |
|||
}, |
|||
reporters: ['progress', 'kjhtml'], |
|||
port: 9876, |
|||
colors: true, |
|||
logLevel: config.LOG_INFO, |
|||
autoWatch: true, |
|||
browsers: ['Chrome'], |
|||
singleRun: false, |
|||
restartOnFileChange: true |
|||
}); |
|||
}; |
|||
@ -1,14 +0,0 @@ |
|||
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
|
|||
|
|||
import 'zone.js/testing'; |
|||
import { getTestBed } from '@angular/core/testing'; |
|||
import { |
|||
BrowserDynamicTestingModule, |
|||
platformBrowserDynamicTesting |
|||
} from '@angular/platform-browser-dynamic/testing'; |
|||
|
|||
// First, initialize the Angular testing environment.
|
|||
getTestBed().initTestEnvironment( |
|||
BrowserDynamicTestingModule, |
|||
platformBrowserDynamicTesting() |
|||
); |
|||
@ -1,14 +1,15 @@ |
|||
/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ |
|||
/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ |
|||
{ |
|||
"extends": "../../tsconfig.json", |
|||
"compilerOptions": { |
|||
"outDir": "../../out-tsc/app", |
|||
"types": [] |
|||
}, |
|||
"files": [ |
|||
"src/main.ts", |
|||
"src/polyfills.ts" |
|||
], |
|||
"include": [ |
|||
"src/**/*.d.ts" |
|||
"src/**/*.ts" |
|||
], |
|||
"exclude": [ |
|||
"src/**/*.spec.ts" |
|||
] |
|||
} |
|||
|
|||
@ -1,18 +1,16 @@ |
|||
/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ |
|||
/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ |
|||
{ |
|||
"extends": "../../tsconfig.json", |
|||
"compilerOptions": { |
|||
"outDir": "../../out-tsc/spec", |
|||
"types": [ |
|||
"jasmine", |
|||
"vitest/globals", |
|||
"node" |
|||
] |
|||
}, |
|||
"files": [ |
|||
"src/test.ts", |
|||
"src/polyfills.ts" |
|||
], |
|||
"include": [ |
|||
"src/**/*.spec.ts", |
|||
"src/**/*.d.ts" |
|||
"src/**/*.d.ts", |
|||
"src/**/*.spec.ts" |
|||
] |
|||
} |
|||
|
|||
@ -1,44 +0,0 @@ |
|||
// Karma configuration file, see link for more information
|
|||
// https://karma-runner.github.io/1.0/config/configuration-file.html
|
|||
|
|||
module.exports = function (config) { |
|||
config.set({ |
|||
basePath: '', |
|||
frameworks: ['jasmine', '@angular-devkit/build-angular'], |
|||
plugins: [ |
|||
require('karma-jasmine'), |
|||
require('karma-chrome-launcher'), |
|||
require('karma-jasmine-html-reporter'), |
|||
require('karma-coverage'), |
|||
|
|||
], |
|||
client: { |
|||
jasmine: { |
|||
// you can add configuration options for Jasmine here
|
|||
// the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
|
|||
// for example, you can disable the random execution with `random: false`
|
|||
// or set a specific seed with `seed: 4321`
|
|||
}, |
|||
clearContext: false // leave Jasmine Spec Runner output visible in browser
|
|||
}, |
|||
jasmineHtmlReporter: { |
|||
suppressAll: true // removes the duplicated traces
|
|||
}, |
|||
coverageReporter: { |
|||
dir: require('path').join(__dirname, '../../coverage/my-project-name'), |
|||
subdir: '.', |
|||
reporters: [ |
|||
{ type: 'html' }, |
|||
{ type: 'text-summary' } |
|||
] |
|||
}, |
|||
reporters: ['progress', 'kjhtml'], |
|||
port: 9876, |
|||
colors: true, |
|||
logLevel: config.LOG_INFO, |
|||
autoWatch: true, |
|||
browsers: ['Chrome'], |
|||
singleRun: false, |
|||
restartOnFileChange: true |
|||
}); |
|||
}; |
|||
@ -1,15 +0,0 @@ |
|||
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
|
|||
|
|||
import 'zone.js'; |
|||
import 'zone.js/testing'; |
|||
import { getTestBed } from '@angular/core/testing'; |
|||
import { |
|||
BrowserDynamicTestingModule, |
|||
platformBrowserDynamicTesting |
|||
} from '@angular/platform-browser-dynamic/testing'; |
|||
|
|||
// First, initialize the Angular testing environment.
|
|||
getTestBed().initTestEnvironment( |
|||
BrowserDynamicTestingModule, |
|||
platformBrowserDynamicTesting() |
|||
); |
|||
@ -1,17 +1,15 @@ |
|||
/* To learn more about this file see: https://angular.io/config/tsconfig. */ |
|||
/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ |
|||
/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ |
|||
{ |
|||
"extends": "../../tsconfig.json", |
|||
"compilerOptions": { |
|||
"outDir": "../../out-tsc/spec", |
|||
"types": [ |
|||
"jasmine" |
|||
"vitest/globals" |
|||
] |
|||
}, |
|||
"files": [ |
|||
"src/test.ts" |
|||
], |
|||
"include": [ |
|||
"**/*.spec.ts", |
|||
"**/*.d.ts" |
|||
"**/*.d.ts", |
|||
"**/*.spec.ts" |
|||
] |
|||
} |
|||
|
|||
Loading…
Reference in new issue