forked from Mapan/odoo17e
153 lines
5.2 KiB
JavaScript
153 lines
5.2 KiB
JavaScript
/** @odoo-module **/
|
|
|
|
import { click, getFixture, mount, editInput } from "@web/../tests/helpers/utils";
|
|
import { makeTestEnv } from "@web/../tests/helpers/mock_env";
|
|
import {
|
|
makeFakeUserService,
|
|
makeFakeDialogService,
|
|
makeFakeLocalizationService,
|
|
} from "@web/../tests/helpers/mock_services";
|
|
import { PublicSignerDialog } 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";
|
|
|
|
const serviceRegistry = registry.category("services");
|
|
const fakeName = "Pericles";
|
|
const fakeMail = "pericles@test.com";
|
|
const documentId = 23;
|
|
const signRequestToken = "abc";
|
|
|
|
let target;
|
|
|
|
QUnit.module("public signer dialog", function (hooks) {
|
|
const mountPublicSignerDialog = async (mockRPC = {}, additionalProps = {}) => {
|
|
const env = await makeTestEnv({ mockRPC });
|
|
env.dialogData = {
|
|
isActive: true,
|
|
close: () => {},
|
|
};
|
|
|
|
await mount(PublicSignerDialog, target, {
|
|
props: {
|
|
name: fakeName,
|
|
mail: fakeMail,
|
|
postValidation: () => {},
|
|
close: () => {},
|
|
...additionalProps,
|
|
},
|
|
env,
|
|
});
|
|
};
|
|
|
|
hooks.beforeEach(() => {
|
|
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,
|
|
signRequestToken,
|
|
};
|
|
serviceRegistry.add("signInfo", {
|
|
name: "signInfo",
|
|
start() {
|
|
return {
|
|
get(key) {
|
|
return signInfo[key];
|
|
},
|
|
};
|
|
},
|
|
});
|
|
});
|
|
|
|
QUnit.test("public signer dialog is rendered correctly", async (assert) => {
|
|
await mountPublicSignerDialog();
|
|
|
|
assert.containsOnce(
|
|
target,
|
|
"#o_sign_public_signer_name_input",
|
|
"should contain name input"
|
|
);
|
|
assert.strictEqual(
|
|
target.querySelector("#o_sign_public_signer_name_input").value,
|
|
fakeName,
|
|
"name should be prefilled"
|
|
);
|
|
assert.containsOnce(
|
|
target,
|
|
"#o_sign_public_signer_mail_input",
|
|
"should contain email input"
|
|
);
|
|
assert.strictEqual(
|
|
target.querySelector("#o_sign_public_signer_mail_input").value,
|
|
fakeMail,
|
|
"mail should be prefilled"
|
|
);
|
|
assert.containsOnce(
|
|
target,
|
|
"button.btn-primary:contains('Validate & Send')",
|
|
"should show validate button"
|
|
);
|
|
});
|
|
|
|
QUnit.test("public signer dialog correctly submits data", async (assert) => {
|
|
assert.expect(5);
|
|
const mockAccessToken = "zyx";
|
|
const mockRequestId = 11;
|
|
const mockRequestToken = "def";
|
|
const mockRPC = (route, args) => {
|
|
if (
|
|
route === `/sign/send_public/${documentId}/${signRequestToken}` &&
|
|
args.name === fakeName &&
|
|
args.mail === fakeMail
|
|
) {
|
|
assert.step("sign-public-success");
|
|
return {
|
|
requestID: mockRequestId,
|
|
requestToken: mockRequestToken,
|
|
accessToken: mockAccessToken,
|
|
};
|
|
}
|
|
};
|
|
|
|
await mountPublicSignerDialog(mockRPC, {
|
|
postValidation: (requestId, requestToken, accessToken) => {
|
|
assert.strictEqual(requestId, mockRequestId);
|
|
assert.strictEqual(requestToken, mockRequestToken);
|
|
assert.strictEqual(accessToken, mockAccessToken);
|
|
},
|
|
});
|
|
await click(target, ".btn-primary");
|
|
assert.verifySteps(["sign-public-success"]);
|
|
});
|
|
|
|
QUnit.test("public signer dialog inputs validation", async (assert) => {
|
|
await mountPublicSignerDialog(
|
|
{},
|
|
{
|
|
name: "",
|
|
}
|
|
);
|
|
|
|
const nameInput = target.querySelector("#o_sign_public_signer_name_input");
|
|
const mailInput = target.querySelector("#o_sign_public_signer_mail_input");
|
|
|
|
assert.strictEqual(nameInput.classList.contains("is-invalid"), false);
|
|
await click(target, ".btn-primary");
|
|
assert.strictEqual(nameInput.classList.contains("is-invalid"), true);
|
|
|
|
assert.strictEqual(mailInput.classList.contains("is-invalid"), false);
|
|
editInput(target, "#o_sign_public_signer_mail_input", "abc");
|
|
await click(target, ".btn-primary");
|
|
assert.strictEqual(mailInput.classList.contains("is-invalid"), true);
|
|
|
|
editInput(target, "#o_sign_public_signer_mail_input", fakeMail);
|
|
await click(target, ".btn-primary");
|
|
assert.strictEqual(nameInput.classList.contains("is-invalid"), true);
|
|
assert.strictEqual(mailInput.classList.contains("is-invalid"), false);
|
|
});
|
|
});
|