Initial commit
This commit is contained in:
115
Fusion Accounting/static/tests/tours/asserts.js
Normal file
115
Fusion Accounting/static/tests/tours/asserts.js
Normal file
@@ -0,0 +1,115 @@
|
||||
/** @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`
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user