tikiwiki/packages/tiki-pkg-casperjs/jerome-breton/casperjs/tests/suites/casper/evaluate.js
2023-11-20 20:52:04 +00:00

130 lines
4.9 KiB
JavaScript
Executable File

/*eslint strict:0, max-params:0*/
casper.test.begin('mapping argument context', 1, function(test) {
casper.start();
var context = {
"_boolean_true": true,
"_boolean_false": false,
"_int_number": 42,
"_float_number": 1337.42,
"_string": "plop! \"Ÿ£$\" 'no'",
"_array": [1, 2, 3],
"_object": {a: 1, b: 2},
"_function": function(){console.log('ok');}
};
var result = casper.evaluate(function(_boolean_true, _boolean_false, _int_number,
_float_number, _string, _array, _object, _function) {
return [].map.call(arguments, function(arg) {
return typeof(arg);
});
}, context);
test.assertEquals(
result.toString(),
['boolean', 'boolean', 'number', 'number', 'string', 'object', 'object', 'function'].toString(),
'Casper.evaluate() handles passed argument context correcly'
);
test.done();
});
casper.test.begin('handling no argument context', 1, function(test) {
casper.start();
test.assertEquals(casper.evaluate(function() {
return 42;
}), 42, 'Casper.evaluate() handles evaluation with no context passed');
test.done();
});
casper.test.begin('handling of object context (BC mode)', 3, function(test) {
casper.start();
test.assertEquals(casper.evaluate(function(a) {
return [a];
}, {a: "foo"}), ["foo"], 'Casper.evaluate() accepts an object as arguments context');
test.assertEquals(casper.evaluate(function(a, b) {
return [a, b];
}, {a: "foo", b: "bar"}), ["foo", "bar"], 'Casper.evaluate() accepts an object as arguments context');
test.assertEquals(casper.evaluate(function(a, b, c) {
return [a, b, c];
}, {a: "foo", b: "bar", c: "baz"}), ["foo", "bar", "baz"], 'Casper.evaluate() accepts an object as arguments context');
test.done();
});
casper.test.begin('handling of array context', 3, function(test) {
casper.start();
test.assertEquals(casper.evaluate(function(a) {
return a;
}, ["foo"]), ["foo"], 'Casper.evaluate() accepts an array as arguments context');
test.assertEquals(casper.evaluate(function(a, b) {
return [a, b];
}, ["foo", "bar"]), ["foo", "bar"], 'Casper.evaluate() accepts an array as arguments context');
test.assertEquals(casper.evaluate(function(a, b, c) {
return [a, b, c];
}, ["foo", "bar", "baz"]), ["foo", "bar", "baz"], 'Casper.evaluate() accepts an array as arguments context');
test.done();
});
casper.test.begin('natural arguments context (phantomjs equivalent)', 3, function(test) {
casper.start();
test.assertEquals(casper.evaluate(function(a) {
return [a];
}, "foo"), ["foo"], 'Casper.evaluate() accepts natural arguments context');
test.assertEquals(casper.evaluate(function(a, b) {
return [a, b];
}, "foo", "bar"), ["foo", "bar"], 'Casper.evaluate() accepts natural arguments context');
test.assertEquals(casper.evaluate(function(a, b, c) {
return [a, b, c];
}, "foo", "bar", "baz"), ["foo", "bar", "baz"], 'Casper.evaluate() accepts natural arguments context');
test.done();
});
casper.test.begin('thenEvaluate() tests', 2, function(test) {
casper.start().thenEvaluate(function(a, b) {
window.a = a;
window.b = b;
}, "foo", "bar");
casper.then(function() {
test.assertEquals(this.getGlobal('a'), "foo", "Casper.thenEvaluate() sets args");
test.assertEquals(this.getGlobal('b'), "bar",
"Casper.thenEvaluate() sets args the same way evaluate() does");
});
casper.run(function() {
test.done();
});
});
// https://github.com/casperjs/casperjs/issues/489
// https://groups.google.com/forum/?fromgroups=#!topic/casperjs/95IgDMFnEKM
casper.test.begin("evaluate() returns a value which can be altered", 1, function(test) {
var list;
casper.start().then(function() {
list = this.evaluate(function() {
return [{a: 1}, {b: 2}];
});
var first = list[0];
first.a = 42;
test.assertEquals(list, [{a: 42}, {b: 2}],
'evaluate() returns a cloned value which can be altered');
});
casper.run(function() {
test.done();
});
});
// https://github.com/casperjs/casperjs/issues/841
casper.test.begin("evaluate() with js disabled, throws error", 1, function(test) {
casper.options.pageSettings.javascriptEnabled = false;
casper.start().then(function() {
function getListResult() {
return this.evaluate(function() {
return [{a: 1}, {b: 2}];
});
}
test.assertThrows(getListResult, undefined,
"Casper.evaluate() raises an error if JavaScript is disabled in the page");
});
casper.run(function() {
test.done();
casper.options.pageSettings.javascriptEnabled = true;
});
});