node-onesky-utils
Version:
Node.js utils for working with OneSky translation service. Original package from @brainly/onesky-utils
101 lines (86 loc) • 4.2 kB
JavaScript
;
const oneskyUtils = require('../index.js');
describe('node-onesky-utils', function() {
describe('module exports', function() {
it('should export all expected functions', function() {
expect(oneskyUtils).to.be.an('object');
expect(oneskyUtils).to.have.property('getFile');
expect(oneskyUtils).to.have.property('getFiles');
expect(oneskyUtils).to.have.property('getMultilingualFile');
expect(oneskyUtils).to.have.property('postFile');
expect(oneskyUtils).to.have.property('postScreenshot');
expect(oneskyUtils).to.have.property('getLanguages');
});
it('should export functions that are callable', function() {
expect(oneskyUtils.getFile).to.be.a('function');
expect(oneskyUtils.getFiles).to.be.a('function');
expect(oneskyUtils.getMultilingualFile).to.be.a('function');
expect(oneskyUtils.postFile).to.be.a('function');
expect(oneskyUtils.postScreenshot).to.be.a('function');
expect(oneskyUtils.getLanguages).to.be.a('function');
});
it('should set up global rootRequire function', function() {
expect(global.rootRequire).to.be.a('function');
});
it('should load modules correctly via rootRequire', function() {
const globals = global.rootRequire('lib/globals.js');
const privateFunctions = global.rootRequire('lib/privateFunctions.js');
expect(globals).to.be.an('object');
expect(globals.apiAddress).to.equal('https://platform.api.onesky.io');
expect(privateFunctions).to.be.an('object');
expect(privateFunctions.getDevHash).to.be.a('function');
expect(privateFunctions.handleError).to.be.a('function');
expect(privateFunctions.makeRequest).to.be.a('function');
});
it('should match the functions loaded by index.js', function() {
const getFile = global.rootRequire('lib/getFile.js');
const getFiles = global.rootRequire('lib/getFiles.js');
const getMultilingualFile = global.rootRequire('lib/getMultilingualFile.js');
const postFile = global.rootRequire('lib/postFile.js');
const postScreenshot = global.rootRequire('lib/postScreenshot.js');
const getLanguages = global.rootRequire('lib/getLanguages.js');
expect(oneskyUtils.getFile).to.equal(getFile);
expect(oneskyUtils.getFiles).to.equal(getFiles);
expect(oneskyUtils.getMultilingualFile).to.equal(getMultilingualFile);
expect(oneskyUtils.postFile).to.equal(postFile);
expect(oneskyUtils.postScreenshot).to.equal(postScreenshot);
expect(oneskyUtils.getLanguages).to.equal(getLanguages);
});
it('should not export private functions', function() {
expect(oneskyUtils).to.not.have.property('privateFunctions');
expect(oneskyUtils).to.not.have.property('globals');
expect(oneskyUtils).to.not.have.property('getDevHash');
expect(oneskyUtils).to.not.have.property('handleError');
expect(oneskyUtils).to.not.have.property('makeRequest');
});
});
describe('API compatibility', function() {
it('should maintain consistent function signatures', function() {
// These functions should all accept an options object
const functions = [
oneskyUtils.getFile,
oneskyUtils.getFiles,
oneskyUtils.getMultilingualFile,
oneskyUtils.postFile,
oneskyUtils.postScreenshot,
oneskyUtils.getLanguages
];
functions.forEach(func => {
expect(func.length).to.equal(1); // Each function takes 1 parameter (options)
});
});
it('should be importable using different require styles', function() {
// Test CommonJS require
const utils1 = require('../index.js');
expect(utils1.getFile).to.be.a('function');
// Test destructured require
const { getFile, postFile } = require('../index.js');
expect(getFile).to.be.a('function');
expect(postFile).to.be.a('function');
// Test individual function require through rootRequire
const getFileDirect = global.rootRequire('lib/getFile.js');
expect(getFileDirect).to.be.a('function');
expect(getFileDirect).to.equal(utils1.getFile);
});
});
});