passbolt-styleguide
Version:
Passbolt styleguide contains common styling assets used by the different sites, plugin, etc.
48 lines (41 loc) • 1.71 kB
JavaScript
import React from "react";
import {render, fireEvent, cleanup} from '@testing-library/react';
import PassphraseDialog from "./PassphraseDialog";
import MockTranslationProvider
from "../../../react-extension/test/mock/components/Internationalisation/MockTranslationProvider";
import UserSettings from "../../../shared/lib/Settings/UserSettings";
import userSettingsFixture from "../../../react-extension/test/fixture/Settings/userSettings";
import {waitFor} from "@testing-library/dom";
// Reset the modules before each test.
beforeEach(() => {
jest.resetModules();
});
// Cleanup after each test.
afterEach(cleanup);
describe("PassphraseDialog", () => {
it("should execute the onComplete prop function when the passphrase is correct", async() => {
const onComplete = jest.fn();
const appContext = {
userSettings: new UserSettings(userSettingsFixture),
};
const component = render(
<MockTranslationProvider>
<PassphraseDialog debug context={appContext} onComplete={onComplete} />
</MockTranslationProvider>
);
// mock the passbolt messaging layer.
appContext.port = {
emit: () => new Promise(resolve => resolve()),
request: () => new Promise(resolve => resolve())
};
// Fill the passphrase input.
const passphraseInput = component.container.querySelector('[name="passphrase"]');
const event = {target: {value: "admin@passbolt.com"}};
fireEvent.change(passphraseInput, event);
// Click on submit.
const submitButton = component.container.querySelector('button[type="submit"]');
fireEvent.click(submitButton, {button: 0});
await waitFor(() => {});
expect(onComplete).toHaveBeenCalled();
});
});