FaC: Das alte Flag von Terminen, die in die Zeiterfassung übernommen worden sind, wird ebenfalls berücksichtigt.
114 lines
2.5 KiB
JavaScript
114 lines
2.5 KiB
JavaScript
var _ = require('lodash');
|
|
var __slice = Array.prototype.slice;
|
|
var utils = require("./utils");
|
|
var deprecator = utils.deprecator;
|
|
|
|
function Asserter(_assert){
|
|
this.assert = _assert;
|
|
}
|
|
|
|
/**
|
|
* asserters.nonEmptyText
|
|
*
|
|
* @asserter
|
|
*/
|
|
var nonEmptyText = new Asserter(
|
|
function (target, cb) {
|
|
target.text(function(err, text) {
|
|
if(err) { return cb(err); }
|
|
var satisfied = text && _(text).trim().length > 0;
|
|
cb(null, satisfied, satisfied? text : undefined);
|
|
});
|
|
}
|
|
);
|
|
|
|
/**
|
|
* asserters.textInclude(content) -> Asserter
|
|
*
|
|
* @asserter
|
|
*/
|
|
function textInclude(content) {
|
|
return new Asserter(
|
|
function(target, cb) {
|
|
target.text(function(err, text) {
|
|
if(err) { return cb(err); }
|
|
var satisfied = text && _(text).includes(content);
|
|
cb(null, satisfied, satisfied? text : undefined);
|
|
});
|
|
}
|
|
);
|
|
}
|
|
|
|
/**
|
|
* asserters.isVisible
|
|
*
|
|
* @asserter
|
|
*/
|
|
var isDisplayed = new Asserter(
|
|
function(el,cb) {
|
|
el.isDisplayed(function(err, displayed) {
|
|
if(err) { return cb(err); }
|
|
cb(null, displayed);
|
|
});
|
|
}
|
|
);
|
|
var isVisible = new Asserter(
|
|
function() {
|
|
deprecator.warn('isVisible asserter', 'isVisible asserter has been deprecated, use isDisplayed asserter instead.');
|
|
var args = __slice.call(arguments, 0);
|
|
isDisplayed.assert.apply(this, args);
|
|
}
|
|
);
|
|
|
|
/**
|
|
* asserters.isHidden
|
|
*
|
|
* @asserter
|
|
*/
|
|
var isNotDisplayed = new Asserter(
|
|
function(el,cb) {
|
|
el.isDisplayed(function(err, displayed) {
|
|
if(err) { return cb(err); }
|
|
cb(null, !displayed);
|
|
});
|
|
}
|
|
);
|
|
var isHidden = new Asserter(
|
|
function() {
|
|
deprecator.warn('isHidden asserter', 'isHidden asserter has been deprecated, use isNotDisplayed asserter instead.');
|
|
var args = __slice.call(arguments, 0);
|
|
isNotDisplayed.assert.apply(this, args);
|
|
}
|
|
);
|
|
|
|
/**
|
|
* asserters.jsCondition(jsConditionExpr) -> Asserter
|
|
* jsConditionExpr: js script expression, should evaluate as boolean.
|
|
*
|
|
* @asserter
|
|
*/
|
|
function jsCondition(jsConditionExpr, safe) {
|
|
if(safe === undefined) { safe = false; }
|
|
return new Asserter(
|
|
function(browser, cb) {
|
|
var _eval = safe? browser.safeEval : browser.eval;
|
|
_eval.apply( browser , [jsConditionExpr, function(err, res) {
|
|
if(err) {return cb(err);}
|
|
cb(null, res, res);
|
|
}]);
|
|
}
|
|
);
|
|
}
|
|
|
|
module.exports = {
|
|
Asserter: Asserter,
|
|
nonEmptyText: nonEmptyText,
|
|
isDisplayed: isDisplayed,
|
|
isNotDisplayed: isNotDisplayed,
|
|
textInclude: textInclude,
|
|
jsCondition: jsCondition,
|
|
// deprecated
|
|
isVisible: isVisible,
|
|
isHidden: isHidden,
|
|
};
|