1
0
forked from Mapan/odoo17e
odoo17e-kedaikipas58/addons/sign/static/tests/dialogs/sign_refusal_dialog_test.js
2024-12-10 09:04:09 +07:00

141 lines
4.8 KiB
JavaScript

/** @odoo-module **/
import { click, getFixture, mount, editInput, patchWithCleanup } from "@web/../tests/helpers/utils";
import { makeTestEnv } from "@web/../tests/helpers/mock_env";
import {
makeFakeUserService,
makeFakeDialogService,
makeFakeLocalizationService,
} from "@web/../tests/helpers/mock_services";
import { SignRefusalDialog, ThankYouDialog } from "@sign/dialogs/dialogs";
import { registry } from "@web/core/registry";
import { hotkeyService } from "@web/core/hotkeys/hotkey_service";
import { uiService } from "@web/core/ui/ui_service";
import { AlertDialog } from "@web/core/confirmation_dialog/confirmation_dialog";
const serviceRegistry = registry.category("services");
const documentId = 23;
const signRequestItemToken = "abc";
let target;
QUnit.module("sign refusal dialog", function (hooks) {
const createEnvForDialog = async (mockRPC = {}) => {
const env = await makeTestEnv({ mockRPC });
env.dialogData = {
isActive: true,
close: () => {},
};
return env;
};
const mountSignRefusalDialog = async (env) => {
await mount(SignRefusalDialog, target, {
props: {
close: () => {},
},
env,
});
};
hooks.beforeEach(function () {
target = getFixture();
serviceRegistry.add("user", makeFakeUserService());
serviceRegistry.add("dialog", makeFakeDialogService());
serviceRegistry.add("localization", makeFakeLocalizationService());
serviceRegistry.add("ui", uiService);
serviceRegistry.add("hotkey", hotkeyService);
const signInfo = {
documentId,
signRequestItemToken,
};
serviceRegistry.add("signInfo", {
name: "signInfo",
start() {
return {
get(key) {
return signInfo[key];
},
};
},
});
});
QUnit.test("sign refusal dialog should render", async function (assert) {
await mountSignRefusalDialog(await createEnvForDialog());
assert.containsOnce(target, ".o_sign_refuse_confirm_message", "should show textarea");
assert.containsOnce(target, "button.refuse-button", "should show button");
assert.strictEqual(
target.querySelector("button.refuse-button").disabled,
true,
"button should be disabled at first render"
);
});
QUnit.test(
"sign refusal dialog should call refuse route when confirmed",
async function (assert) {
const mockRPC = (route) => {
if (route === `/sign/refuse/${documentId}/${signRequestItemToken}`) {
assert.step("refuse-route-called");
return true;
}
};
const env = await createEnvForDialog(mockRPC);
patchWithCleanup(env.services.dialog, {
add(component, props) {
if (component === ThankYouDialog) {
assert.step("thank-you-dialog");
}
},
});
await mountSignRefusalDialog(env);
await editInput(target, ".o_sign_refuse_confirm_message", "reason for refusal");
assert.strictEqual(
target.querySelector("button.refuse-button").disabled,
false,
"button should be enabled after textarea is filled"
);
await click(target.querySelector("button.refuse-button"));
assert.verifySteps(["refuse-route-called", "thank-you-dialog"]);
}
);
QUnit.test(
"sign refusal dialog should show error dialog when rpc fails",
async function (assert) {
const mockRPC = (route) => {
if (route === `/sign/refuse/${documentId}/${signRequestItemToken}`) {
assert.step("refuse-route-called");
return false;
}
};
const env = await createEnvForDialog(mockRPC);
patchWithCleanup(env.services.dialog, {
add(component, props) {
if (component === AlertDialog) {
assert.step("alert-dialog");
}
},
});
await mountSignRefusalDialog(env);
await editInput(target, ".o_sign_refuse_confirm_message", "reason for refusal");
assert.strictEqual(
target.querySelector("button.refuse-button").disabled,
false,
"button should be enabled after textarea is filled"
);
await click(target.querySelector("button.refuse-button"));
assert.verifySteps(["refuse-route-called", "alert-dialog"]);
}
);
});