Skip to content

Commit

Permalink
Now assumes formatter is a function that takes context and returns fo…
Browse files Browse the repository at this point in the history
…rmatted string.
  • Loading branch information
twada committed Dec 22, 2013
1 parent f296461 commit 9f6240a
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 48 deletions.
19 changes: 9 additions & 10 deletions lib/empower.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
function defaultOptions () {
return {
destructive: false,
lineSeparator: '\n',
targetMethods: {
oneArg: [
'ok'
Expand All @@ -51,7 +50,7 @@
/**
* Enhance Power Assert feature to assert function/object.
* @param assert target assert function or object to enhance
* @param formatter power assert formatter object
* @param formatter power assert format function
* @param options enhancement options
* @return enhanced assert function/object
*/
Expand Down Expand Up @@ -121,12 +120,12 @@

config.targetMethods.oneArg.forEach(function (methodName) {
if (typeof target[methodName] === 'function') {
enhancement[methodName] = decorateOneArg(bind(target[methodName], target), formatter, config);
enhancement[methodName] = decorateOneArg(bind(target[methodName], target), formatter);
}
});
config.targetMethods.twoArgs.forEach(function (methodName) {
if (typeof target[methodName] === 'function') {
enhancement[methodName] = decorateTwoArgs(bind(target[methodName], target), formatter, config);
enhancement[methodName] = decorateTwoArgs(bind(target[methodName], target), formatter);
}
});

Expand All @@ -141,19 +140,19 @@
}


function decorateOneArg (baseAssert, formatter, config) {
function decorateOneArg (baseAssert, formatter) {
return function (value, message) {
var context;
if (! isEspoweredValue(value)) {
return baseAssert(value, message);
}
context = value.powerAssertContext;
return baseAssert(context.value, buildPowerAssertText(message, context, formatter, config));
return baseAssert(context.value, buildPowerAssertText(message, context, formatter));
};
}


function decorateTwoArgs (baseAssert, formatter, config) {
function decorateTwoArgs (baseAssert, formatter) {
return function (arg1, arg2, message) {
var context, val1, val2;
if (!(isEspoweredValue(arg1) || isEspoweredValue(arg2))) {
Expand All @@ -178,13 +177,13 @@
val2 = arg2;
}

return baseAssert(val1, val2, buildPowerAssertText(message, context, formatter, config));
return baseAssert(val1, val2, buildPowerAssertText(message, context, formatter));
};
}


function buildPowerAssertText (message, context, formatter, config) {
var powerAssertText = formatter.format(context).join(config.lineSeparator);
function buildPowerAssertText (message, context, formatter) {
var powerAssertText = formatter(context);
return message ? message + ' ' + powerAssertText : powerAssertText;
}

Expand Down
12 changes: 5 additions & 7 deletions test/empower_option_test.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
var empower = require('../lib/empower'),
assert = require('assert'),
fakeFormatter = {
format: function (context) {
return [
context.location.path,
context.content
];
}
fakeFormatter = function (context) {
return [
context.location.path,
context.content
].join('\n');
};


Expand Down
36 changes: 5 additions & 31 deletions test/empower_test.js
Original file line number Diff line number Diff line change
@@ -1,39 +1,13 @@
var empower = require('../lib/empower'),
weave = require('../test_helper').weave,
fakeFormatter = {
format: function (context) {
return [
context.location.path,
context.content
];
}
fakeFormatter = function (context) {
return [
context.location.path,
context.content
].join('\n');
};


suite('lineSeparator option', function () {
function lineSeparatorTest (name, option, expectedSeparator) {
var baseAssert = require('assert'),
assert = empower(baseAssert, fakeFormatter, option);
test(name, function () {
var falsyNum = 0;
try {
eval(weave('assert(falsyNum);'));
} catch (e) {
baseAssert.equal(e.name, 'AssertionError');
baseAssert.equal(e.message, [
'/path/to/some_test.js',
'assert(falsyNum);'
].join(expectedSeparator));
}
});
}
lineSeparatorTest('default is LF', {}, '\n');
lineSeparatorTest('LF', {lineSeparator: '\n'}, '\n');
lineSeparatorTest('CR', {lineSeparator: '\r'}, '\r');
lineSeparatorTest('CRLF', {lineSeparator: '\r\n'}, '\r\n');
});


suite('assertion method with two arguments', function () {
var baseAssert = require('assert'),
assert = empower(baseAssert, fakeFormatter);
Expand Down

0 comments on commit 9f6240a

Please sign in to comment.