174 lines
4.7 KiB
JavaScript
174 lines
4.7 KiB
JavaScript
'use strict';
|
|
|
|
const assert = require('assert');
|
|
const mock = require('mock-fs');
|
|
const lookup = require('../');
|
|
|
|
describe('sass-lookup', function() {
|
|
beforeEach(function() {
|
|
mock({
|
|
example: {
|
|
'_foo.scss': 'body { color: purple; }',
|
|
'baz.scss': '@import "_foo";',
|
|
'styles.scss': '@import "_foo";\n@import "baz.scss";',
|
|
stylesUnderscore: '@import "foo";',
|
|
|
|
nested: {
|
|
'styles.scss': '@import "a/b/b3";\n@import "a/b/b2";',
|
|
a: {
|
|
'a.scss': '@import "../styles";',
|
|
b: {
|
|
'_b3.scss': '',
|
|
'b.scss': '@import "../../styles";\n@import "../a";',
|
|
'b2.scss': '@import "b";\n@import "b3";'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
afterEach(mock.restore);
|
|
|
|
it('throws if dependency is not supplied', function() {
|
|
assert.throws(() => lookup({
|
|
filename: 'example/baz.scss',
|
|
directory: 'example'
|
|
}));
|
|
});
|
|
|
|
it('throws if filename is not supplied', function() {
|
|
assert.throws(() => lookup({
|
|
dependency: '_foo',
|
|
directory: 'example'
|
|
}));
|
|
});
|
|
|
|
it('throws if directory is not supplied', function() {
|
|
assert.throws(() => lookup({
|
|
dependency: '_foo',
|
|
filename: 'example/baz.scss',
|
|
}));
|
|
});
|
|
|
|
it('handles partials with underscored files', function() {
|
|
assert.equal(lookup({
|
|
dependency: '_foo',
|
|
filename: 'example/baz.scss',
|
|
directory: 'example'
|
|
}),
|
|
process.cwd() + '/example/_foo.scss');
|
|
});
|
|
|
|
it('handles partials with an extension', function() {
|
|
assert.equal(lookup({
|
|
dependency: 'baz.scss',
|
|
filename: 'example/styles.scss',
|
|
directory: 'example'
|
|
}),
|
|
process.cwd() + '/example/baz.scss');
|
|
});
|
|
|
|
describe('deeply nested paths', function() {
|
|
it('handles underscored partials', function() {
|
|
assert.equal(lookup({
|
|
dependency: 'a/b/b3',
|
|
filename: 'example/nested/styles.scss',
|
|
directory: 'example'
|
|
}),
|
|
process.cwd() + '/example/nested/a/b/_b3.scss');
|
|
});
|
|
|
|
it('handles non-underscored partials', function() {
|
|
assert.equal(lookup({
|
|
dependency: 'a/b/b2',
|
|
filename: 'example/nested/styles.scss',
|
|
directory: 'example'
|
|
}),
|
|
process.cwd() + '/example/nested/a/b/b2.scss');
|
|
});
|
|
});
|
|
|
|
describe('relative partials', function() {
|
|
it('handles one level up', function() {
|
|
assert.equal(lookup({
|
|
dependency: '../a',
|
|
filename: 'example/nested/a/b/b.scss',
|
|
directory: 'example'
|
|
}),
|
|
process.cwd() + '/example/nested/a/a.scss');
|
|
});
|
|
|
|
it('handles more than one level up', function() {
|
|
assert.equal(lookup({
|
|
dependency: '../../styles',
|
|
filename: 'example/nested/a/b/b.scss',
|
|
directory: 'example'
|
|
}),
|
|
process.cwd() + '/example/nested/styles.scss');
|
|
});
|
|
});
|
|
|
|
describe('partials within the same subdirectory', function() {
|
|
it('handles non-underscored partials', function() {
|
|
assert.equal(lookup({
|
|
dependency: 'b',
|
|
filename: 'example/nested/a/b/b2.scss',
|
|
directory: 'example'
|
|
}),
|
|
process.cwd() + '/example/nested/a/b/b.scss');
|
|
});
|
|
|
|
it('handles underscored partials', function() {
|
|
assert.equal(lookup({
|
|
dependency: 'b3',
|
|
filename: 'example/nested/a/b/b2.scss',
|
|
directory: 'example'
|
|
}),
|
|
process.cwd() + '/example/nested/a/b/_b3.scss');
|
|
});
|
|
});
|
|
|
|
describe('multiple directories', function() {
|
|
it('handles partials in middle directory', function() {
|
|
var directories = ['example', 'example/nested/a/b', 'example/a'];
|
|
assert.equal(lookup({
|
|
dependency: 'b',
|
|
filename: 'b2.scss',
|
|
directory: directories,
|
|
}),
|
|
process.cwd() + '/example/nested/a/b/b.scss');
|
|
});
|
|
|
|
it('partial in last directory of list', function() {
|
|
var directories = ['example', 'example/nested/a/b'];
|
|
assert.equal(lookup({
|
|
dependency: 'b',
|
|
filename: 'b2.scss',
|
|
directory: directories,
|
|
}),
|
|
process.cwd() + '/example/nested/a/b/b.scss');
|
|
});
|
|
|
|
it('non-partial in last directory when given list', function() {
|
|
var directories = ['example', 'example/nested/a/b'];
|
|
assert.equal(lookup({
|
|
dependency: 'b2',
|
|
filename: 'b3.scss',
|
|
directory: directories,
|
|
}),
|
|
process.cwd() + '/example/nested/a/b/b2.scss');
|
|
});
|
|
|
|
it('handles underscored partials', function() {
|
|
var directories = ['example', 'example/nested/a/b'];
|
|
assert.equal(lookup({
|
|
dependency: 'b2',
|
|
filename: 'b3.scss',
|
|
directory: directories
|
|
}),
|
|
process.cwd() + '/example/nested/a/b/b2.scss');
|
|
});
|
|
});
|
|
});
|