From e538425e7a5ce635b1fbe88835a4f392d31413ee Mon Sep 17 00:00:00 2001 From: Jordan Aasen <166539328+jaasen-livefront@users.noreply.github.com> Date: Fri, 9 May 2025 12:07:14 -0700 Subject: [PATCH] [PM-21343] - add download bitwarden to list of nudges for settings badge (#14682) * add download bitwarden to list of nudges for settings badge * update tests --- .../src/services/vault-nudges.service.spec.ts | 33 ++++++++++++++----- .../src/services/vault-nudges.service.ts | 2 +- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/libs/vault/src/services/vault-nudges.service.spec.ts b/libs/vault/src/services/vault-nudges.service.spec.ts index 89465fc5382..40c58644309 100644 --- a/libs/vault/src/services/vault-nudges.service.spec.ts +++ b/libs/vault/src/services/vault-nudges.service.spec.ts @@ -12,7 +12,11 @@ import { CipherService } from "@bitwarden/common/vault/abstractions/cipher.servi import { FakeStateProvider, mockAccountServiceWith } from "../../../common/spec"; -import { HasItemsNudgeService, EmptyVaultNudgeService } from "./custom-nudges-services"; +import { + HasItemsNudgeService, + EmptyVaultNudgeService, + DownloadBitwardenNudgeService, +} from "./custom-nudges-services"; import { DefaultSingleNudgeService } from "./default-single-nudge.service"; import { VaultNudgesService, VaultNudgeType } from "./vault-nudges.service"; @@ -25,6 +29,8 @@ describe("Vault Nudges Service", () => { getFeatureFlag: jest.fn().mockReturnValue(true), }; + const vaultNudgeServices = [EmptyVaultNudgeService, DownloadBitwardenNudgeService]; + beforeEach(async () => { fakeStateProvider = new FakeStateProvider(mockAccountServiceWith("user-id" as UserId)); @@ -46,6 +52,10 @@ describe("Vault Nudges Service", () => { provide: HasItemsNudgeService, useValue: mock(), }, + { + provide: DownloadBitwardenNudgeService, + useValue: mock(), + }, { provide: EmptyVaultNudgeService, useValue: mock(), @@ -130,11 +140,14 @@ describe("Vault Nudges Service", () => { describe("HasActiveBadges", () => { it("should return true if a nudgeType with hasBadgeDismissed === false", async () => { - TestBed.overrideProvider(EmptyVaultNudgeService, { - useValue: { - nudgeStatus$: () => of({ hasBadgeDismissed: false, hasSpotlightDismissed: false }), - }, + vaultNudgeServices.forEach((service) => { + TestBed.overrideProvider(service, { + useValue: { + nudgeStatus$: () => of({ hasBadgeDismissed: false, hasSpotlightDismissed: false }), + }, + }); }); + const service = testBed.inject(VaultNudgesService); const result = await firstValueFrom(service.hasActiveBadges$("user-id" as UserId)); @@ -142,10 +155,12 @@ describe("Vault Nudges Service", () => { expect(result).toBe(true); }); it("should return false if all nudgeTypes have hasBadgeDismissed === true", async () => { - TestBed.overrideProvider(EmptyVaultNudgeService, { - useValue: { - nudgeStatus$: () => of({ hasBadgeDismissed: true, hasSpotlightDismissed: true }), - }, + vaultNudgeServices.forEach((service) => { + TestBed.overrideProvider(service, { + useValue: { + nudgeStatus$: () => of({ hasBadgeDismissed: true, hasSpotlightDismissed: false }), + }, + }); }); const service = testBed.inject(VaultNudgesService); diff --git a/libs/vault/src/services/vault-nudges.service.ts b/libs/vault/src/services/vault-nudges.service.ts index e04cb609d7f..be6e978eaa0 100644 --- a/libs/vault/src/services/vault-nudges.service.ts +++ b/libs/vault/src/services/vault-nudges.service.ts @@ -114,7 +114,7 @@ export class VaultNudgesService { */ hasActiveBadges$(userId: UserId): Observable { // Add more nudge types here if they have the settings badge feature - const nudgeTypes = [VaultNudgeType.EmptyVaultNudge]; + const nudgeTypes = [VaultNudgeType.EmptyVaultNudge, VaultNudgeType.DownloadBitwarden]; const nudgeTypesWithBadge$ = nudgeTypes.map((nudge) => { return this.getNudgeService(nudge)