forked from Mapan/odoo17e
141 lines
4.8 KiB
JavaScript
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"]);
|
|
}
|
|
);
|
|
});
|