mirror of
https://github.com/bitwarden/browser
synced 2025-12-18 17:23:37 +00:00
* Rename service-factory folder * Move cryptographic service factories * Move crypto models * Move crypto services * Move domain base class * Platform code owners * Move desktop log services * Move log files * Establish component library ownership * Move background listeners * Move background background * Move localization to Platform * Move browser alarms to Platform * Move browser state to Platform * Move CLI state to Platform * Move Desktop native concerns to Platform * Move flag and misc to Platform * Lint fixes * Move electron state to platform * Move web state to Platform * Move lib state to Platform * Fix broken tests * Rename interface to idiomatic TS * `npm run prettier` 🤖 * Resolve review feedback * Set platform as owners of web core and shared * Expand moved services * Fix test types --------- Co-authored-by: Hinton <hinton@users.noreply.github.com>
113 lines
3.3 KiB
TypeScript
113 lines
3.3 KiB
TypeScript
import { Component, DebugElement } from "@angular/core";
|
|
import { ComponentFixture, TestBed } from "@angular/core/testing";
|
|
import { By } from "@angular/platform-browser";
|
|
|
|
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
|
|
|
|
import { IconButtonModule } from "../icon-button";
|
|
import { BitIconButtonComponent } from "../icon-button/icon-button.component";
|
|
import { InputModule } from "../input/input.module";
|
|
import { I18nMockService } from "../utils/i18n-mock.service";
|
|
|
|
import { BitFormFieldControl } from "./form-field-control";
|
|
import { BitFormFieldComponent } from "./form-field.component";
|
|
import { FormFieldModule } from "./form-field.module";
|
|
import { BitPasswordInputToggleDirective } from "./password-input-toggle.directive";
|
|
|
|
@Component({
|
|
selector: "test-form-field",
|
|
template: `
|
|
<form>
|
|
<bit-form-field>
|
|
<bit-label>Password</bit-label>
|
|
<input bitInput type="password" />
|
|
<button type="button" bitIconButton bitSuffix bitPasswordInputToggle></button>
|
|
</bit-form-field>
|
|
</form>
|
|
`,
|
|
})
|
|
class TestFormFieldComponent {}
|
|
|
|
describe("PasswordInputToggle", () => {
|
|
let fixture: ComponentFixture<TestFormFieldComponent>;
|
|
let button: BitIconButtonComponent;
|
|
let input: BitFormFieldControl;
|
|
let toggle: DebugElement;
|
|
|
|
beforeEach(async () => {
|
|
await TestBed.configureTestingModule({
|
|
imports: [FormFieldModule, IconButtonModule, InputModule],
|
|
declarations: [TestFormFieldComponent],
|
|
providers: [
|
|
{
|
|
provide: I18nService,
|
|
useValue: new I18nMockService({
|
|
toggleVisibility: "Toggle visibility",
|
|
}),
|
|
},
|
|
],
|
|
}).compileComponents();
|
|
|
|
fixture = TestBed.createComponent(TestFormFieldComponent);
|
|
fixture.detectChanges();
|
|
|
|
toggle = fixture.debugElement.query(By.directive(BitPasswordInputToggleDirective));
|
|
const buttonEl = fixture.debugElement.query(By.directive(BitIconButtonComponent));
|
|
button = buttonEl.componentInstance;
|
|
const formFieldEl = fixture.debugElement.query(By.directive(BitFormFieldComponent));
|
|
const formField: BitFormFieldComponent = formFieldEl.componentInstance;
|
|
input = formField.input;
|
|
});
|
|
|
|
describe("initial state", () => {
|
|
it("has correct icon", () => {
|
|
expect(button.icon).toBe("bwi-eye");
|
|
});
|
|
|
|
it("input is type password", () => {
|
|
expect(input.type).toBe("password");
|
|
});
|
|
|
|
it("spellcheck is disabled", () => {
|
|
expect(input.spellcheck).toBe(undefined);
|
|
});
|
|
});
|
|
|
|
describe("when toggled", () => {
|
|
beforeEach(() => {
|
|
toggle.triggerEventHandler("click");
|
|
});
|
|
|
|
it("has correct icon", () => {
|
|
expect(button.icon).toBe("bwi-eye-slash");
|
|
});
|
|
|
|
it("input is type text", () => {
|
|
expect(input.type).toBe("text");
|
|
});
|
|
|
|
it("spellcheck is disabled", () => {
|
|
expect(input.spellcheck).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe("when toggled twice", () => {
|
|
beforeEach(() => {
|
|
toggle.triggerEventHandler("click");
|
|
toggle.triggerEventHandler("click");
|
|
});
|
|
|
|
it("has correct icon", () => {
|
|
expect(button.icon).toBe("bwi-eye");
|
|
});
|
|
|
|
it("input is type password", () => {
|
|
expect(input.type).toBe("password");
|
|
});
|
|
|
|
it("spellcheck is disabled", () => {
|
|
expect(input.spellcheck).toBe(undefined);
|
|
});
|
|
});
|
|
});
|