summaryrefslogtreecommitdiffstats
path: root/test/assertions.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/assertions.js')
-rw-r--r--test/assertions.js26
1 files changed, 26 insertions, 0 deletions
diff --git a/test/assertions.js b/test/assertions.js
index a1c2eb9..23feaf6 100644
--- a/test/assertions.js
+++ b/test/assertions.js
@@ -1,6 +1,8 @@
+var _ = require('lodash');
var fs = require('fs');
var path = require('path');
var should = require('should');
+var cheerio = require('cheerio');
should.Assertion.add('file', function(file, description) {
this.params = { operator: 'have file ' + file, message: description };
@@ -17,3 +19,27 @@ should.Assertion.add('jsonfile', function(file, description) {
this.obj.options.should.have.property('output').which.is.a.String;
this.assert(JSON.parse(fs.readFileSync(path.resolve(this.obj.options.output, file), { encoding: "utf-8" })));
});
+
+should.Assertion.add('html', function(query, validations, description) {
+ validations = _.defaults(validations || {}, {
+ count: 1,
+ attributes: {}
+ });
+
+
+ this.params = { actual: "HTML string", operator: 'valid html', message: description };
+
+ var $ = cheerio.load(this.obj);
+ var $el = $(query);
+
+ // Test number of elements
+ $el.should.have.lengthOf(validations.count);
+
+ // Test text
+ if (validations.text !== undefined) $el.text().should.be.equal(validations.text);
+
+ // Test attributes
+ _.each(validations.attributes, function(value, name) {
+ $el.attr(name).should.be.equal(value);
+ });
+});