mirror of
https://github.com/bitwarden/browser.git
synced 2024-11-25 12:15:18 +01:00
[SG-397] Configure jest for Desktop and add simple tests (#3467)
* Configure jest for Desktop and add simple tests * Remove Jest from tsconfig types
This commit is contained in:
parent
669a3572b8
commit
ed78f7e7cb
14
apps/desktop/jest.config.js
Normal file
14
apps/desktop/jest.config.js
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
const { pathsToModuleNameMapper } = require("ts-jest");
|
||||||
|
|
||||||
|
const { compilerOptions } = require("./tsconfig");
|
||||||
|
|
||||||
|
const sharedConfig = require("../../libs/shared/jest.config.base");
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
...sharedConfig,
|
||||||
|
preset: "jest-preset-angular",
|
||||||
|
setupFilesAfterEnv: ["<rootDir>/test.setup.ts"],
|
||||||
|
moduleNameMapper: pathsToModuleNameMapper(compilerOptions?.paths || {}, {
|
||||||
|
prefix: "<rootDir>/",
|
||||||
|
}),
|
||||||
|
};
|
@ -48,6 +48,9 @@
|
|||||||
"publish:mac:mas": "npm run dist:mac:mas && npm run upload:mas",
|
"publish:mac:mas": "npm run dist:mac:mas && npm run upload:mas",
|
||||||
"publish:win": "npm run build && npm run clean:dist && electron-builder --win --x64 --arm64 --ia32 -p always -c.win.certificateSubjectName=\"8bit Solutions LLC\"",
|
"publish:win": "npm run build && npm run clean:dist && electron-builder --win --x64 --arm64 --ia32 -p always -c.win.certificateSubjectName=\"8bit Solutions LLC\"",
|
||||||
"publish:win:dev": "npm run build && npm run clean:dist && electron-builder --win --x64 --arm64 --ia32 -p always",
|
"publish:win:dev": "npm run build && npm run clean:dist && electron-builder --win --x64 --arm64 --ia32 -p always",
|
||||||
"upload:mas": "xcrun altool --upload-app --type osx --file \"$(find ./dist/mas-universal/Bitwarden*.pkg)\" --username $APPLE_ID_USERNAME --password $APPLE_ID_PASSWORD"
|
"upload:mas": "xcrun altool --upload-app --type osx --file \"$(find ./dist/mas-universal/Bitwarden*.pkg)\" --username $APPLE_ID_USERNAME --password $APPLE_ID_PASSWORD",
|
||||||
|
"test": "jest",
|
||||||
|
"test:watch": "jest --watch",
|
||||||
|
"test:watch:all": "jest --watchAll"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
77
apps/desktop/src/app/vault/generator.component.spec.ts
Normal file
77
apps/desktop/src/app/vault/generator.component.spec.ts
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
import { NO_ERRORS_SCHEMA } from "@angular/core";
|
||||||
|
import { ComponentFixture, TestBed } from "@angular/core/testing";
|
||||||
|
import { ActivatedRoute } from "@angular/router";
|
||||||
|
import { Substitute } from "@fluffy-spoon/substitute";
|
||||||
|
import { mock, MockProxy } from "jest-mock-extended";
|
||||||
|
|
||||||
|
import { I18nPipe } from "@bitwarden/angular/pipes/i18n.pipe";
|
||||||
|
import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
|
||||||
|
import { LogService } from "@bitwarden/common/abstractions/log.service";
|
||||||
|
import { PasswordGenerationService } from "@bitwarden/common/abstractions/passwordGeneration.service";
|
||||||
|
import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service";
|
||||||
|
import { StateService } from "@bitwarden/common/abstractions/state.service";
|
||||||
|
import { UsernameGenerationService } from "@bitwarden/common/abstractions/usernameGeneration.service";
|
||||||
|
|
||||||
|
import { GeneratorComponent } from "./generator.component";
|
||||||
|
|
||||||
|
describe("GeneratorComponent", () => {
|
||||||
|
let component: GeneratorComponent;
|
||||||
|
let fixture: ComponentFixture<GeneratorComponent>;
|
||||||
|
let platformUtilsServiceMock: MockProxy<PlatformUtilsService>;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
platformUtilsServiceMock = mock<PlatformUtilsService>();
|
||||||
|
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [GeneratorComponent, I18nPipe],
|
||||||
|
providers: [
|
||||||
|
{
|
||||||
|
provide: PasswordGenerationService,
|
||||||
|
useClass: Substitute.for<PasswordGenerationService>(),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provide: UsernameGenerationService,
|
||||||
|
useClass: Substitute.for<UsernameGenerationService>(),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provide: StateService,
|
||||||
|
useClass: Substitute.for<StateService>(),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provide: PlatformUtilsService,
|
||||||
|
useValue: platformUtilsServiceMock,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provide: I18nService,
|
||||||
|
useClass: Substitute.for<I18nService>(),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provide: ActivatedRoute,
|
||||||
|
useClass: Substitute.for<ActivatedRoute>(),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provide: LogService,
|
||||||
|
useClass: Substitute.for<LogService>(),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
schemas: [NO_ERRORS_SCHEMA],
|
||||||
|
}).compileComponents();
|
||||||
|
});
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(GeneratorComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should create", () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("usernameTypesLearnMore()", () => {
|
||||||
|
it("should call platformUtilsService.launchUri() once", () => {
|
||||||
|
component.usernameTypesLearnMore();
|
||||||
|
expect(platformUtilsServiceMock.launchUri).toHaveBeenCalledTimes(1);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
23
apps/desktop/test.setup.ts
Normal file
23
apps/desktop/test.setup.ts
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import "jest-preset-angular/setup-jest";
|
||||||
|
|
||||||
|
Object.defineProperty(window, "CSS", { value: null });
|
||||||
|
Object.defineProperty(window, "getComputedStyle", {
|
||||||
|
value: () => {
|
||||||
|
return {
|
||||||
|
display: "none",
|
||||||
|
appearance: ["-webkit-appearance"],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.defineProperty(document, "doctype", {
|
||||||
|
value: "<!DOCTYPE html>",
|
||||||
|
});
|
||||||
|
Object.defineProperty(document.body.style, "transform", {
|
||||||
|
value: () => {
|
||||||
|
return {
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
});
|
4
apps/desktop/tsconfig.spec.json
Normal file
4
apps/desktop/tsconfig.spec.json
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"extends": "./tsconfig.json",
|
||||||
|
"files": ["./test.setup.ts"]
|
||||||
|
}
|
@ -12,6 +12,7 @@ module.exports = {
|
|||||||
projects: [
|
projects: [
|
||||||
"<rootDir>/apps/browser/jest.config.js",
|
"<rootDir>/apps/browser/jest.config.js",
|
||||||
"<rootDir>/apps/cli/jest.config.js",
|
"<rootDir>/apps/cli/jest.config.js",
|
||||||
|
"<rootDir>/apps/desktop/jest.config.js",
|
||||||
"<rootDir>/apps/web/jest.config.js",
|
"<rootDir>/apps/web/jest.config.js",
|
||||||
"<rootDir>/bitwarden_license/bit-web/jest.config.js",
|
"<rootDir>/bitwarden_license/bit-web/jest.config.js",
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user