work.suroh.tk/node_modules/resolve-dependency-path/test/test.js

223 lines
6.1 KiB
JavaScript

var assert = require('assert');
var resolvePath = require('../');
var path = require('path');
describe('resolve-dependency-path', function() {
it('resolves with absolute paths', function() {
var resolved = resolvePath({
dependency: './bar',
filename: __dirname + '/foo.js',
directory: __dirname
});
assert(resolved.indexOf(__dirname) === 0);
});
it('resolves w/initial period, w/ending in .js', function() {
var depPath = './index';
var filename = __dirname + '/foo.js';
var directory = __dirname;
var resolved = resolvePath({
dependency: depPath,
filename,
directory
});
assert(resolved === __dirname + '/index.js');
});
it('resolves w/initial period, w/o ending in .js', function() {
var depPath = './index.js';
var filename = __dirname + '/foo.js';
var directory = __dirname;
var resolved = resolvePath({
dependency: depPath,
filename,
directory
});
assert(resolved === __dirname + '/index.js');
});
it('resolves w/o initial period, w/o ending in .js', function() {
var depPath = 'index';
var filename = __dirname + '/foo.js';
var directory = __dirname;
var resolved = resolvePath({
dependency: depPath,
filename,
directory
});
assert(resolved === __dirname + '/index.js');
});
it('resolves w/o initial period, w/ending in .js', function() {
var depPath = 'index.js';
var filename = __dirname + '/foo.js';
var directory = __dirname;
var resolved = resolvePath({
dependency: depPath,
filename,
directory
});
assert(resolved === __dirname + '/index.js');
});
it('resolves relative paths', function() {
var resolved = resolvePath({
dependency: './bar',
filename: __dirname + '/foo.js',
directory: __dirname
});
assert(resolved === __dirname + '/bar.js');
});
it('resolves non-relative paths', function() {
var filename = __dirname + '/feature1/foo.js';
var resolved = resolvePath({
dependency: 'feature2/bar',
filename,
directory: __dirname
});
assert(resolved === __dirname + '/feature2/bar.js');
});
it('throws if the dependency path is missing', function() {
assert.throws(function() {
resolvePath();
});
});
it('throws if the filename is missing', function() {
assert.throws(function() {
resolvePath({
dependency: './bar'
});
});
});
it('throws if the directory is missing', function() {
assert.throws(function() {
resolvePath({
dependency: './bar',
filename: __dirname + '/foo.js'
});
});
});
describe('multiple period filenames', function() {
it('resolves with multiple periods in the dependency path', function() {
var depPath = './bar.baz.qux';
var filename = __dirname + '/foo.js';
var directory = __dirname;
var resolved = resolvePath({
dependency: depPath,
filename,
directory
});
assert(resolved === __dirname + '/bar.baz.qux.js');
});
it('does not duplicate extensions', function() {
var depPath = '../index.js';
var filename = __dirname + '/foo.js';
var directory = __dirname;
var resolved = resolvePath({
dependency: depPath,
filename,
directory
});
// Extension after removing the .js extension
var remainingExt = path.extname(path.basename(resolved, '.js'));
assert.equal(remainingExt, '');
});
it('does not add the incorrect extension for sass files', function() {
var depPath = 'styles';
var filename = __dirname + '/foo.scss';
var directory = __dirname;
var resolved = resolvePath({
dependency: depPath,
filename,
directory
});
assert.equal(path.extname(resolved), '.scss');
});
it('does not add the incorrect extension for mustache files', function() {
var depPath = 'hgn!templates/foo.mustache';
var filename = __dirname + '/foo.js';
var directory = __dirname;
var resolved = resolvePath({
dependency: depPath,
filename,
directory
});
assert.equal(path.extname(resolved), '.mustache');
});
});
describe('implicit jspm/systemjs style plugins', function() {
it('resolve w/initial period', function() {
var depPath = './templates/file.css!';
var filename = __dirname + '/foo.js';
var directory = __dirname;
var resolved = resolvePath({
dependency: depPath,
filename,
directory
});
assert.equal(path.extname(resolved), '.css');
});
it('resolve w/o initial period', function() {
var depPath = 'templates/file.css!';
var filename = __dirname + '/foo.js';
var directory = __dirname;
var resolved = resolvePath({
dependency: depPath,
filename,
directory
});
assert.equal(path.extname(resolved), '.css');
});
});
describe('explicit jspm/systemjs style plugins', function() {
it('resolve w/initial period', function() {
var depPath = './templates/file.txt!text';
var filename = __dirname + '/foo.js';
var directory = __dirname;
var resolved = resolvePath({
dependency: depPath,
filename,
directory
});
assert.equal(path.extname(resolved), '.txt');
});
it('resolve w/o initial period', function() {
var depPath = 'templates/file.txt!text';
var filename = __dirname + '/foo.js';
var directory = __dirname;
var resolved = resolvePath({
dependency: depPath,
filename,
directory
});
assert.equal(path.extname(resolved), '.txt');
});
});
describe('webpack support', function() {
it.skip('resolves properly', function() {
var depPath = './styles/foo.css';
var filename = __dirname + '/foo.js';
var directory = __dirname;
var resolved = resolvePath({
dependency: depPath,
filename,
directory
});
assert.equal(path.extname(resolved), '.css');
});
});
});