mirror of
https://github.com/bitwarden/browser
synced 2026-03-02 19:41:26 +00:00
* [PM-28181] Open send dialog in drawer instead of popup in refreshed UI * Fix types * [PM-28181] Use drawer to edit sends with refreshed UI * [PM-28181] Address bug where multiple Sends could not be navigated between
95 lines
4.1 KiB
TypeScript
95 lines
4.1 KiB
TypeScript
import { ComponentFixture, TestBed } from "@angular/core/testing";
|
|
import { mock } from "jest-mock-extended";
|
|
import { of } from "rxjs";
|
|
|
|
import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction";
|
|
import { Account, AccountService } from "@bitwarden/common/auth/abstractions/account.service";
|
|
import { BillingAccountProfileStateService } from "@bitwarden/common/billing/abstractions";
|
|
import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum";
|
|
import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service";
|
|
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
|
|
import { SendType } from "@bitwarden/common/tools/send/enums/send-type";
|
|
import { SendApiService } from "@bitwarden/common/tools/send/services/send-api.service.abstraction";
|
|
import { SendService } from "@bitwarden/common/tools/send/services/send.service.abstraction";
|
|
import { PremiumUpgradePromptService } from "@bitwarden/common/vault/abstractions/premium-upgrade-prompt.service";
|
|
import { SendAddEditDialogComponent } from "@bitwarden/send-ui";
|
|
|
|
import { NewSendDropdownComponent } from "./new-send-dropdown.component";
|
|
|
|
describe("NewSendDropdownComponent", () => {
|
|
let component: NewSendDropdownComponent;
|
|
let fixture: ComponentFixture<NewSendDropdownComponent>;
|
|
const mockBillingAccountProfileStateService = mock<BillingAccountProfileStateService>();
|
|
const mockAccountService = mock<AccountService>();
|
|
const mockConfigService = mock<ConfigService>();
|
|
const mockI18nService = mock<I18nService>();
|
|
const mockPolicyService = mock<PolicyService>();
|
|
const mockSendService = mock<SendService>();
|
|
const mockPremiumUpgradePromptService = mock<PremiumUpgradePromptService>();
|
|
const mockSendApiService = mock<SendApiService>();
|
|
|
|
beforeAll(() => {
|
|
mockBillingAccountProfileStateService.hasPremiumFromAnySource$.mockImplementation(() =>
|
|
of(true),
|
|
);
|
|
mockAccountService.activeAccount$ = of({ id: "myTestAccount" } as Account);
|
|
mockPolicyService.policyAppliesToUser$.mockImplementation(() => of(false));
|
|
mockPremiumUpgradePromptService.promptForPremium.mockImplementation(async () => {});
|
|
});
|
|
|
|
beforeEach(async () => {
|
|
await TestBed.configureTestingModule({
|
|
imports: [NewSendDropdownComponent],
|
|
declarations: [],
|
|
providers: [
|
|
{
|
|
provide: BillingAccountProfileStateService,
|
|
useValue: mockBillingAccountProfileStateService,
|
|
},
|
|
{ provide: AccountService, useValue: mockAccountService },
|
|
{ provide: ConfigService, useValue: mockConfigService },
|
|
{ provide: I18nService, useValue: mockI18nService },
|
|
{ provide: PolicyService, useValue: mockPolicyService },
|
|
{ provide: SendService, useValue: mockSendService },
|
|
{ provide: PremiumUpgradePromptService, useValue: mockPremiumUpgradePromptService },
|
|
{ provide: SendApiService, useValue: mockSendApiService },
|
|
],
|
|
}).compileComponents();
|
|
fixture = TestBed.createComponent(NewSendDropdownComponent);
|
|
component = fixture.componentInstance;
|
|
fixture.detectChanges();
|
|
});
|
|
|
|
afterEach(() => {
|
|
jest.restoreAllMocks();
|
|
});
|
|
|
|
it("should create", () => {
|
|
expect(component).toBeTruthy();
|
|
});
|
|
|
|
it("should open send dialog in a popup without feature flag", async () => {
|
|
const openSpy = jest.spyOn(SendAddEditDialogComponent, "open");
|
|
const openDrawerSpy = jest.spyOn(SendAddEditDialogComponent, "openDrawer");
|
|
mockConfigService.getFeatureFlag.mockResolvedValue(false);
|
|
|
|
await component.createSend(SendType.Text);
|
|
|
|
expect(openSpy).toHaveBeenCalled();
|
|
expect(openDrawerSpy).not.toHaveBeenCalled();
|
|
});
|
|
|
|
it("should open send dialog in drawer with feature flag", async () => {
|
|
const openSpy = jest.spyOn(SendAddEditDialogComponent, "open");
|
|
const openDrawerSpy = jest.spyOn(SendAddEditDialogComponent, "openDrawer");
|
|
mockConfigService.getFeatureFlag.mockImplementation(async (key) =>
|
|
key === FeatureFlag.SendUIRefresh ? true : false,
|
|
);
|
|
|
|
await component.createSend(SendType.Text);
|
|
|
|
expect(openSpy).not.toHaveBeenCalled();
|
|
expect(openDrawerSpy).toHaveBeenCalled();
|
|
});
|
|
});
|