gulp-fonter
Version:
Font subsetting and converting plugin for gulp
71 lines (59 loc) • 2.2 kB
text/typescript
const fonter = require('../index');
const fs = require('fs');
const VinylFile = require('vinyl');
const Font = require('fonteditor-core').Font;
describe('Integration tests', () => {
const fileDir = __dirname + '/Roboto-Regular.ttf';
const fakeFile = new VinylFile({
contents: fs.readFileSync(fileDir),
path: fileDir,
});
test('should match format extensions', done => {
let myFonter = fonter();
myFonter.write(fakeFile);
myFonter.once('data', function(file:any) {
// make sure it came out the same way it went in
expect(file.isBuffer());
expect(file.extname).toEqual('.ttf');
done();
});
});
test('should create 3 files', done => {
let fontFormats = ['ttf', 'woff', 'eot'];
let myFonter = fonter({ formats: fontFormats });
myFonter.write(fakeFile);
let onFile = jest.fn();
myFonter.on('data', (file:any) => {
// expect file matching filetypes
expect(fontFormats.includes(file.extname.substring(1)));
onFile();
});
myFonter.on('end', () => {
// expect to be created 3 files
expect(onFile).toBeCalledTimes(fontFormats.length);
done();
});
myFonter.end();
});
test('should cut out glyphs', done => {
let myStringSubset = 'abcdef';
let myFonter = fonter({ subset: myStringSubset });
myFonter.write(fakeFile);
myFonter.once('data', (file:any) => {
// Read font to get info
let font = Font.create(file.contents, {
type: 'ttf',
subset: myStringSubset
});
// Glyphs count should be equal
expect(Object.keys(font.data.cmap).length).toEqual(
myStringSubset.length
);
// Glyphs ascii codes should match
expect(Object.keys(font.data.cmap)).toEqual(
myStringSubset.split('').map(l => l.charCodeAt(0).toString())
);
done();
});
});
});