yaml-js-include
Version:
Extension for yaml-js library to be able to include files/directories in yaml files
110 lines (84 loc) • 3.68 kB
text/typescript
import { YamlInclude } from '..';
describe('Directory include', () => {
beforeEach(() => {
process.chdir(__dirname);
});
it('Includes basic directory', () => {
const yi = new YamlInclude();
const actual = yi.load<any>('fixtures/basics/directory.yaml');
expect(Object.keys(actual.pages).length).toBe(4);
expect(actual.pages.first.name).toBe('first');
expect(actual.pages.second.name).toBe('second');
expect(actual.pages.fourth.name).toBe('fourth');
expect(actual.pages.$sixth.name).toBe('sixth');
});
it('Includes directory with file ref', () => {
const yi = new YamlInclude();
const actual = yi.load<any>('fixtures/basics/directory.pages.yaml');
expect(Object.keys(actual.pages).length).toBe(1);
expect(actual.pages.third.name).toBe('third');
expect(actual.pages.third.values.type).toBe('Help');
expect(actual.pages.third.values.value).toBe('Wanted');
});
it('Includes files directly if first argument is array', () => {
const yi = new YamlInclude();
const actual = yi.load<any>(
'fixtures/basics/extra/directoryFirstArgumentArray.yaml',
);
expect(Object.keys(actual.pages).length).toBe(1);
expect(actual.pages['first.page'].name).toBe('first');
});
['_fifth', '_fifth.page.yaml'].forEach((file) => {
it(`Includes files as ${file}`, () => {
const yi = new YamlInclude({ include: [file] });
const actual = yi.load<any>('fixtures/basics/directory.yaml');
expect(actual.pages._fifth.name).toBe('fifth');
});
});
it('Ignores files with prefix', () => {
const yi = new YamlInclude({ ignoreIndicator: '$' });
const actual = yi.load<any>('fixtures/basics/directory.yaml');
expect(actual.pages._fifth.name).toBe('fifth');
expect(actual.pages.$sixth).toBeUndefined();
});
['$sixth', '$sixth.page.yaml'].forEach((file) => {
it(`Excludes files as ${file}`, () => {
const yi = new YamlInclude({ exclude: [file] });
const actual = yi.load<any>('fixtures/basics/directory.yaml');
expect(actual.pages.$sixth).toBeUndefined();
});
});
it("Doesn't lowers key names", () => {
const yi = new YamlInclude({ lowerKeys: false });
const actual = yi.load<any>('fixtures/basics/directory.paging.yaml');
expect(actual.pages.CapitalNaming.name).toBe('Capital');
});
it('Lowers key names', () => {
const yi = new YamlInclude({ lowerKeys: true });
const actual = yi.load<any>('fixtures/basics/directory.paging.yaml');
expect(actual.pages.capitalnaming.name).toBe('Capital');
});
it('Allows empty recursive', () => {
const yi = new YamlInclude({ allowEmpty: true });
const actual = yi.load<any>('fixtures/basics/directory.yaml');
expect(actual.pages.recursive.empty).toBeDefined();
});
it('Does not ignores dir structure', () => {
const yi = new YamlInclude({ ignoreDirStructure: false });
const actual = yi.load<any>('fixtures/basics/directory.yaml');
expect(actual.pages.recursive.fourth).toBeDefined();
});
it('Allows empty non-recursive', () => {
const yi = new YamlInclude({ allowEmpty: true, recursive: false });
const actual = yi.load<any>('fixtures/basics/directory.yaml');
expect(actual.pages.empty).toBeDefined();
});
it('Includes basic directory not recursive', () => {
const yi = new YamlInclude({ recursive: false });
const actual = yi.load<any>('fixtures/basics/directory.yaml');
expect(Object.keys(actual.pages).length).toBe(3);
expect(actual.pages.first.name).toBe('first');
expect(actual.pages.second.name).toBe('second');
expect(actual.pages.$sixth.name).toBe('sixth');
});
});