describe('one-time', function () { 'use strict'; var assume = require('assume') , one = require('./'); it('is exported as a function', function () { assume(one).is.a('function'); }); it('only calls the supplied function once', function (next) { next = one(next); next(); next(); next(); next(); }); it('returns the same value as the called function every single time', function () { var foo = one(function () { return 'bar'; }); assume(foo()).equals('bar'); assume(foo()).equals('bar'); assume(foo()).equals('bar'); assume(foo()).equals('bar'); assume(foo()).equals('bar'); assume(foo()).equals('bar'); assume(foo()).equals('bar'); assume(foo()).equals('bar'); assume(foo()).equals('bar'); assume(foo()).equals('bar'); assume(foo()).equals('bar'); }); it('the returned function uses the same displayName as the given fn', function () { var foo = one(function banana() { return 'bar'; }); assume(foo.displayName).equals('banana'); }); });