fix failing tests
This commit is contained in:
parent
f444f32f9c
commit
2f785bd060
|
@ -3,7 +3,7 @@ import { ComponentFixture, TestBed } from "@angular/core/testing";
|
||||||
import { ActivatedRoute, Router, RouterLink } from "@angular/router";
|
import { ActivatedRoute, Router, RouterLink } from "@angular/router";
|
||||||
import { RouterTestingModule } from "@angular/router/testing";
|
import { RouterTestingModule } from "@angular/router/testing";
|
||||||
import { MockProxy, mock } from "jest-mock-extended";
|
import { MockProxy, mock } from "jest-mock-extended";
|
||||||
import { of } from "rxjs";
|
import { BehaviorSubject, of } from "rxjs";
|
||||||
|
|
||||||
import { JslibModule } from "@bitwarden/angular/jslib.module";
|
import { JslibModule } from "@bitwarden/angular/jslib.module";
|
||||||
import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service";
|
import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service";
|
||||||
|
@ -13,7 +13,7 @@ import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/pl
|
||||||
import { SelfHostedEnvironment } from "@bitwarden/common/platform/services/default-environment.service";
|
import { SelfHostedEnvironment } from "@bitwarden/common/platform/services/default-environment.service";
|
||||||
import { SendView } from "@bitwarden/common/tools/send/models/view/send.view";
|
import { SendView } from "@bitwarden/common/tools/send/models/view/send.view";
|
||||||
import { SendService } from "@bitwarden/common/tools/send/services/send.service.abstraction";
|
import { SendService } from "@bitwarden/common/tools/send/services/send.service.abstraction";
|
||||||
import { ButtonModule, IconModule, ToastService } from "@bitwarden/components";
|
import { ButtonModule, I18nMockService, IconModule, ToastService } from "@bitwarden/components";
|
||||||
|
|
||||||
import { PopOutComponent } from "../../../../platform/popup/components/pop-out.component";
|
import { PopOutComponent } from "../../../../platform/popup/components/pop-out.component";
|
||||||
import { PopupFooterComponent } from "../../../../platform/popup/layout/popup-footer.component";
|
import { PopupFooterComponent } from "../../../../platform/popup/layout/popup-footer.component";
|
||||||
|
@ -26,7 +26,6 @@ import { SendCreatedComponent } from "./send-created.component";
|
||||||
describe("SendCreatedComponent", () => {
|
describe("SendCreatedComponent", () => {
|
||||||
let component: SendCreatedComponent;
|
let component: SendCreatedComponent;
|
||||||
let fixture: ComponentFixture<SendCreatedComponent>;
|
let fixture: ComponentFixture<SendCreatedComponent>;
|
||||||
let i18nService: MockProxy<I18nService>;
|
|
||||||
let platformUtilsService: MockProxy<PlatformUtilsService>;
|
let platformUtilsService: MockProxy<PlatformUtilsService>;
|
||||||
let sendService: MockProxy<SendService>;
|
let sendService: MockProxy<SendService>;
|
||||||
let toastService: MockProxy<ToastService>;
|
let toastService: MockProxy<ToastService>;
|
||||||
|
@ -36,17 +35,10 @@ describe("SendCreatedComponent", () => {
|
||||||
let router: MockProxy<Router>;
|
let router: MockProxy<Router>;
|
||||||
|
|
||||||
const sendId = "test-send-id";
|
const sendId = "test-send-id";
|
||||||
const deletionDate = new Date();
|
let sendView: SendView;
|
||||||
deletionDate.setDate(deletionDate.getDate() + 7);
|
let sendViewsSubject: BehaviorSubject<SendView[]>;
|
||||||
const sendView: SendView = {
|
|
||||||
id: sendId,
|
|
||||||
deletionDate,
|
|
||||||
accessId: "abc",
|
|
||||||
urlB64Key: "123",
|
|
||||||
} as SendView;
|
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
i18nService = mock<I18nService>();
|
|
||||||
platformUtilsService = mock<PlatformUtilsService>();
|
platformUtilsService = mock<PlatformUtilsService>();
|
||||||
sendService = mock<SendService>();
|
sendService = mock<SendService>();
|
||||||
toastService = mock<ToastService>();
|
toastService = mock<ToastService>();
|
||||||
|
@ -54,6 +46,17 @@ describe("SendCreatedComponent", () => {
|
||||||
activatedRoute = mock<ActivatedRoute>();
|
activatedRoute = mock<ActivatedRoute>();
|
||||||
environmentService = mock<EnvironmentService>();
|
environmentService = mock<EnvironmentService>();
|
||||||
router = mock<Router>();
|
router = mock<Router>();
|
||||||
|
|
||||||
|
sendView = {
|
||||||
|
id: sendId,
|
||||||
|
deletionDate: new Date(),
|
||||||
|
accessId: "abc",
|
||||||
|
urlB64Key: "123",
|
||||||
|
} as SendView;
|
||||||
|
|
||||||
|
sendViewsSubject = new BehaviorSubject<SendView[]>([sendView]);
|
||||||
|
sendService.sendViews$ = sendViewsSubject.asObservable();
|
||||||
|
|
||||||
Object.defineProperty(environmentService, "environment$", {
|
Object.defineProperty(environmentService, "environment$", {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
get: () => of(new SelfHostedEnvironment({ webVault: "https://example.com" })),
|
get: () => of(new SelfHostedEnvironment({ webVault: "https://example.com" })),
|
||||||
|
@ -65,8 +68,6 @@ describe("SendCreatedComponent", () => {
|
||||||
},
|
},
|
||||||
} as any;
|
} as any;
|
||||||
|
|
||||||
sendService.sendViews$ = of([sendView]);
|
|
||||||
|
|
||||||
await TestBed.configureTestingModule({
|
await TestBed.configureTestingModule({
|
||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
|
@ -82,7 +83,25 @@ describe("SendCreatedComponent", () => {
|
||||||
SendCreatedComponent,
|
SendCreatedComponent,
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
{ provide: I18nService, useValue: i18nService },
|
{
|
||||||
|
provide: I18nService,
|
||||||
|
useFactory: () => {
|
||||||
|
return new I18nMockService({
|
||||||
|
back: "back",
|
||||||
|
loading: "loading",
|
||||||
|
copyLink: "copyLink",
|
||||||
|
close: "close",
|
||||||
|
createdSend: "createdSend",
|
||||||
|
createdSendSuccessfully: "createdSendSuccessfully",
|
||||||
|
popOutNewWindow: "popOutNewWindow",
|
||||||
|
sendExpiresInHours: (hours) => `sendExpiresInHours ${hours}`,
|
||||||
|
sendExpiresInHoursSingle: "sendExpiresInHoursSingle",
|
||||||
|
sendExpiresInDays: (days) => `sendExpiresInDays ${days}`,
|
||||||
|
sendExpiresInDaysSingle: "sendExpiresInDaysSingle",
|
||||||
|
sendLinkCopied: "sendLinkCopied",
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
{ provide: PlatformUtilsService, useValue: platformUtilsService },
|
{ provide: PlatformUtilsService, useValue: platformUtilsService },
|
||||||
{ provide: SendService, useValue: sendService },
|
{ provide: SendService, useValue: sendService },
|
||||||
{ provide: ToastService, useValue: toastService },
|
{ provide: ToastService, useValue: toastService },
|
||||||
|
@ -94,54 +113,73 @@ describe("SendCreatedComponent", () => {
|
||||||
{ provide: Router, useValue: router },
|
{ provide: Router, useValue: router },
|
||||||
],
|
],
|
||||||
}).compileComponents();
|
}).compileComponents();
|
||||||
});
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
fixture = TestBed.createComponent(SendCreatedComponent);
|
fixture = TestBed.createComponent(SendCreatedComponent);
|
||||||
component = fixture.componentInstance;
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should create", () => {
|
it("should create", () => {
|
||||||
fixture.detectChanges();
|
|
||||||
expect(component).toBeTruthy();
|
expect(component).toBeTruthy();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should initialize send and daysAvailable", () => {
|
it("should initialize send, daysAvailable, and hoursAvailable", () => {
|
||||||
fixture.detectChanges();
|
|
||||||
expect(component["send"]).toBe(sendView);
|
expect(component["send"]).toBe(sendView);
|
||||||
expect(component["daysAvailable"]).toBe(7);
|
expect(component["daysAvailable"]).toBe(0);
|
||||||
|
expect(component["hoursAvailable"]).toBe(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should navigate back to send list on close", async () => {
|
it("should navigate back to send list on close", async () => {
|
||||||
fixture.detectChanges();
|
|
||||||
await component.close();
|
await component.close();
|
||||||
expect(router.navigate).toHaveBeenCalledWith(["/tabs/send"]);
|
expect(router.navigate).toHaveBeenCalledWith(["/tabs/send"]);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("getHoursAvailable", () => {
|
describe("getHoursAvailable", () => {
|
||||||
it("returns the correct number of hours", () => {
|
it("returns the correct number of hours", () => {
|
||||||
|
sendView.deletionDate.setDate(sendView.deletionDate.getDate() + 7);
|
||||||
|
sendViewsSubject.next([sendView]);
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
expect(component.getHoursAvailable(sendView)).toBe(168);
|
|
||||||
|
expect(component.getHoursAvailable(sendView)).toBeCloseTo(168, 0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("formatExpirationDate", () => {
|
describe("formatExpirationDate", () => {
|
||||||
it("returns hours if less than 24", () => {
|
it("returns days plural if expiry is more than 24 hours", () => {
|
||||||
|
sendView.deletionDate.setDate(sendView.deletionDate.getDate() + 7);
|
||||||
|
sendViewsSubject.next([sendView]);
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
|
|
||||||
expect(component.formatExpirationDate()).toBe("sendExpiresInDays 7");
|
expect(component.formatExpirationDate()).toBe("sendExpiresInDays 7");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("returns days if 24 or more", () => {
|
it("returns days singular if expiry is 24 hours", () => {
|
||||||
sendView.deletionDate = new Date();
|
|
||||||
sendView.deletionDate.setDate(sendView.deletionDate.getDate() + 1);
|
sendView.deletionDate.setDate(sendView.deletionDate.getDate() + 1);
|
||||||
|
sendViewsSubject.next([sendView]);
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
expect(component.formatExpirationDate()).toBe("sendExpiresInDaySingle");
|
|
||||||
|
expect(component.formatExpirationDate()).toBe("sendExpiresInDaysSingle");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("returns hours plural if expiry is more than 1 hour but less than 24", () => {
|
||||||
|
sendView.deletionDate.setHours(sendView.deletionDate.getHours() + 2);
|
||||||
|
sendViewsSubject.next([sendView]);
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
|
expect(component.formatExpirationDate()).toBe("sendExpiresInHours 2");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("returns hours singular if expiry is in 1 hour", () => {
|
||||||
|
sendView.deletionDate.setHours(sendView.deletionDate.getHours() + 1);
|
||||||
|
sendViewsSubject.next([sendView]);
|
||||||
|
fixture.detectChanges();
|
||||||
|
|
||||||
|
expect(component.formatExpirationDate()).toBe("sendExpiresInHoursSingle");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("copyLink", () => {
|
describe("copyLink", () => {
|
||||||
it("should copy link and show toast", async () => {
|
it("should copy link and show toast", async () => {
|
||||||
fixture.detectChanges();
|
|
||||||
const link = "https://example.com/#/send/abc/123";
|
const link = "https://example.com/#/send/abc/123";
|
||||||
|
|
||||||
await component.copyLink();
|
await component.copyLink();
|
||||||
|
@ -150,7 +188,7 @@ describe("SendCreatedComponent", () => {
|
||||||
expect(toastService.showToast).toHaveBeenCalledWith({
|
expect(toastService.showToast).toHaveBeenCalledWith({
|
||||||
variant: "success",
|
variant: "success",
|
||||||
title: null,
|
title: null,
|
||||||
message: i18nService.t("sendLinkCopied"),
|
message: "sendLinkCopied",
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -56,7 +56,7 @@ export class SendCreatedComponent {
|
||||||
this.send = sendViews.find((s) => s.id === sendId);
|
this.send = sendViews.find((s) => s.id === sendId);
|
||||||
if (this.send) {
|
if (this.send) {
|
||||||
this.hoursAvailable = this.getHoursAvailable(this.send);
|
this.hoursAvailable = this.getHoursAvailable(this.send);
|
||||||
this.daysAvailable = this.hoursAvailable / 24;
|
this.daysAvailable = Math.ceil(this.hoursAvailable / 24);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue