mobile-cli-lib
Version:
common lib used by different CLI
98 lines (97 loc) • 5.79 kB
JavaScript
;
var yok_1 = require("../../yok");
var xcode_select_service_1 = require("../../services/xcode-select-service");
var chai_1 = require("chai");
var path = require("path");
var Future = require("fibers/future");
var executionStopped = false;
function createTestInjector(config) {
var testInjector = new yok_1.Yok();
testInjector.register("childProcess", {
spawnFromEvent: function (command, args, event) { return Future.fromResult({
stdout: config.xcodeSelectStdout
}); }
});
testInjector.register("sysInfoBase", {
getSysInfo: function (pathToPackageJson, androidToolsInfo) {
return Future.fromResult({
xcodeVer: config.xcodeVersionOutput
});
},
getXCodeVersion: function () {
return Future.fromResult(config.xcodeVersionOutput);
}
});
testInjector.register("errors", {
failWithoutHelp: function (message) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
executionStopped = true;
}
});
testInjector.register("hostInfo", {
isDarwin: config.isDarwin
});
testInjector.register("xcodeSelectService", xcode_select_service_1.XcodeSelectService);
return testInjector;
}
describe("xcode-select-service", function () {
var injector, service, defaultXcodeSelectStdout = "/Applications/Xcode.app/Contents/Developer/";
beforeEach(function () {
executionStopped = false;
});
it("gets correct path to Developer directory on Mac OS X whitout whitespaces", function () {
injector = createTestInjector({ xcodeSelectStdout: " /Applications/Xcode.app/Contents/Developer/ ", isDarwin: true });
service = injector.resolve("$xcodeSelectService");
chai_1.assert.deepEqual(service.getDeveloperDirectoryPath().wait(), defaultXcodeSelectStdout, "xcode-select service should get correct trimmed path to Developer directory on Mac OS X.");
});
it("gets correct path to Developer directory on Mac OS X whitout new lines", function () {
injector = createTestInjector({ xcodeSelectStdout: "\r\n/Applications/Xcode.app/Contents/Developer/\n", isDarwin: true });
service = injector.resolve("$xcodeSelectService");
chai_1.assert.deepEqual(service.getDeveloperDirectoryPath().wait(), defaultXcodeSelectStdout, "xcode-select service should get correct trimmed path to Developer directory on Mac OS X.");
});
it("gets correct Xcode version", function () {
injector = createTestInjector({ xcodeSelectStdout: null, isDarwin: true, xcodeVersionOutput: "Xcode 7.3\nBuild version 7D175" });
service = injector.resolve("$xcodeSelectService");
var xcodeVersion = service.getXcodeVersion().wait();
chai_1.assert.strictEqual(xcodeVersion.major, "7", "xcodeSelectService should get correct Xcode version");
chai_1.assert.strictEqual(xcodeVersion.minor, "3", "xcodeSelectService should get correct Xcode version");
});
it("gets correct path to Developer directory on Mac OS X", function () {
injector = createTestInjector({ xcodeSelectStdout: defaultXcodeSelectStdout, isDarwin: true });
service = injector.resolve("$xcodeSelectService");
chai_1.assert.deepEqual(service.getDeveloperDirectoryPath().wait(), defaultXcodeSelectStdout, "xcode-select service should get correct path to Developer directory on Mac OS X.");
});
it("gets correct path to Contents directory on Mac OS X", function () {
var expected = path.join("/Applications", "Xcode.app", "Contents");
injector = createTestInjector({ xcodeSelectStdout: defaultXcodeSelectStdout, isDarwin: true });
service = injector.resolve("$xcodeSelectService");
chai_1.assert.deepEqual(service.getContentsDirectoryPath().wait(), expected, "xcode-select service should get correct path to Contents directory on Mac OS X.");
});
it("stops execution when trying to get Developer directory if not on Mac OS X", function () {
injector = createTestInjector({ xcodeSelectStdout: defaultXcodeSelectStdout, isDarwin: false });
service = injector.resolve("$xcodeSelectService");
service.getDeveloperDirectoryPath().wait();
chai_1.assert.deepEqual(executionStopped, true, "xcode-select service should stop executon unless on Mac OS X.");
});
it("stops execution when trying to get Contents directory if not on Mac OS X", function () {
injector = createTestInjector({ xcodeSelectStdout: defaultXcodeSelectStdout, isDarwin: false });
service = injector.resolve("$xcodeSelectService");
service.getContentsDirectoryPath().wait();
chai_1.assert.deepEqual(executionStopped, true, "xcode-select service should stop executon unless on Mac OS X.");
});
it("stops execution when Developer directory is empty on Mac OS X", function () {
injector = createTestInjector({ xcodeSelectStdout: "", isDarwin: true });
service = injector.resolve("$xcodeSelectService");
service.getDeveloperDirectoryPath().wait();
chai_1.assert.deepEqual(executionStopped, true, "xcode-select service should stop executon when Developer directory is empty on Mac OS X.");
});
it("stops execution when Contents directory is empty on Mac OS X", function () {
injector = createTestInjector({ xcodeSelectStdout: "", isDarwin: true });
service = injector.resolve("$xcodeSelectService");
service.getContentsDirectoryPath().wait();
chai_1.assert.deepEqual(executionStopped, true, "xcode-select service should stop executon when Contents directory is empty on Mac OS X.");
});
});