Files
Odoo-Modules/Fusion Accounting/static/tests/tours/account_reports_annotations.js
2026-02-22 01:22:18 -05:00

299 lines
11 KiB
JavaScript

/** @odoo-module **/
import { Asserts } from "./asserts";
import { registry } from "@web/core/registry";
registry.category("web_tour.tours").add("account_reports_annotations", {
url: "/odoo/action-fusion_accounting.action_account_report_bs",
steps: () => [
//--------------------------------------------------------------------------------------------------------------
// Annotations
//--------------------------------------------------------------------------------------------------------------
// Test the initial status of annotations - There are 2 annotations to display
{
content: "Initial annotations",
trigger: ".o_content",
run: () => {
Asserts.DOMContainsNone(".annotations");
},
},
{
content: "Unfold first line",
trigger: "tr:nth-child(4) td:first()",
run: "click",
},
{
content: "Unfold second line",
trigger: "tr:nth-child(7) td:first()",
run: "click",
},
{
content: "Unfold third line",
trigger: "tr:nth-child(10) td:first()",
run: "click",
},
{
content: "Extra Trigger step",
trigger: "tr:nth-child(12):not(.d-none) .name:contains('101404')",
},
{
content: "Check there are two lines annotated initially",
trigger: ".o_content",
run: () => {
const annotations = document.querySelectorAll(".btn_annotation .fa-commenting");
// Check the number of annotated lines
Asserts.isEqual(annotations.length, 2);
// Check the annotations buttons are on the right lines
Asserts.isTrue(
annotations[0] ===
document.querySelector("tr:nth-child(5)").querySelector(".fa-commenting")
);
Asserts.isTrue(
annotations[1] ===
document.querySelector("tr:nth-child(12)").querySelector(".fa-commenting")
);
},
},
// Test that we can add a new annotation
{
content: "Click to show caret option",
trigger: "tr:nth-child(8) .dropdown-toggle",
run: "click",
},
{
content: "Caret option is displayed",
trigger: "tr:nth-child(8)",
run: () => {
Asserts.hasClass("tr:nth-child(8) .o-dropdown", "show");
},
},
{
content: "Click on annotate",
trigger: ".o-dropdown--menu .dropdown-item:last-of-type:contains('Annotate')",
run: "click",
},
{
content: "Add text to annotate",
trigger: "textarea",
run: "edit Annotation 121000",
},
{
content: "Submit annotation by blurring",
trigger: "textarea",
run: function () {
const annotation = this.anchor;
annotation.dispatchEvent(new InputEvent("input"));
annotation.dispatchEvent(new Event("change"));
},
},
{
content: "Wait for annotation created",
trigger: "tr:nth-child(8) .btn_annotation .fa-commenting",
},
{
content: "Close annotation",
trigger: ".o_content",
run: "click",
},
{
content: "Check there are now three lines annotated",
trigger: ".o_content",
run: () => {
const annotations = document.querySelectorAll(".btn_annotation .fa-commenting");
// Check the number of annotated lines
Asserts.isEqual(annotations.length, 3);
// Check the annotations buttons are on the right lines
Asserts.isTrue(
annotations[0] ===
document.querySelector("tr:nth-child(5)").querySelector(".fa-commenting")
);
Asserts.isTrue(
annotations[1] ===
document.querySelector("tr:nth-child(8)").querySelector(".fa-commenting")
);
Asserts.isTrue(
annotations[2] ===
document.querySelector("tr:nth-child(12)").querySelector(".fa-commenting")
);
},
},
// Test that we can edit an annotation
{
content: "Open second annotated line annotation popover",
trigger: "tr:nth-child(8) .btn_annotation",
run: "click",
},
{
content: "Annotate contains previous text value",
trigger: "textarea",
run: () => {
Asserts.isEqual(document.querySelector("textarea").value, "Annotation 121000");
},
},
{
content: "Add text to annotate",
trigger: "textarea",
run: "edit Annotation 121000 edited",
},
{
content: "Annotation is edited",
trigger: "tr:nth-child(8) .btn_annotation",
run: () => {
Asserts.isEqual(
document.querySelector(".annotation_popover_autoresize_textarea").value,
"Annotation 121000 edited"
);
},
},
// Test that we can delete an annotation by clicking the trash icon
{
content: "Click on trash can",
trigger: ".btn_annotation_delete",
run: "click",
},
{
content: "Check there are now only two lines annotated",
trigger: "tr:nth-child(8):not(:has(.fa-commenting))",
run: () => {
const annotations = document.querySelectorAll(".btn_annotation .fa-commenting");
// Check the number of annotated lines
Asserts.isEqual(annotations.length, 2);
// Check the annotations buttons are on the right lines
Asserts.isTrue(
annotations[0] ===
document.querySelector("tr:nth-child(5)").querySelector(".fa-commenting")
);
Asserts.isTrue(
annotations[1] ===
document.querySelector("tr:nth-child(12)").querySelector(".fa-commenting")
);
},
},
// Test that we can add an annotation by clicking on the "New" button inside the popover
{
content: "Open an annotated line annotation popover",
trigger: "tr:nth-child(12) .btn_annotation",
run: "click",
},
{
content: "Click on the 'New' button",
trigger: ".annotation_popover_line .oe_link",
run: "click",
},
{
content: "Add text to annotate",
trigger: "textarea:last()",
run: "edit Annotation 101404 bis",
},
{
content: "Submit annotation by blurring",
trigger: "textarea:last()",
run: function () {
const annotation = this.anchor;
annotation.dispatchEvent(new InputEvent("input"));
annotation.dispatchEvent(new Event("change"));
},
},
// Check the current state of the annotations
{
content: "Check there are two annotated lines to end the test",
trigger: ".o_content",
run: () => {
const annotations = document.querySelectorAll(".btn_annotation .fa-commenting");
// Check there is only one annotated line
Asserts.isEqual(annotations.length, 2);
// Check the annotation buttons are on the right lines
Asserts.isTrue(
annotations[0] ===
document.querySelector("tr:nth-child(5)").querySelector(".fa-commenting")
);
Asserts.isTrue(
annotations[1] ===
document.querySelector("tr:nth-child(12)").querySelector(".fa-commenting")
);
},
},
//--------------------------------------------------------------------------------------------------------------
// Annotations dates
//--------------------------------------------------------------------------------------------------------------
{
content:
"Remove first annotation to only have one annotation on line 12 (required setup step)",
trigger: ".annotation_popover tr:nth-child(2) .btn_annotation_delete",
run: "click",
},
{
content: "Verify that we still have one element",
trigger: ".annotation_popover tr:nth-child(3):contains('Add a line')",
},
{
content: "Modify the date of an annotation to a further period",
trigger: ".annotation_popover tr:nth-child(2) input",
run: "edit 01/01/2100",
},
{
content: "Modify the date of an annotation to a further period",
trigger: ".annotation_popover tr:nth-child(2) input",
run: function () {
// Since the t-on-change of the input is not triggered by the run: "edit" action,
// we need to dispatch the event manually requiring a function.
const input = this.anchor;
input.dispatchEvent(new InputEvent("input"));
input.dispatchEvent(new Event("change", { bubbles: true }));
},
},
{
content: "Check that there is no annotation anymore on line 12",
trigger: "tr:nth-child(12):not(:has(.fa-commenting))",
},
{
content: "change date filter",
trigger: "#filter_date button",
run: "click",
},
{
content: "Open specific date button",
trigger: ".dropdown-menu div.dropdown-item",
run: "click",
},
{
content: "Go to 15 January 2100",
trigger: ".o_datetime_input",
run: "edit 01/15/2100",
},
{
content: "Apply filter by closing the dropdown",
trigger: "#filter_date .btn:first()",
run: "click",
},
{
content: "wait refresh",
trigger: `#filter_date button:not(:contains(${new Date().getFullYear()}))`,
},
{
content: "Check there is one annotation on line 12",
trigger: "tr:nth-child(12):has(.fa-commenting)",
run: () => {
const annotations = document.querySelectorAll(".btn_annotation .fa-commenting");
// Check there is only one annotated line
Asserts.isEqual(annotations.length, 1);
// Check the annotation buttons are on the right lines
Asserts.isTrue(
annotations[0] ===
document.querySelector("tr:nth-child(12)").querySelector(".fa-commenting")
);
}
},
]
});