UNPKG

rachnerd-test-plugin

Version:

Workaround for NativeScript to run unit tests located in source code (Angular style guide)

98 lines (94 loc) 4.52 kB
const expect = require('chai').expect; const utils = require('./../lib/utils'); /** * This modifier targets generated js files. */ describe('ModifyRequires input', () => { const appDir = '/home/me/workspace/project/app'; const relativeRequireFileModifier = relativeRequireFileModifierFactory(appDir); const filePath = appDir + '/some/directory/deep/file.js'; it('should not change if no requires are found', () => { let fileContent = 'Some text or code'; let output = relativeRequireFileModifier(fileContent, filePath); expect(output).to.equal(fileContent); }); it('should not change if no relative requires are found', () => { let fileContent = 'Some text or code require("someLib"); plus some other stuff'; let output = relativeRequireFileModifier(fileContent, filePath); expect(output).to.equal(fileContent); }); it('should not change if the path is relative to the app prefixed with ~', () => { let fileContent = 'Some text or code require("~/someLib"); plus some other stuff'; let output = relativeRequireFileModifier(fileContent, filePath); expect(output).to.equal(fileContent); }); it('should not change if a relative path is not passed to a require statement', () => { let fileContent = 'Some text or code require("~/someLib"); plus some other stuff'; let output = relativeRequireFileModifier(fileContent, filePath); expect(output).to.equal(fileContent); }); it('should change sibling paths', () => { let fileContent = 'require("./lib");'; let output = relativeRequireFileModifier(fileContent, filePath); let expectedOutput = 'require("~/some/directory/deep/lib");'; expect(output).to.equal(expectedOutput); }); it('should change child paths', () => { let fileContent = 'require("./child/lib");'; let output = relativeRequireFileModifier(fileContent, filePath); let expectedOutput = 'require("~/some/directory/deep/child/lib");'; expect(output).to.equal(expectedOutput); }); it('should change parent paths', () => { let fileContent = 'require("../lib");'; let output = relativeRequireFileModifier(fileContent, filePath); let expectedOutput = 'require("~/some/directory/lib");'; expect(output).to.equal(expectedOutput); }); it('should change double paths', () => { let fileContent = 'require("./lib"); require("./lib");'; let output = relativeRequireFileModifier(fileContent, filePath); let expectedOutput = 'require("~/some/directory/deep/lib"); require("~/some/directory/deep/lib");'; expect(output).to.equal(expectedOutput); }); it('should change all relative paths surrounded by other code', () => { let fileContent = ` Some random code; require("lib"); require("./lib"); require("../otherdirectory/lib"); require("../lib"); Some more code; `; let output = relativeRequireFileModifier(fileContent, filePath); let expectedOutput = ` Some random code; require("lib"); require("~/some/directory/deep/lib"); require("~/some/directory/otherdirectory/lib"); require("~/some/directory/lib"); Some more code; `; expect(output).to.equal(expectedOutput); }); it('should change all relative paths containing symbols', () => { let fileContent = ` Some random code; require("../lib-dir/lib.lib_lib/lib"); require("./lib-dir/lib.lib_lib/lib"); Some more code; `; let output = relativeRequireFileModifier(fileContent, filePath); let expectedOutput = ` Some random code; require("~/some/directory/lib-dir/lib.lib_lib/lib"); require("~/some/directory/deep/lib-dir/lib.lib_lib/lib"); Some more code; `; expect(output).to.equal(expectedOutput); }); it('should throw an error if the src file is located outside the app folder', () => { let fileContent = 'require("../../../../lib");'; expect(() => relativeRequireFileModifier(fileContent, filePath)).to.throw('Trying to resolve a path outside the app folder: /home/me/workspace/project/lib'); }); });