UNPKG

appium-ios-simulator

Version:
259 lines (209 loc) 19.2 kB
require('source-map-support').install(); 'use strict'; var _slicedToArray = require('babel-runtime/helpers/sliced-to-array')['default']; var _regeneratorRuntime = require('babel-runtime/regenerator')['default']; var _Promise = require('babel-runtime/core-js/promise')['default']; var _getIterator = require('babel-runtime/core-js/get-iterator')['default']; var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default']; var _this = this; var _libSimulatorXcode6 = require('../../lib/simulator-xcode-6'); var _libSimulatorXcode62 = _interopRequireDefault(_libSimulatorXcode6); var _libSimulatorXcode7 = require('../../lib/simulator-xcode-7'); var _libSimulatorXcode72 = _interopRequireDefault(_libSimulatorXcode7); var _chai = require('chai'); var _chai2 = _interopRequireDefault(_chai); var _chaiAsPromised = require('chai-as-promised'); var _chaiAsPromised2 = _interopRequireDefault(_chaiAsPromised); var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); var _sinon = require('sinon'); var _sinon2 = _interopRequireDefault(_sinon); var _appiumSupport = require('appium-support'); _chai2['default'].should(); _chai2['default'].use(_chaiAsPromised2['default']); var simulatorClasses = { 'SimulatorXcode6': _libSimulatorXcode62['default'], 'SimulatorXcode7': _libSimulatorXcode72['default'] }; var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { var _loop = function () { var _step$value = _slicedToArray(_step.value, 2); var name = _step$value[0]; var simClass = _step$value[1]; describe('common methods - ' + name, function () { var sim = undefined; beforeEach(function () { sim = new simClass('123', '6.0.0'); }); it('should exist', function () { simClass.should.exist; }); it('should return a path for getDir()', function () { sim.getDir().should.exist; }); it('should return an array for getAppDirs()', function callee$2$0() { var dirs; return _regeneratorRuntime.async(function callee$2$0$(context$3$0) { while (1) switch (context$3$0.prev = context$3$0.next) { case 0: _sinon2['default'].stub(sim, 'getAppDir').returns(_Promise.resolve(['/App/Path/'])); sim._platformVersion = 9.1; context$3$0.next = 4; return _regeneratorRuntime.awrap(sim.getAppDirs('test')); case 4: dirs = context$3$0.sent; dirs.should.have.length(2); dirs.should.be.a('array'); _sinon2['default'].restore(); case 8: case 'end': return context$3$0.stop(); } }, null, _this); }); describe('cleanCustomApp', function () { var sandbox = undefined; var appBundleId = 'com.some.app'; beforeEach(function () { sandbox = _sinon2['default'].sandbox.create(); sandbox.spy(_appiumSupport.fs, 'rimraf'); }); afterEach(function () { sandbox.restore(); }); it('should not delete anything if no directories are found', function callee$3$0() { return _regeneratorRuntime.async(function callee$3$0$(context$4$0) { while (1) switch (context$4$0.prev = context$4$0.next) { case 0: sandbox.stub(sim, 'getPlatformVersion').returns(_Promise.resolve(7.1)); sandbox.stub(sim, 'getAppDir').returns(_Promise.resolve()); context$4$0.next = 4; return _regeneratorRuntime.awrap(sim.cleanCustomApp('someApp', 'com.some.app')); case 4: _sinon2['default'].assert.notCalled(_appiumSupport.fs.rimraf); case 5: case 'end': return context$4$0.stop(); } }, null, _this); }); it('should delete app directories', function callee$3$0() { return _regeneratorRuntime.async(function callee$3$0$(context$4$0) { while (1) switch (context$4$0.prev = context$4$0.next) { case 0: sandbox.stub(sim, 'getPlatformVersion').returns(_Promise.resolve(7.1)); sandbox.stub(sim, 'getAppDirs').returns(_Promise.resolve(['/some/path', '/another/path'])); context$4$0.next = 4; return _regeneratorRuntime.awrap(sim.cleanCustomApp('someApp', 'com.some.app')); case 4: _sinon2['default'].assert.called(_appiumSupport.fs.rimraf); case 5: case 'end': return context$4$0.stop(); } }, null, _this); }); it('should delete plist file for iOS8+', function callee$3$0() { return _regeneratorRuntime.async(function callee$3$0$(context$4$0) { while (1) switch (context$4$0.prev = context$4$0.next) { case 0: sandbox.stub(sim, 'getPlatformVersion').returns(_Promise.resolve(9)); sandbox.stub(sim, 'getAppDirs').returns(_Promise.resolve(['/some/path', '/another/path'])); context$4$0.next = 4; return _regeneratorRuntime.awrap(sim.cleanCustomApp('someApp', appBundleId)); case 4: _sinon2['default'].assert.calledWithMatch(_appiumSupport.fs.rimraf, /plist/); case 5: case 'end': return context$4$0.stop(); } }, null, _this); }); it('should not delete plist file for iOS7.1', function callee$3$0() { return _regeneratorRuntime.async(function callee$3$0$(context$4$0) { while (1) switch (context$4$0.prev = context$4$0.next) { case 0: sandbox.stub(sim, 'getPlatformVersion').returns(_Promise.resolve(7.1)); sandbox.stub(sim, 'getAppDirs').returns(_Promise.resolve(['/some/path', '/another/path'])); context$4$0.next = 4; return _regeneratorRuntime.awrap(sim.cleanCustomApp('someApp', appBundleId)); case 4: _sinon2['default'].assert.neverCalledWithMatch(_appiumSupport.fs.rimraf, /plist/); case 5: case 'end': return context$4$0.stop(); } }, null, _this); }); }); it('should return a path for getLogDir', function () { process.env.HOME = __dirname; var logDir = sim.getLogDir(); logDir.should.equal(__dirname + '/Library/Logs/CoreSimulator/123'); }); describe('getPlatformVersion', function () { var statStub = undefined; var platformVersion = 8.9; beforeEach(function () { statStub = _sinon2['default'].stub(sim, 'stat').returns({ sdk: platformVersion }); }); afterEach(function () { statStub.restore(); }); it('should get the correct platform version', function callee$3$0() { var pv; return _regeneratorRuntime.async(function callee$3$0$(context$4$0) { while (1) switch (context$4$0.prev = context$4$0.next) { case 0: context$4$0.next = 2; return _regeneratorRuntime.awrap(sim.getPlatformVersion()); case 2: pv = context$4$0.sent; pv.should.equal(platformVersion); case 4: case 'end': return context$4$0.stop(); } }, null, _this); }); it('should only call stat once', function callee$3$0() { var pv; return _regeneratorRuntime.async(function callee$3$0$(context$4$0) { while (1) switch (context$4$0.prev = context$4$0.next) { case 0: context$4$0.next = 2; return _regeneratorRuntime.awrap(sim.getPlatformVersion()); case 2: pv = context$4$0.sent; pv.should.equal(platformVersion); statStub.calledOnce.should.be['true']; case 5: case 'end': return context$4$0.stop(); } }, null, _this); }); }); }); }; for (var _iterator = _getIterator(_lodash2['default'].pairs(simulatorClasses)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { _loop(); } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator['return']) { _iterator['return'](); } } finally { if (_didIteratorError) { throw _iteratorError; } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvdW5pdC9zaW11bGF0b3ItY29tbW9uLXNwZWNzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7a0NBRTRCLDZCQUE2Qjs7OztrQ0FDN0IsNkJBQTZCOzs7O29CQUN4QyxNQUFNOzs7OzhCQUNJLGtCQUFrQjs7OztzQkFDL0IsUUFBUTs7OztxQkFDSixPQUFPOzs7OzZCQUNOLGdCQUFnQjs7QUFFbkMsa0JBQUssTUFBTSxFQUFFLENBQUM7QUFDZCxrQkFBSyxHQUFHLDZCQUFnQixDQUFDOztBQUV6QixJQUFJLGdCQUFnQixHQUFHO0FBQ3JCLG1CQUFpQixpQ0FBaUI7QUFDbEMsbUJBQWlCLGlDQUFpQjtDQUNuQyxDQUFDOzs7Ozs7Ozs7O1FBRVEsSUFBSTtRQUFFLFFBQVE7O0FBQ3RCLFlBQVEsdUJBQXFCLElBQUksRUFBSSxZQUFNO0FBQ3pDLFVBQUksR0FBRyxZQUFBLENBQUM7QUFDUixnQkFBVSxDQUFDLFlBQU07QUFDZixXQUFHLEdBQUcsSUFBSSxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO09BQ3BDLENBQUMsQ0FBQzs7QUFFSCxRQUFFLENBQUMsY0FBYyxFQUFFLFlBQU07QUFDdkIsZ0JBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO09BQ3ZCLENBQUMsQ0FBQzs7QUFFSCxRQUFFLENBQUMsbUNBQW1DLEVBQUUsWUFBTTtBQUM1QyxXQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztPQUMzQixDQUFDLENBQUM7O0FBRUgsUUFBRSxDQUFDLHlDQUF5QyxFQUFFO1lBR3hDLElBQUk7Ozs7QUFGUixpQ0FBTSxJQUFJLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFRLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RSxpQkFBRyxDQUFDLGdCQUFnQixHQUFHLEdBQUcsQ0FBQzs7K0NBQ1YsR0FBRyxD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LEVBQUU7OztBQUFuQyxrQkFBRTs7QUFDTixrQkFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDakMsd0JBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBSyxDQUFDOzs7Ozs7O1NBQ3BDLENBQUMsQ0FBQztPQUNKLENBQUMsQ0FBQztLQUNKLENBQUMsQ0FBQzs7O0FBckZMLG9DQUE2QixvQkFBRSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsNEdBQUU7O0dBc0Z2RCIsImZpbGUiOiJ0ZXN0L3VuaXQvc2ltdWxhdG9yLWNvbW1vbi1zcGVjcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRyYW5zcGlsZTptb2NoYVxuXG5pbXBvcnQgU2ltdWxhdG9yWGNvZGU2IGZyb20gJy4uLy4uL2xpYi9zaW11bGF0b3IteGNvZGUtNic7XG5pbXBvcnQgU2ltdWxhdG9yWGNvZGU3IGZyb20gJy4uLy4uL2xpYi9zaW11bGF0b3IteGNvZGUtNyc7XG5pbXBvcnQgY2hhaSBmcm9tICdjaGFpJztcbmltcG9ydCBjaGFpQXNQcm9taXNlZCBmcm9tICdjaGFpLWFzLXByb21pc2VkJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0IHsgZnMgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5cbmNoYWkuc2hvdWxkKCk7XG5jaGFpLnVzZShjaGFpQXNQcm9taXNlZCk7XG5cbmxldCBzaW11bGF0b3JDbGFzc2VzID0ge1xuICAnU2ltdWxhdG9yWGNvZGU2JzogU2ltdWxhdG9yWGNvZGU2LFxuICAnU2ltdWxhdG9yWGNvZGU3JzogU2ltdWxhdG9yWGNvZGU3XG59O1xuXG5mb3IgKGxldCBbbmFtZSwgc2ltQ2xhc3NdIG9mIF8ucGFpcnMoc2ltdWxhdG9yQ2xhc3NlcykpIHtcbiAgZGVzY3JpYmUoYGNvbW1vbiBtZXRob2RzIC0gJHtuYW1lfWAsICgpID0+IHtcbiAgICBsZXQgc2ltO1xuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgc2ltID0gbmV3IHNpbUNsYXNzKCcxMjMnLCAnNi4wLjAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhpc3QnLCAoKSA9PiB7XG4gICAgICBzaW1DbGFzcy5zaG91bGQuZXhpc3Q7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBhIHBhdGggZm9yIGdldERpcigpJywgKCkgPT4ge1xuICAgICAgc2ltLmdldERpcigpLnNob3VsZC5leGlzdDtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIGFycmF5IGZvciBnZXRBcHBEaXJzKCknLCBhc3luYyAoKSA9PiB7XG4gICAgICBzaW5vbi5zdHViKHNpbSwgJ2dldEFwcERpcicpLnJldHVybnMoUHJvbWlzZS5yZXNvbHZlKFsnL0FwcC9QYXRoLyddKSk7XG4gICAgICBzaW0uX3BsYXRmb3JtVmVyc2lvbiA9IDkuMTtcbiAgICAgIGxldCBkaXJzID0gYXdhaXQgc2ltLmdldEFwcERpcnMoJ3Rlc3QnKTtcbiAgICAgIGRpcnMuc2hvdWxkLmhhdmUubGVuZ3RoKDIpO1xuICAgICAgZGlycy5zaG91bGQuYmUuYSgnYXJyYXknKTtcbiAgICAgIHNpbm9uLnJlc3RvcmUoKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdjbGVhbkN1c3RvbUFwcCcsICgpID0+IHtcbiAgICAgIGxldCBzYW5kYm94O1xuICAgICAgbGV0IGFwcEJ1bmRsZUlkID0gJ2NvbS5zb21lLmFwcCc7XG4gICAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgICAgc2FuZGJveCA9IHNpbm9uLnNhbmRib3guY3JlYXRlKCk7XG4gICAgICAgIHNhbmRib3guc3B5KGZzLCAncmltcmFmJyk7XG4gICAgICB9KTtcbiAgICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICAgIHNhbmRib3gucmVzdG9yZSgpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIG5vdCBkZWxldGUgYW55dGhpbmcgaWYgbm8gZGlyZWN0b3JpZXMgYXJlIGZvdW5kJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBzYW5kYm94LnN0dWIoc2ltLCAnZ2V0UGxhdGZvcm1WZXJzaW9uJykucmV0dXJucyhQcm9taXNlLnJlc29sdmUoNy4xKSk7XG4gICAgICAgIHNhbmRib3guc3R1YihzaW0sICdnZXRBcHBEaXInKS5yZXR1cm5zKFByb21pc2UucmVzb2x2ZSgpKTtcbiAgICAgICAgYXdhaXQgc2ltLmNsZWFuQ3VzdG9tQXBwKCdzb21lQXBwJywgJ2NvbS5zb21lLmFwcCcpO1xuICAgICAgICBzaW5vbi5hc3NlcnQubm90Q2FsbGVkKGZzLnJpbXJhZik7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgZGVsZXRlIGFwcCBkaXJlY3RvcmllcycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgc2FuZGJveC5zdHViKHNpbSwgJ2dldFBsYXRmb3JtVmVyc2lvbicpLnJldHVybnMoUHJvbWlzZS5yZXNvbHZlKDcuMSkpO1xuICAgICAgICBzYW5kYm94LnN0dWIoc2ltLCAnZ2V0QXBwRGlycycpLnJldHVybnMoUHJvbWlzZS5yZXNvbHZlKFsnL3NvbWUvcGF0aCcsICcvYW5vdGhlci9wYXRoJ10pKTtcbiAgICAgICAgYXdhaXQgc2ltLmNsZWFuQ3VzdG9tQXBwKCdzb21lQXBwJywgJ2NvbS5zb21lLmFwcCcpO1xuICAgICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkKGZzLnJpbXJhZik7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgZGVsZXRlIHBsaXN0IGZpbGUgZm9yIGlPUzgrJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBzYW5kYm94LnN0dWIoc2ltLCAnZ2V0UGxhdGZvcm1WZXJzaW9uJykucmV0dXJucyhQcm9taXNlLnJlc29sdmUoOSkpO1xuICAgICAgICBzYW5kYm94LnN0dWIoc2ltLCAnZ2V0QXBwRGlycycpLnJldHVybnMoUHJvbWlzZS5yZXNvbHZlKFsnL3NvbWUvcGF0aCcsICcvYW5vdGhlci9wYXRoJ10pKTtcbiAgICAgICAgYXdhaXQgc2ltLmNsZWFuQ3VzdG9tQXBwKCdzb21lQXBwJywgYXBwQnVuZGxlSWQpO1xuICAgICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkV2l0aE1hdGNoKGZzLnJpbXJhZiwgL3BsaXN0Lyk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgbm90IGRlbGV0ZSBwbGlzdCBmaWxlIGZvciBpT1M3LjEnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHNhbmRib3guc3R1YihzaW0sICdnZXRQbGF0Zm9ybVZlcnNpb24nKS5yZXR1cm5zKFByb21pc2UucmVzb2x2ZSg3LjEpKTtcbiAgICAgICAgc2FuZGJveC5zdHViKHNpbSwgJ2dldEFwcERpcnMnKS5yZXR1cm5zKFByb21pc2UucmVzb2x2ZShbJy9zb21lL3BhdGgnLCAnL2Fub3RoZXIvcGF0aCddKSk7XG4gICAgICAgIGF3YWl0IHNpbS5jbGVhbkN1c3RvbUFwcCgnc29tZUFwcCcsIGFwcEJ1bmRsZUlkKTtcbiAgICAgICAgc2lub24uYXNzZXJ0Lm5ldmVyQ2FsbGVkV2l0aE1hdGNoKGZzLnJpbXJhZiwgL3BsaXN0Lyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgcGF0aCBmb3IgZ2V0TG9nRGlyJywgKCkgPT4ge1xuICAgICAgcHJvY2Vzcy5lbnYuSE9NRSA9IF9fZGlybmFtZTtcbiAgICAgIGxldCBsb2dEaXIgPSBzaW0uZ2V0TG9nRGlyKCk7XG4gICAgICBsb2dEaXIuc2hvdWxkLmVxdWFsKGAke19fZGlybmFtZX0vTGlicmFyeS9Mb2dzL0NvcmVTaW11bGF0b3IvMTIzYCk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnZ2V0UGxhdGZvcm1WZXJzaW9uJywgKCkgPT4ge1xuICAgICAgbGV0IHN0YXRTdHViO1xuICAgICAgbGV0IHBsYXRmb3JtVmVyc2lvbiA9IDguOTtcbiAgICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgICBzdGF0U3R1YiA9IHNpbm9uLnN0dWIoc2ltLCAnc3RhdCcpLnJldHVybnMoe3NkazogcGxhdGZvcm1WZXJzaW9ufSk7XG4gICAgICB9KTtcbiAgICAgIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgICAgIHN0YXRTdHViLnJlc3RvcmUoKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBnZXQgdGhlIGNvcnJlY3QgcGxhdGZvcm0gdmVyc2lvbicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgbGV0IHB2ID0gYXdhaXQgc2ltLmdldFBsYXRmb3JtVmVyc2lvbigpO1xuICAgICAgICBwdi5zaG91bGQuZXF1YWwocGxhdGZvcm1WZXJzaW9uKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBvbmx5IGNhbGwgc3RhdCBvbmNlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBsZXQgcHYgPSBhd2FpdCBzaW0uZ2V0UGxhdGZvcm1WZXJzaW9uKCk7XG4gICAgICAgIHB2LnNob3VsZC5lcXVhbChwbGF0Zm9ybVZlcnNpb24pO1xuICAgICAgICBzdGF0U3R1Yi5jYWxsZWRPbmNlLnNob3VsZC5iZS50cnVlO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuIl19