Fix tests

This commit is contained in:
Gaël Métais
2014-11-28 17:22:32 +01:00
parent 1f83fe1b48
commit 2a316ebb1e
10 changed files with 117 additions and 94 deletions
+5 -3
View File
@@ -49,8 +49,10 @@ module.exports = function(grunt) {
},
copy: {
coverage: {
src: ['test/**'],
dest: 'coverage/'
files: [
{src: ['test/**'], dest: 'coverage/'},
{src: ['lib/metadata/**'], dest: 'coverage/'}
]
}
},
blanket: {
@@ -74,7 +76,7 @@ module.exports = function(grunt) {
options: {
reporter: 'spec',
},
src: ['coverage/test/api/rulesCheckerTest.js']
src: ['coverage/test/api/yellowlabtoolsTest.js']
},
coverage: {
options: {
+1 -1
View File
@@ -23,7 +23,7 @@ var url = process.argv[2];
then(function(data) {
console.log('Success');
console.log(JSON.stringify(data.rules, null, 2));
console.log(JSON.stringify(data, null, 2));
}).fail(function(err) {
+2 -6
View File
@@ -4,7 +4,6 @@ var RulesChecker = function() {
'use strict';
this.check = function(data, policies) {
var deferred = Q.defer();
var results = {};
var err = null;
@@ -24,7 +23,7 @@ var RulesChecker = function() {
if (data.toolsResults[policy.tool].offenders &&
data.toolsResults[policy.tool].offenders[metricName] &&
data.toolsResults[policy.tool].offenders[metricName].length > 0) {
//rule.offenders = data.toolsResults[policy.tool].offenders[metricName];
rule.offenders = data.toolsResults[policy.tool].offenders[metricName];
}
rule.bad = rule.value > policy.isOkThreshold;
@@ -42,10 +41,7 @@ var RulesChecker = function() {
}
}
data.rules = results;
deferred.resolve(data);
return deferred.promise;
return results;
};
};
+17 -13
View File
@@ -6,6 +6,8 @@ var rulesChecker = require('./rulesChecker');
var Runner = function(params) {
'use strict';
var deferred = Q.defer();
// The pivot format
var data = {
params: params,
@@ -13,26 +15,28 @@ var Runner = function(params) {
};
// Execute Phantomas first
var run = phantomasWrapper.execute(data);
phantomasWrapper.execute(data).then(function(phantomasResults) {
data.toolsResults.phantomas = phantomasResults;
// Other tools go here
// Other tools go there
// Read each policy and save the results
run.then(function() {
// Rules checker
var policies = require('./metadata/policies.json');
return rulesChecker.check(data, policies);
data.rules = rulesChecker.check(data, policies);
deferred.resolve(data);
}).fail(function(err) {
console.log('Run failed');
console.log(err);
deferred.reject(err);
});
// TODO : error handler
/*run.catch(function(err) {
console.log('The run failed');
console.log(err);
});*/
run.done(data);
return run;
return deferred.promise;
};
module.exports = Runner;
+3 -2
View File
@@ -97,8 +97,9 @@ var PhantomasWrapper = function() {
console.log('All ' + triesNumber + ' attemps failed for the test');
deferred.reject(err);
} else {
data.toolsResults.phantomas = json;
deferred.resolve(data);
// Success!!!
deferred.resolve(json);
}
});
-1
View File
@@ -30,7 +30,6 @@ var YellowLabTools = function(url, options) {
var runner = new Runner(params);
runner.then(function(data) {
console.log(data);
deferred.resolve(data);
});
}
+31 -24
View File
@@ -13,16 +13,19 @@ describe('phantomasWrapper', function() {
this.timeout(15000);
phantomasWrapper.execute({
url: url,
options: {}
}).then(function(json) {
json.should.be.an('object');
json.should.have.a.property('generator');
json.generator.should.contain('phantomas');
json.should.have.a.property('url').that.equals(url);
json.should.have.a.property('metrics').that.is.an('object').not.empty;
json.should.have.a.property('offenders').that.is.an('object').not.empty;
json.offenders.should.have.a.property('javascriptExecutionTree').that.is.a('array').not.empty;
params: {
url: url,
options: {}
}
}).then(function(data) {
data.should.be.an('object');
data.should.have.a.property('generator');
data.generator.should.contain('phantomas');
data.should.have.a.property('url').that.equals(url);
data.should.have.a.property('metrics').that.is.an('object').not.empty;
data.should.have.a.property('offenders').that.is.an('object').not.empty;
data.offenders.should.have.a.property('javascriptExecutionTree').that.is.a('array').not.empty;
done();
}).fail(function(err) {
@@ -36,9 +39,11 @@ describe('phantomasWrapper', function() {
this.timeout(15000);
phantomasWrapper.execute({
url: url,
options: {}
}).then(function(json) {
params: {
url: url,
options: {}
}
}).then(function(data) {
done('Error: unwanted success');
@@ -56,19 +61,21 @@ describe('phantomasWrapper', function() {
this.timeout(5000);
phantomasWrapper.execute({
url: url,
options: {
timeout: 1
params: {
url: url,
options: {
timeout: 1
}
}
}).then(function(json) {
}).then(function(data) {
json.should.be.an('object');
json.should.have.a.property('generator');
json.generator.should.contain('phantomas');
json.should.have.a.property('url').that.equals(url);
json.should.have.a.property('metrics').that.is.an('object').not.empty;
json.should.have.a.property('offenders').that.is.an('object').not.empty;
json.offenders.should.have.a.property('javascriptExecutionTree').that.is.a('array').not.empty;
data.should.be.an('object');
data.should.have.a.property('generator');
data.generator.should.contain('phantomas');
data.should.have.a.property('url').that.equals(url);
data.should.have.a.property('metrics').that.is.an('object').not.empty;
data.should.have.a.property('offenders').that.is.an('object').not.empty;
data.offenders.should.have.a.property('javascriptExecutionTree').that.is.a('array').not.empty;
done();
}).fail(function(err) {
+3 -15
View File
@@ -7,24 +7,12 @@ describe('rulesChecker', function() {
rulesChecker.should.have.property('check').that.is.a('function');
});
it('should produce a nice rules object', function(done) {
it('should produce a nice rules object', function() {
var data = require('../fixtures/rulesCheckerInput.json');
var policies = require('../fixtures/rulesCheckerPolicies.json');
var expected = require('../fixtures/rulesCheckerOutput.json');
var checker = rulesChecker.check(data, policies);
checker.then(function(results) {
try {
results.should.deep.equals(expected);
done();
} catch(e) {
done(e);
}
});
checker.fail(function(err) {
done(err);
});
var results = rulesChecker.check(data, policies);
results.should.deep.equals(expected);
});
});
+33 -9
View File
@@ -32,16 +32,40 @@ describe('yellowlabtools', function() {
var ylt = new YellowLabTools(url)
.then(function(data) {
data.should.be.an('object');
data.should.have.a.property('url').that.equals(url);
data.should.have.a.property('metrics').that.is.an('object');
data.metrics.should.have.a.property('requests').that.equals(1);
data.should.have.a.property('offenders').that.is.an('object');
data.offenders.should.have.a.property('DOMelementMaxDepth');
data.offenders.DOMelementMaxDepth.should.have.length(1);
data.offenders.DOMelementMaxDepth[0].should.equal('body > h1[1]');
data.should.be.an('object');
data.toolsResults.should.be.an('object');
// Test Phantomas
data.toolsResults.phantomas.should.be.an('object');
data.toolsResults.phantomas.should.have.a.property('url').that.equals(url);
data.toolsResults.phantomas.should.have.a.property('metrics').that.is.an('object');
data.toolsResults.phantomas.metrics.should.have.a.property('requests').that.equals(1);
data.toolsResults.phantomas.should.have.a.property('offenders').that.is.an('object');
data.toolsResults.phantomas.offenders.should.have.a.property('DOMelementMaxDepth');
data.toolsResults.phantomas.offenders.DOMelementMaxDepth.should.have.length(1);
data.toolsResults.phantomas.offenders.DOMelementMaxDepth[0].should.equal('body > h1[1]');
// Test rules
data.should.have.a.property('rules').that.is.an('object');
data.rules.should.have.a.property('DOMelementMaxDepth').that.is.an('object');
data.rules.DOMelementMaxDepth.should.deep.equal({
policy: {
"tool": "phantomas",
"label": "DOM max depth",
"message": "<p>A deep DOM makes the CSS matching with DOM elements difficult.</p><p>It also slows down Javascript modifications to the DOM because changing the dimensions of an element makes the browser re-calculate the dimensions of it's parents. Same thing for Javascript events, that bubble up to the document root.</p>",
"isOkThreshold": 10,
"isBadThreshold": 20,
"isAbnormalThreshold": 30
},
"value": 1,
"bad": false,
"abnormal": false,
"score": 100,
"abnormalityScore": 0,
"offenders": ["body > h1[1]"]
});
done();
}).fail(function(err) {
+22 -20
View File
@@ -1,25 +1,27 @@
{
"tool1": {
"metrics": {
"metric1": 1236,
"metric2": 222,
"metric3": 6666,
"metric4": 1000,
"metric5": 3000,
"metric6": 0,
"metric7": 5000
"toolsResults": {
"tool1": {
"metrics": {
"metric1": 1236,
"metric2": 222,
"metric3": 6666,
"metric4": 1000,
"metric5": 3000,
"metric6": 0,
"metric7": 5000
},
"offenders": {
"metric1": [],
"metric2": [],
"metric3": ["offender1", "offender2"],
"metric5": []
}
},
"offenders": {
"metric1": [],
"metric2": [],
"metric3": ["offender1", "offender2"],
"metric5": []
}
},
"tool2": {
"metrics": {
"metric1": 22,
"metric10": 22
"tool2": {
"metrics": {
"metric1": 22,
"metric10": 22
}
}
}
}