var path = require('path');
var test = require('tape');
var resolve = require('../');

test('#62: deep module references and the pathFilter', function (t) {
    t.plan(9);

    var resolverDir = path.join(__dirname, '/pathfilter/deep_ref');
    var pathFilter = function (pkg, x, remainder) {
        t.equal(pkg.version, '1.2.3');
        t.equal(x, path.join(resolverDir, 'node_modules/deep/ref'));
        t.equal(remainder, 'ref');
        return 'alt';
    };

    resolve('deep/ref', { basedir: resolverDir }, function (err, res, pkg) {
        if (err) t.fail(err);

        t.equal(pkg.version, '1.2.3');
        t.equal(res, path.join(resolverDir, 'node_modules/deep/ref.js'));
    });

    resolve(
        'deep/deeper/ref',
        { basedir: resolverDir },
        function (err, res, pkg) {
            if (err) t.fail(err);
            t.notEqual(pkg, undefined);
            t.equal(pkg.version, '1.2.3');
            t.equal(res, path.join(resolverDir, 'node_modules/deep/deeper/ref.js'));
        }
    );

    resolve(
        'deep/ref',
        { basedir: resolverDir, pathFilter: pathFilter },
        function (err, res, pkg) {
            if (err) t.fail(err);
            t.equal(res, path.join(resolverDir, 'node_modules/deep/alt.js'));
        }
    );
});
