1
0
forked from Mapan/odoo17e
odoo17e-kedaikipas58/addons/account_reports/static/tests/tours/asserts.js
2024-12-10 09:04:09 +07:00

116 lines
4.9 KiB
JavaScript

/** @odoo-module **/
//----------------------------------------------------------------------------------------------------------------------
// This class provides some helpers function to do assertions on tours
//----------------------------------------------------------------------------------------------------------------------
export class Asserts {
//------------------------------------------------------------------------------------------------------------------
// Helpers
//------------------------------------------------------------------------------------------------------------------
// Gets the number of 'selector' element inside 'target' element
static getCount(target, selector) {
return document.querySelector(target).querySelectorAll(selector).length;
}
// Gets the number of 'selector' element inside DOM
static getDOMCount(selector) {
return document.querySelectorAll(selector).length;
}
static check(condition, success, error) {
condition ? Asserts.success(success) : Asserts.error(error);
}
static success(message) {
return console.info(`SUCCESS: ${message}`);
}
static error(message) {
throw new Error(`FAIL: ${message}`);
}
//------------------------------------------------------------------------------------------------------------------
// Asserts
//------------------------------------------------------------------------------------------------------------------
static isTrue(actual) {
Asserts.check(actual, `${actual} is true`, `${actual} is not true`);
}
static isFalse(actual) {
Asserts.check(!actual, `${actual} is false`, `${actual} is not false`);
}
// Assert that 'actual' and 'expected' are equal
static isEqual(actual, expected) {
Asserts.check(
(actual == expected),
`${actual} is equal to expected ${expected}`,
`${actual} is not equal to expected ${expected}`
);
}
// Asserts that 'actual' and 'expected' are strictly equal
static isStrictEqual(actual, expected) {
Asserts.check(
(actual === expected),
`${actual} is strictly equal to expected ${expected}`,
`${actual} is not strictly equal to expected ${expected}`
);
}
// Assert that 'target' element contains at least one 'selector' element
static contains(target, selector) {
const count = Asserts.getCount(target, selector);
Asserts.check(
(count > 0),
`There is at least one ${selector} in ${target}`,
`There should be at least one ${selector} in ${target} but there is ${count}`
);
}
// Asserts there is no 'selector' element in 'target' element
static containsNone(target, selector) {
const count = Asserts.getCount(target, selector);
Asserts.check(
(count === 0),
`There is no ${selector} in ${target}`,
`There should be no ${selector} in ${target} but there is ${count}`
);
}
// Asserts that 'target' element contains 'number' of 'selector' elements
static containsNumber(target, selector, number) {
const count = Asserts.getCount(target, selector);
Asserts.check(
(count === number),
`There is the correct number (${number}) of ${selector} in ${target}`,
`There should be at ${number} ${selector} in ${target} but there is ${count}`
);
}
// Asserts that DOM contains at least one 'selector' element
static DOMContains(selector) {
const count = Asserts.getDOMCount(selector);
Asserts.check(
(count > 0),
`There is at least one ${selector} in the DOM`,
`There should be at least one ${selector} in the DOM but there is ${count}`
);
}
// Asserts there is no 'selector' element in the DOM
static DOMContainsNone(selector) {
const count = Asserts.getDOMCount(selector);
Asserts.check(
(count === 0),
`There is no ${selector} in the DOM`,
`There should be 0 ${selector} in the DOM but there is ${count}`
);
}
// Asserts that DOM contains 'number' of 'selector' element
static DOMContainsNumber(selector, number) {
const count = Asserts.getDOMCount(selector);
Asserts.check(
(Asserts.getDOMCount(selector) === number),
`There is the correct number (${number}) of ${selector} in the DOM`,
`There should be ${number} ${selector} in the DOM but there is ${count}`
);
}
// Asserts that 'selector' element has class 'classname'
static hasClass(selector, classname) {
Asserts.check(
document.querySelector(selector).classList.contains(classname),
`${selector} has class ${classname}`,
`${selector} should have class ${classname} but hasn't`
);
}
}