100 lines
3.0 KiB
JavaScript
100 lines
3.0 KiB
JavaScript
import { describe, expect, test } from "@odoo/hoot";
|
|
import { click } from "@odoo/hoot-dom";
|
|
import {
|
|
contains,
|
|
makeDialogMockEnv,
|
|
mockService,
|
|
mountWithCleanup,
|
|
onRpc,
|
|
} from "@web/../tests/web_test_helpers";
|
|
import { AlertDialog } from "@web/core/confirmation_dialog/confirmation_dialog";
|
|
|
|
import { defineMailModels } from "@mail/../tests/mail_test_helpers";
|
|
import { SignRefusalDialog, ThankYouDialog } from "@sign/dialogs/dialogs";
|
|
import { fakeSignInfoService } from "./dialog_utils";
|
|
|
|
const createEnvForDialog = async () => await makeDialogMockEnv();
|
|
|
|
const mountSignRefusalDialog = async () => {
|
|
await mountWithCleanup(SignRefusalDialog, {
|
|
props: {
|
|
close: () => {},
|
|
},
|
|
});
|
|
};
|
|
|
|
const documentId = 23;
|
|
const signRequestItemToken = "abc";
|
|
|
|
const signInfo = {
|
|
documentId,
|
|
signRequestItemToken,
|
|
};
|
|
|
|
mockService("signInfo", fakeSignInfoService(signInfo));
|
|
|
|
describe.current.tags("desktop");
|
|
defineMailModels();
|
|
|
|
test("sign refusal dialog should render", async () => {
|
|
await mountSignRefusalDialog(await createEnvForDialog());
|
|
|
|
expect(".o_sign_refuse_confirm_message").toHaveCount(1, { message: "should show textarea" });
|
|
expect("button.refuse-button").toHaveCount(1, { message: "should show button" });
|
|
expect("button.refuse-button").toHaveAttribute("disabled", undefined, {
|
|
message: "button should be disabled at first render",
|
|
});
|
|
});
|
|
|
|
test("sign refusal dialog should call refuse route when confirmed", async () => {
|
|
onRpc(`/sign/refuse/${documentId}/${signRequestItemToken}`, () => {
|
|
expect.step("refuse-route-called");
|
|
return true;
|
|
});
|
|
|
|
await createEnvForDialog();
|
|
mockService("dialog", {
|
|
add(component) {
|
|
if (component === ThankYouDialog) {
|
|
expect.step("thank-you-dialog");
|
|
}
|
|
},
|
|
});
|
|
|
|
await mountSignRefusalDialog();
|
|
|
|
await contains(".o_sign_refuse_confirm_message").edit("reason for refusal");
|
|
expect("button.refuse-button").not.toHaveAttribute("disabled", undefined, {
|
|
message: "button should be enabled after textarea is filled",
|
|
});
|
|
await click("button.refuse-button");
|
|
|
|
expect.verifySteps(["refuse-route-called"]);
|
|
});
|
|
|
|
test("sign refusal dialog should show error dialog when rpc fails", async () => {
|
|
onRpc(`/sign/refuse/${documentId}/${signRequestItemToken}`, () => {
|
|
expect.step("refuse-route-called");
|
|
return false;
|
|
});
|
|
|
|
await createEnvForDialog();
|
|
mockService("dialog", {
|
|
add(component) {
|
|
if (component === AlertDialog) {
|
|
expect.step("alert-dialog");
|
|
}
|
|
},
|
|
});
|
|
|
|
await mountSignRefusalDialog();
|
|
|
|
await contains(".o_sign_refuse_confirm_message").edit("reason for refusal");
|
|
expect("button.refuse-button").not.toHaveAttribute("disabled", undefined, {
|
|
message: "button should be enabled after textarea is filled",
|
|
});
|
|
await click("button.refuse-button");
|
|
|
|
expect.verifySteps(["refuse-route-called", "alert-dialog"]);
|
|
});
|