casper-chai
Advanced tools
Comparing version 0.1.3 to 0.1.4
@@ -0,1 +1,2 @@ | ||
/* casper-chai version 0.1.4 */ | ||
@@ -18,17 +19,11 @@ // -- from: lib/casper-chai.coffee -- \\ | ||
casperChai = function(_chai, utils) { | ||
var methods, properties, _addMethod, _addProperty, _matches; | ||
var assert, methods, properties, _addMethod, _addProperty, _exprAsFunction, _matches; | ||
properties = []; | ||
methods = []; | ||
_matches = function(string_or_regex, value) { | ||
var regex; | ||
if (typeof string_or_regex === 'string') { | ||
regex = new RegExp("^" + string_or_regex + "$"); | ||
} else if (_.isRegExp(string_or_regex)) { | ||
regex = string_or_regex; | ||
} else { | ||
throw new Error("Test received " + string_or_regex + ", but expected string", +" or regular expression."); | ||
} | ||
return regex.test(value); | ||
}; | ||
assert.casper = {}; | ||
assert = _chai.assert; | ||
/* | ||
Utilities | ||
--------- | ||
*/ | ||
_addProperty = function(name, func) { | ||
@@ -40,2 +35,80 @@ return _chai.Assertion.addProperty(name, func); | ||
}; | ||
/* | ||
Given an expression, turn it in to something that can be | ||
evaluated remotely. | ||
expr may be | ||
1. a bare string e.g. "false" or "return true"; | ||
2. a function string e.g. "function () { return true }" | ||
3. an actual function e.g. function () { return 'hello' } | ||
*/ | ||
_exprAsFunction = function(expr) { | ||
var fn; | ||
if (_.isFunction(expr)) { | ||
fn = expr; | ||
} else if (_.isString(expr)) { | ||
if (/^\s*function\s+/.test(expr)) { | ||
fn = expr; | ||
} else { | ||
if (expr.indexOf('return ') === -1) { | ||
fn = "function () { return " + expr + " }"; | ||
} else { | ||
fn = "function () { " + expr + " }"; | ||
} | ||
} | ||
} else { | ||
this.assert(false, "Expression " + expr + " must be a function, or a string"); | ||
} | ||
return fn; | ||
}; | ||
/* | ||
Returns true if a given string_or_regex matches the given value | ||
*/ | ||
_matches = function(against, value) { | ||
var regex; | ||
if (typeof against === 'string') { | ||
regex = new RegExp("^" + against + "$"); | ||
} else if (_.isRegExp(against)) { | ||
regex = against; | ||
} else { | ||
return _.isEqual(against, value); | ||
throw new Error("Test received " + against + ", but expected string", +" or regular expression."); | ||
} | ||
return regex.test(value); | ||
}; | ||
/* | ||
Chai Tests | ||
---------- | ||
The following are the tests that are added onto Chai Assertion. | ||
*/ | ||
/* | ||
fieldValue | ||
~~~~~~~~~~ | ||
Wraps the __utils__.getFieldValue(selector) | ||
*/ | ||
_addMethod('fieldValue', function(givenValue) { | ||
var get_remote_value, remoteValue, selector; | ||
selector = this._obj; | ||
if (_.isString(selector)) { | ||
} else { | ||
expect(selector).to.be.inDOM; | ||
} | ||
get_remote_value = function(selector) { | ||
return __utils__.getFieldValue(selector); | ||
}; | ||
remoteValue = casper.evaluate(get_remote_value, { | ||
selector: selector | ||
}); | ||
return this.assert(remoteValue === givenValue, ("expected field(s) " + selector + " to have value " + givenValue + ", ") + ("but it was " + remoteValue), ("expected field(s) " + selector + " to not have value " + givenValue + ", ") + "but it was"); | ||
}); | ||
_addProperty('inDOM', function() { | ||
@@ -46,8 +119,2 @@ var selector; | ||
}); | ||
_addProperty('visible', function() { | ||
var selector; | ||
selector = this._obj; | ||
expect(selector).to.be.inDOM; | ||
return this.assert(casper.visible(selector), 'expected selector #{this} to be visible, but it was not', 'expected selector #{this} to not be, but it was'); | ||
}); | ||
_addProperty('loaded', function() { | ||
@@ -58,2 +125,14 @@ var resourceTest; | ||
}); | ||
/* | ||
matchOnRemote | ||
~~~~~~~~~~~~~~ | ||
*/ | ||
_addMethod('matchOnRemote', function(matcher) { | ||
var expr, fn, remoteValue; | ||
expr = this._obj; | ||
fn = _exprAsFunction(expr); | ||
remoteValue = casper.evaluate(fn); | ||
return this.assert(_matches(matcher, remoteValue), "expected " + this._obj + " (" + fn + " = " + remoteValue + ") to match " + matcher, "expected " + this._obj + " (" + fn + ") to not match " + matcher + ", but it did"); | ||
}); | ||
_addProperty('matchTitle', function() { | ||
@@ -85,18 +164,34 @@ var matcher, title; | ||
}); | ||
return _addMethod('fieldValue', function(givenValue) { | ||
var get_remote_value, remoteValue, selector; | ||
selector = this._obj; | ||
if (_.isString(selector)) { | ||
/* | ||
trueOnRemote | ||
~~~~~~~~~~~~ | ||
This assertion passes when the given expression is true on the remote. | ||
For example: | ||
"true".should.be.trueOnRemote | ||
or | ||
(function() { return false }).should.not.be.trueOnRemote | ||
or | ||
expect("function () { return true }").to.be.trueOnRemote | ||
*/ | ||
} else { | ||
expect(selector).to.be.inDOM; | ||
} | ||
get_remote_value = function(selector) { | ||
return __utils__.getFieldValue(selector); | ||
}; | ||
remoteValue = casper.evaluate(get_remote_value, { | ||
selector: selector | ||
}); | ||
return this.assert(remoteValue === givenValue, ("expected field(s) " + selector + " to have value " + givenValue + ", ") + ("but it was " + remoteValue), ("expected field(s) " + selector + " to not have value " + givenValue + ", ") + "but it was"); | ||
_addProperty('trueOnRemote', function() { | ||
var expr, fn, remoteValue; | ||
expr = this._obj; | ||
fn = _exprAsFunction(expr); | ||
remoteValue = casper.evaluate(fn); | ||
return this.assert(remoteValue, "expected expression " + this._obj + " to be true, but it was " + remoteValue, "expected expression " + this._obj + " to not be true, but itw as " + remoteValue); | ||
}); | ||
return _addProperty('visible', function() { | ||
var selector; | ||
selector = this._obj; | ||
expect(selector).to.be.inDOM; | ||
return this.assert(casper.visible(selector), 'expected selector #{this} to be visible, but it was not', 'expected selector #{this} to not be, but it was'); | ||
}); | ||
}; | ||
@@ -103,0 +198,0 @@ |
@@ -1,1 +0,1 @@ | ||
(function(){var t;t=function(t,e){var i,s,r,n,o;s=[];i=[];o=function(t,e){var i;if(typeof t==="string"){i=new RegExp("^"+t+"$")}else if(_.isRegExp(t)){i=t}else{throw new Error("Test received "+t+", but expected string",+" or regular expression.")}return i.test(e)};assert.casper={};n=function(e,i){return t.Assertion.addProperty(e,i)};r=function(e,i){return t.Assertion.addMethod(e,i)};n("inDOM",function(){var t;t=this._obj;return this.assert(casper.exists(t),"expected selector #{this} to be in the DOM, but it was not","expected selector #{this} to not be in the DOM, but it was")});n("visible",function(){var t;t=this._obj;expect(t).to.be.inDOM;return this.assert(casper.visible(t),"expected selector #{this} to be visible, but it was not","expected selector #{this} to not be, but it was")});n("loaded",function(){var t;t=this._obj;return this.assert(casper.resourceExists(t),"expected resource #{this} to exist, but it does not","expected resource #{this} to not exist, but it does")});n("matchTitle",function(){var t,e;t=this._obj;e=casper.getTitle();return this.assert(o(t,e),"expected title #{this} to match #{exp}, but it did not","expected title #{this} to not match #{exp}, but it did")});n("matchCurrentUrl",function(){var t,e;e=this._obj;t=casper.getCurrentUrl();return this.assert(o(e,t),"expected url #{exp} to match #{this}, but it did not","expected url #{exp} to not match #{this}, but it did")});n("textInDOM",function(){var t,e;e=this._obj;t=casper.evaluate(function(){return document.body.textContent||document.body.innerText});return this.assert(t.indexOf(e)!==-1,"expected text #{this} to be in the document, but it was not","expected text #{this} to not be in the document, but it was found")});r("textMatch",function(t){var e,i;e=this._obj;i=casper.fetchText(e);return this.assert(o(t,i),"expected '"+e+"' to match "+t+", but it did not","expected '"+e+"' to not match "+t+", but it did")});return r("fieldValue",function(t){var e,i,s;s=this._obj;if(_.isString(s)){}else{expect(s).to.be.inDOM}e=function(t){return __utils__.getFieldValue(t)};i=casper.evaluate(e,{selector:s});return this.assert(i===t,"expected field(s) "+s+" to have value "+t+", "+("but it was "+i),"expected field(s) "+s+" to not have value "+t+", "+"but it was")})};if(typeof require==="function"&&typeof exports==="object"&&typeof module==="object"){module.exports=t}else if(typeof define==="function"&&define.amd){define(function(){return t})}else{chai.use(t)}}).call(this); | ||
(function(){var t;t=function(t,e){var i,s,n,r,o,u,c;n=[];s=[];i=t.assert;o=function(e,i){return t.Assertion.addProperty(e,i)};r=function(e,i){return t.Assertion.addMethod(e,i)};u=function(t){var e;if(_.isFunction(t)){e=t}else if(_.isString(t)){if(/^\s*function\s+/.test(t)){e=t}else{if(t.indexOf("return ")===-1){e="function () { return "+t+" }"}else{e="function () { "+t+" }"}}}else{this.assert(false,"Expression "+t+" must be a function, or a string")}return e};c=function(t,e){var i;if(typeof t==="string"){i=new RegExp("^"+t+"$")}else if(_.isRegExp(t)){i=t}else{return _.isEqual(t,e);throw new Error("Test received "+t+", but expected string",+" or regular expression.")}return i.test(e)};r("fieldValue",function(t){var e,i,s;s=this._obj;if(_.isString(s)){}else{expect(s).to.be.inDOM}e=function(t){return __utils__.getFieldValue(t)};i=casper.evaluate(e,{selector:s});return this.assert(i===t,"expected field(s) "+s+" to have value "+t+", "+("but it was "+i),"expected field(s) "+s+" to not have value "+t+", "+"but it was")});o("inDOM",function(){var t;t=this._obj;return this.assert(casper.exists(t),"expected selector #{this} to be in the DOM, but it was not","expected selector #{this} to not be in the DOM, but it was")});o("loaded",function(){var t;t=this._obj;return this.assert(casper.resourceExists(t),"expected resource #{this} to exist, but it does not","expected resource #{this} to not exist, but it does")});r("matchOnRemote",function(t){var e,i,s;e=this._obj;i=u(e);s=casper.evaluate(i);return this.assert(c(t,s),"expected "+this._obj+" ("+i+" = "+s+") to match "+t,"expected "+this._obj+" ("+i+") to not match "+t+", but it did")});o("matchTitle",function(){var t,e;t=this._obj;e=casper.getTitle();return this.assert(c(t,e),"expected title #{this} to match #{exp}, but it did not","expected title #{this} to not match #{exp}, but it did")});o("matchCurrentUrl",function(){var t,e;e=this._obj;t=casper.getCurrentUrl();return this.assert(c(e,t),"expected url #{exp} to match #{this}, but it did not","expected url #{exp} to not match #{this}, but it did")});o("textInDOM",function(){var t,e;e=this._obj;t=casper.evaluate(function(){return document.body.textContent||document.body.innerText});return this.assert(t.indexOf(e)!==-1,"expected text #{this} to be in the document, but it was not","expected text #{this} to not be in the document, but it was found")});r("textMatch",function(t){var e,i;e=this._obj;i=casper.fetchText(e);return this.assert(c(t,i),"expected '"+e+"' to match "+t+", but it did not","expected '"+e+"' to not match "+t+", but it did")});o("trueOnRemote",function(){var t,e,i;t=this._obj;e=u(t);i=casper.evaluate(e);return this.assert(i,"expected expression "+this._obj+" to be true, but it was "+i,"expected expression "+this._obj+" to not be true, but itw as "+i)});return o("visible",function(){var t;t=this._obj;expect(t).to.be.inDOM;return this.assert(casper.visible(t),"expected selector #{this} to be visible, but it was not","expected selector #{this} to not be, but it was")})};if(typeof require==="function"&&typeof exports==="object"&&typeof module==="object"){module.exports=t}else if(typeof define==="function"&&define.amd){define(function(){return t})}else{chai.use(t)}}).call(this); |
@@ -10,3 +10,3 @@ { | ||
], | ||
"version": "0.1.3", | ||
"version": "0.1.4", | ||
"author": "Brian M Hunt <brianmhunt@gmail.com>", | ||
@@ -29,3 +29,5 @@ "license": "MIT", | ||
}, | ||
"dependencies": {}, | ||
"dependencies": { | ||
"lodash": ">= 0.8" | ||
}, | ||
"devDependencies": { | ||
@@ -35,10 +37,7 @@ "icolor": "*", | ||
"glob": "*", | ||
"lodash": "*", | ||
"semver": "*", | ||
"coffee-script": ">= 1.3.3", | ||
"uglify-js2": "*", | ||
"jshint": ">= 0.9.1", | ||
"jquery": ">= 1.8.2", | ||
"underscore.string": ">= 2.3" | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
408393
7
7521
1
+ Addedlodash@>= 0.8
+ Addedlodash@4.17.21(transitive)