UNPKG

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
'use strict'; 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); }); }); });