chore(log): generic test log service with custom toEquals matcher

- any test that needs a logger can just inject provideLog
- logger has susict api that makes tests more readable
- custom toEquals matcher allows for pretty expectations
This commit is contained in:
Igor Minar 2011-12-15 01:10:09 -08:00
parent dbffbefb7c
commit ed78f0d830
2 changed files with 41 additions and 0 deletions

View file

@ -36,6 +36,15 @@ beforeEach(function() {
toBeDirty: cssMatcher('ng-dirty', 'ng-pristine'),
toBePristine: cssMatcher('ng-pristine', 'ng-dirty'),
toEqual: function(expected) {
if (this.actual && this.actual.$$log) {
this.actual = (typeof expected === 'string')
? this.actual.toString()
: this.actual.toArray();
}
return jasmine.Matchers.prototype.toEqual.call(this, expected);
},
toEqualData: function(expected) {
return angular.equals(this.actual, expected);
},

View file

@ -185,3 +185,35 @@ function assertVisible(node) {
}
}
function provideLog($provide) {
$provide.factory('log', function() {
var messages = [];
function log(msg) {
messages.push(msg);
return msg;
}
log.toString = function() {
return messages.join('; ');
}
log.toArray = function() {
return messages;
}
log.reset = function() {
messages = [];
}
log.fn = function(msg) {
return function() {
log(msg);
}
}
log.$$log = true;
return log;
});
}