config.spec.js 23KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. var path_1 = require("path");
  4. var helpers = require("./helpers");
  5. var config = require("./config");
  6. var Constants = require("./constants");
  7. describe('config', function () {
  8. describe('config.generateContext', function () {
  9. it('should set isWatch true with isWatch true context', function () {
  10. var context = config.generateContext({
  11. isWatch: true
  12. });
  13. expect(context.isWatch).toEqual(true);
  14. });
  15. it('should set isWatch false by default', function () {
  16. var context = config.generateContext();
  17. expect(context.isWatch).toEqual(false);
  18. });
  19. it('should set isProd false with isProd false context', function () {
  20. var context = config.generateContext({
  21. isProd: false
  22. });
  23. expect(context.isProd).toEqual(false);
  24. });
  25. it('should set default bundler when invalid value', function () {
  26. var context = config.generateContext();
  27. expect(context.bundler).toEqual('webpack');
  28. });
  29. it('should set default bundler when not set', function () {
  30. var context = config.generateContext();
  31. expect(context.bundler).toEqual('webpack');
  32. });
  33. it('should set isProd by default', function () {
  34. var context = config.generateContext();
  35. expect(context.isProd).toEqual(false);
  36. });
  37. it('should create an object when passed nothing', function () {
  38. var context = config.generateContext();
  39. expect(context).toBeDefined();
  40. });
  41. it('should set the correct defaults for a dev build', function () {
  42. // arrange
  43. var fakeConfig = {};
  44. config.setProcessEnv(fakeConfig);
  45. // act
  46. var context = config.generateContext({
  47. isProd: false
  48. });
  49. // assert
  50. expect(context.isProd).toEqual(false);
  51. expect(context.runAot).toEqual(false);
  52. expect(context.runMinifyJs).toEqual(false);
  53. expect(context.runMinifyCss).toEqual(false);
  54. expect(context.optimizeJs).toEqual(false);
  55. expect(fakeConfig[Constants.ENV_VAR_IONIC_ENV]).toEqual(Constants.ENV_VAR_DEV);
  56. expect(fakeConfig[Constants.ENV_VAR_IONIC_AOT]).toEqual('false');
  57. expect(fakeConfig[Constants.ENV_VAR_IONIC_MINIFY_JS]).toEqual('false');
  58. expect(fakeConfig[Constants.ENV_VAR_IONIC_MINIFY_CSS]).toEqual('false');
  59. expect(fakeConfig[Constants.ENV_VAR_IONIC_OPTIMIZE_JS]).toEqual('false');
  60. expect(context.rootDir).toEqual(process.cwd());
  61. expect(context.tmpDir).toEqual(path_1.join(process.cwd(), Constants.TMP_DIR));
  62. expect(context.srcDir).toEqual(path_1.join(process.cwd(), Constants.SRC_DIR));
  63. expect(fakeConfig[Constants.ENV_VAR_DEEPLINKS_DIR]).toEqual(context.srcDir);
  64. expect(context.wwwDir).toEqual(path_1.join(process.cwd(), Constants.WWW_DIR));
  65. expect(context.wwwIndex).toEqual('index.html');
  66. expect(context.buildDir).toEqual(path_1.join(process.cwd(), Constants.WWW_DIR, Constants.BUILD_DIR));
  67. expect(fakeConfig[Constants.ENV_VAR_FONTS_DIR]).toEqual(path_1.join(context.wwwDir, 'assets', 'fonts'));
  68. expect(context.pagesDir).toEqual(path_1.join(context.srcDir, 'pages'));
  69. expect(context.componentsDir).toEqual(path_1.join(context.srcDir, 'components'));
  70. expect(context.directivesDir).toEqual(path_1.join(context.srcDir, 'directives'));
  71. expect(context.pipesDir).toEqual(path_1.join(context.srcDir, 'pipes'));
  72. expect(context.providersDir).toEqual(path_1.join(context.srcDir, 'providers'));
  73. expect(context.nodeModulesDir).toEqual(path_1.join(process.cwd(), Constants.NODE_MODULES));
  74. expect(context.ionicAngularDir).toEqual(path_1.join(process.cwd(), Constants.NODE_MODULES, Constants.IONIC_ANGULAR));
  75. expect(fakeConfig[Constants.ENV_VAR_ANGULAR_CORE_DIR]).toEqual(path_1.join(process.cwd(), Constants.NODE_MODULES, Constants.AT_ANGULAR, 'core'));
  76. expect(fakeConfig[Constants.ENV_VAR_TYPESCRIPT_DIR]).toEqual(path_1.join(process.cwd(), Constants.NODE_MODULES, Constants.TYPESCRIPT));
  77. expect(context.coreCompilerFilePath).toEqual(path_1.join(context.ionicAngularDir, 'compiler'));
  78. expect(context.coreDir).toEqual(context.ionicAngularDir);
  79. expect(fakeConfig[Constants.ENV_VAR_RXJS_DIR]).toEqual(path_1.join(process.cwd(), Constants.NODE_MODULES, Constants.RXJS));
  80. expect(fakeConfig[Constants.ENV_VAR_IONIC_ANGULAR_TEMPLATE_DIR]).toEqual(path_1.join(context.ionicAngularDir, 'templates'));
  81. expect(context.platform).toEqual(null);
  82. expect(context.target).toEqual(null);
  83. expect(fakeConfig[Constants.ENV_VAR_IONIC_ANGULAR_ENTRY_POINT]).toEqual(path_1.join(context.ionicAngularDir, 'index.js'));
  84. expect(fakeConfig[Constants.ENV_VAR_APP_SCRIPTS_DIR]).toEqual(path_1.join(__dirname, '..', '..'));
  85. expect(fakeConfig[Constants.ENV_VAR_GENERATE_SOURCE_MAP]).toEqual('true');
  86. expect(fakeConfig[Constants.ENV_VAR_SOURCE_MAP_TYPE]).toEqual(Constants.SOURCE_MAP_TYPE_EXPENSIVE);
  87. expect(fakeConfig[Constants.ENV_TS_CONFIG]).toEqual(path_1.join(process.cwd(), 'tsconfig.json'));
  88. expect(fakeConfig[Constants.ENV_READ_CONFIG_JSON]).toEqual('true');
  89. expect(fakeConfig[Constants.ENV_APP_ENTRY_POINT]).toEqual(path_1.join(context.srcDir, 'app', 'main.ts'));
  90. expect(fakeConfig[Constants.ENV_APP_NG_MODULE_PATH]).toEqual(path_1.join(context.srcDir, 'app', 'app.module.ts'));
  91. expect(fakeConfig[Constants.ENV_APP_NG_MODULE_CLASS]).toEqual('AppModule');
  92. expect(fakeConfig[Constants.ENV_GLOB_UTIL]).toEqual(path_1.join(fakeConfig[Constants.ENV_VAR_APP_SCRIPTS_DIR], 'dist', 'util', 'glob-util.js'));
  93. expect(fakeConfig[Constants.ENV_CLEAN_BEFORE_COPY]).toBeFalsy();
  94. expect(fakeConfig[Constants.ENV_OUTPUT_JS_FILE_NAME]).toEqual('main.js');
  95. expect(fakeConfig[Constants.ENV_OUTPUT_CSS_FILE_NAME]).toEqual('main.css');
  96. expect(fakeConfig[Constants.ENV_WEBPACK_FACTORY]).toEqual(path_1.join(fakeConfig[Constants.ENV_VAR_APP_SCRIPTS_DIR], 'dist', 'webpack', 'ionic-webpack-factory.js'));
  97. expect(fakeConfig[Constants.ENV_WEBPACK_LOADER]).toEqual(path_1.join(fakeConfig[Constants.ENV_VAR_APP_SCRIPTS_DIR], 'dist', 'webpack', 'loader.js'));
  98. expect(fakeConfig[Constants.ENV_AOT_WRITE_TO_DISK]).toBeFalsy();
  99. expect(fakeConfig[Constants.ENV_PRINT_WEBPACK_DEPENDENCY_TREE]).toBeFalsy();
  100. expect(fakeConfig[Constants.ENV_TYPE_CHECK_ON_LINT]).toBeFalsy();
  101. expect(fakeConfig[Constants.ENV_BAIL_ON_LINT_ERROR]).toBeFalsy();
  102. expect(fakeConfig[Constants.ENV_ENABLE_LINT]).toEqual('true');
  103. expect(fakeConfig[Constants.ENV_DISABLE_LOGGING]).toBeFalsy();
  104. expect(fakeConfig[Constants.ENV_START_WATCH_TIMEOUT]).toEqual('3000');
  105. expect(fakeConfig[Constants.ENV_NG_MODULE_FILE_NAME_SUFFIX]).toEqual('.module.ts');
  106. expect(fakeConfig[Constants.ENV_POLYFILL_FILE_NAME]).toEqual('polyfills.js');
  107. expect(fakeConfig[Constants.ENV_ACTION_SHEET_CONTROLLER_CLASSNAME]).toEqual('ActionSheetController');
  108. expect(fakeConfig[Constants.ENV_ACTION_SHEET_CONTROLLER_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'action-sheet', 'action-sheet-controller.js'));
  109. expect(fakeConfig[Constants.ENV_ACTION_SHEET_VIEW_CONTROLLER_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'action-sheet', 'action-sheet.js'));
  110. expect(fakeConfig[Constants.ENV_ACTION_SHEET_COMPONENT_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'action-sheet', 'action-sheet-component.js'));
  111. expect(fakeConfig[Constants.ENV_ACTION_SHEET_COMPONENT_FACTORY_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'action-sheet', 'action-sheet-component.ngfactory.js'));
  112. expect(fakeConfig[Constants.ENV_ALERT_CONTROLLER_CLASSNAME]).toEqual('AlertController');
  113. expect(fakeConfig[Constants.ENV_ALERT_CONTROLLER_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'alert', 'alert-controller.js'));
  114. expect(fakeConfig[Constants.ENV_ALERT_VIEW_CONTROLLER_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'alert', 'alert.js'));
  115. expect(fakeConfig[Constants.ENV_ALERT_COMPONENT_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'alert', 'alert-component.js'));
  116. expect(fakeConfig[Constants.ENV_ALERT_COMPONENT_FACTORY_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'alert', 'alert-component.ngfactory.js'));
  117. expect(fakeConfig[Constants.ENV_APP_ROOT_COMPONENT_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'app', 'app-root.js'));
  118. expect(fakeConfig[Constants.ENV_LOADING_CONTROLLER_CLASSNAME]).toEqual('LoadingController');
  119. expect(fakeConfig[Constants.ENV_LOADING_CONTROLLER_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'loading', 'loading-controller.js'));
  120. expect(fakeConfig[Constants.ENV_LOADING_VIEW_CONTROLLER_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'loading', 'loading.js'));
  121. expect(fakeConfig[Constants.ENV_LOADING_COMPONENT_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'loading', 'loading-component.js'));
  122. expect(fakeConfig[Constants.ENV_LOADING_COMPONENT_FACTORY_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'loading', 'loading-component.ngfactory.js'));
  123. expect(fakeConfig[Constants.ENV_MODAL_CONTROLLER_CLASSNAME]).toEqual('ModalController');
  124. expect(fakeConfig[Constants.ENV_MODAL_CONTROLLER_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'modal', 'modal-controller.js'));
  125. expect(fakeConfig[Constants.ENV_MODAL_VIEW_CONTROLLER_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'modal', 'modal.js'));
  126. expect(fakeConfig[Constants.ENV_MODAL_COMPONENT_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'modal', 'modal-component.js'));
  127. expect(fakeConfig[Constants.ENV_MODAL_COMPONENT_FACTORY_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'modal', 'modal-component.ngfactory.js'));
  128. expect(fakeConfig[Constants.ENV_PICKER_CONTROLLER_CLASSNAME]).toEqual('PickerController');
  129. expect(fakeConfig[Constants.ENV_PICKER_CONTROLLER_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'picker', 'picker-controller.js'));
  130. expect(fakeConfig[Constants.ENV_PICKER_VIEW_CONTROLLER_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'picker', 'picker.js'));
  131. expect(fakeConfig[Constants.ENV_PICKER_COMPONENT_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'picker', 'picker-component.js'));
  132. expect(fakeConfig[Constants.ENV_PICKER_COMPONENT_FACTORY_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'picker', 'picker-component.ngfactory.js'));
  133. expect(fakeConfig[Constants.ENV_POPOVER_CONTROLLER_CLASSNAME]).toEqual('PopoverController');
  134. expect(fakeConfig[Constants.ENV_POPOVER_CONTROLLER_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'popover', 'popover-controller.js'));
  135. expect(fakeConfig[Constants.ENV_POPOVER_VIEW_CONTROLLER_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'popover', 'popover.js'));
  136. expect(fakeConfig[Constants.ENV_POPOVER_COMPONENT_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'popover', 'popover-component.js'));
  137. expect(fakeConfig[Constants.ENV_POPOVER_COMPONENT_FACTORY_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'popover', 'popover-component.ngfactory.js'));
  138. expect(fakeConfig[Constants.ENV_TOAST_CONTROLLER_CLASSNAME]).toEqual('ToastController');
  139. expect(fakeConfig[Constants.ENV_TOAST_CONTROLLER_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'toast', 'toast-controller.js'));
  140. expect(fakeConfig[Constants.ENV_TOAST_VIEW_CONTROLLER_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'toast', 'toast.js'));
  141. expect(fakeConfig[Constants.ENV_TOAST_COMPONENT_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'toast', 'toast-component.js'));
  142. expect(fakeConfig[Constants.ENV_TOAST_COMPONENT_FACTORY_PATH]).toEqual(path_1.join(context.ionicAngularDir, 'components', 'toast', 'toast-component.ngfactory.js'));
  143. expect(fakeConfig[Constants.ENV_PARSE_DEEPLINKS]).toBeTruthy();
  144. expect(fakeConfig[Constants.ENV_SKIP_IONIC_ANGULAR_VERSION]).toEqual('false');
  145. expect(context.bundler).toEqual('webpack');
  146. });
  147. it('should set defaults for a prod build', function () {
  148. // arrange
  149. var fakeConfig = {};
  150. config.setProcessEnv(fakeConfig);
  151. // act
  152. var context = config.generateContext({
  153. isProd: true
  154. });
  155. // assert
  156. expect(context.isProd).toEqual(true);
  157. expect(context.runAot).toEqual(true);
  158. expect(context.runMinifyJs).toEqual(true);
  159. expect(context.runMinifyCss).toEqual(true);
  160. expect(context.optimizeJs).toEqual(true);
  161. expect(fakeConfig[Constants.ENV_VAR_IONIC_AOT]).toEqual('true');
  162. expect(fakeConfig[Constants.ENV_VAR_IONIC_MINIFY_JS]).toEqual('true');
  163. expect(fakeConfig[Constants.ENV_VAR_IONIC_MINIFY_CSS]).toEqual('true');
  164. expect(fakeConfig[Constants.ENV_VAR_IONIC_OPTIMIZE_JS]).toEqual('true');
  165. expect(fakeConfig[Constants.ENV_VAR_IONIC_ENV]).toEqual(Constants.ENV_VAR_PROD);
  166. expect(fakeConfig[Constants.ENV_VAR_GENERATE_SOURCE_MAP]).toBeFalsy();
  167. });
  168. it('should override console', function () {
  169. var originalDebug = console.debug;
  170. var originalError = console.error;
  171. var originalInfo = console.info;
  172. var originalLog = console.log;
  173. var originalTrace = console.trace;
  174. var originalWarn = console.warn;
  175. var fakeConfig = {};
  176. config.setProcessEnv(fakeConfig);
  177. spyOn(helpers, helpers.getBooleanPropertyValue.name).and.returnValue(true);
  178. config.generateContext({
  179. isProd: true
  180. });
  181. expect(console.debug).not.toEqual(originalDebug);
  182. expect(console.error).not.toEqual(originalError);
  183. expect(console.info).not.toEqual(originalInfo);
  184. expect(console.log).not.toEqual(originalLog);
  185. expect(console.trace).not.toEqual(originalTrace);
  186. expect(console.warn).not.toEqual(originalWarn);
  187. });
  188. });
  189. describe('config.replacePathVars', function () {
  190. it('should interpolated value when string', function () {
  191. var context = {
  192. srcDir: 'src',
  193. };
  194. var rtn = config.replacePathVars(context, '{{SRC}}');
  195. expect(rtn).toEqual('src');
  196. });
  197. it('should interpolated values in string array', function () {
  198. var context = {
  199. wwwDir: 'www',
  200. srcDir: 'src',
  201. };
  202. var filePaths = ['{{SRC}}', '{{WWW}}'];
  203. var rtn = config.replacePathVars(context, filePaths);
  204. expect(rtn).toEqual(['src', 'www']);
  205. });
  206. it('should interpolated values in key value pair', function () {
  207. var context = {
  208. wwwDir: 'www',
  209. srcDir: 'src',
  210. };
  211. var filePaths = {
  212. src: '{{SRC}}',
  213. www: '{{WWW}}'
  214. };
  215. var rtn = config.replacePathVars(context, filePaths);
  216. expect(rtn).toEqual({
  217. src: 'src',
  218. www: 'www'
  219. });
  220. });
  221. });
  222. describe('config.getConfigValue', function () {
  223. it('should get arg full value', function () {
  224. config.addArgv('--full');
  225. config.addArgv('fullArgValue');
  226. config.addArgv('-s');
  227. config.addArgv('shortArgValue');
  228. config.setProcessEnvVar('ENV_VAR', 'myProcessEnvVar');
  229. config.setAppPackageJsonData({ config: { config_prop: 'myPackageConfigVal' } });
  230. var val = config.getConfigValue(context, '--full', '-s', 'ENV_VAR', 'config_prop', 'defaultValue');
  231. expect(val).toEqual('fullArgValue');
  232. });
  233. it('should get arg short value', function () {
  234. config.addArgv('-s');
  235. config.addArgv('shortArgValue');
  236. config.setProcessEnvVar('ENV_VAR', 'myProcessEnvVar');
  237. config.setAppPackageJsonData({ config: { config_prop: 'myPackageConfigVal' } });
  238. var val = config.getConfigValue(context, '--full', '-s', 'ENV_VAR', 'config_prop', 'defaultValue');
  239. expect(val).toEqual('shortArgValue');
  240. });
  241. it('should get envVar value', function () {
  242. config.setProcessEnvVar('ENV_VAR', 'myProcessEnvVar');
  243. config.setAppPackageJsonData({ config: { config_prop: 'myPackageConfigVal' } });
  244. var val = config.getConfigValue(context, '--full', '-s', 'ENV_VAR', 'config_prop', 'defaultValue');
  245. expect(val).toEqual('myProcessEnvVar');
  246. });
  247. it('should get package.json config value', function () {
  248. config.setAppPackageJsonData({ config: { config_prop: 'myPackageConfigVal' } });
  249. var val = config.getConfigValue(context, '--full', '-s', 'ENV_VAR', 'config_prop', 'defaultValue');
  250. expect(val).toEqual('myPackageConfigVal');
  251. });
  252. it('should get default value', function () {
  253. var val = config.getConfigValue(context, '--full', '-s', 'ENV_VAR', 'config_prop', 'defaultValue');
  254. expect(val).toEqual('defaultValue');
  255. });
  256. });
  257. describe('config.bundlerStrategy', function () {
  258. it('should get webpack with invalid env var', function () {
  259. config.setProcessEnv({
  260. ionic_bundler: 'bobsBundler'
  261. });
  262. var bundler = config.bundlerStrategy(context);
  263. expect(bundler).toEqual('webpack');
  264. });
  265. it('should get webpack by default', function () {
  266. var bundler = config.bundlerStrategy(context);
  267. expect(bundler).toEqual('webpack');
  268. });
  269. });
  270. describe('config.getUserConfigFile', function () {
  271. it('should get config from package.json config', function () {
  272. config.setAppPackageJsonData({
  273. config: { ionic_config: 'myconfig.js' }
  274. });
  275. var userConfigFile = null;
  276. var context = { rootDir: process.cwd() };
  277. var taskInfo = { fullArg: '--full', shortArg: '-s', defaultConfigFile: 'default.config.js', envVar: 'IONIC_CONFIG', packageConfig: 'ionic_config' };
  278. var rtn = config.getUserConfigFile(context, taskInfo, userConfigFile);
  279. expect(rtn).toEqual(path_1.resolve('myconfig.js'));
  280. });
  281. it('should get config from env var', function () {
  282. config.setProcessEnv({
  283. IONIC_CONFIG: 'myconfig.js'
  284. });
  285. var userConfigFile = null;
  286. var context = { rootDir: process.cwd() };
  287. var taskInfo = { fullArg: '--full', shortArg: '-s', defaultConfigFile: 'default.config.js', envVar: 'IONIC_CONFIG', packageConfig: 'ionic_config' };
  288. var rtn = config.getUserConfigFile(context, taskInfo, userConfigFile);
  289. expect(rtn).toEqual(path_1.resolve('myconfig.js'));
  290. });
  291. it('should get config from short arg', function () {
  292. config.addArgv('-s');
  293. config.addArgv('myconfig.js');
  294. var userConfigFile = null;
  295. var context = { rootDir: process.cwd() };
  296. var taskInfo = { fullArg: '--full', shortArg: '-s', defaultConfigFile: 'default.config.js', envVar: 'IONIC_CONFIG', packageConfig: 'ionic_config' };
  297. var rtn = config.getUserConfigFile(context, taskInfo, userConfigFile);
  298. expect(rtn).toEqual(path_1.resolve('myconfig.js'));
  299. });
  300. it('should get config from full arg', function () {
  301. config.addArgv('--full');
  302. config.addArgv('myconfig.js');
  303. var userConfigFile = null;
  304. var context = { rootDir: process.cwd() };
  305. var taskInfo = { fullArg: '--full', shortArg: '-s', defaultConfigFile: 'default.config.js', envVar: 'IONIC_CONFIG', packageConfig: 'ionic_config' };
  306. var rtn = config.getUserConfigFile(context, taskInfo, userConfigFile);
  307. expect(rtn).toEqual(path_1.resolve('myconfig.js'));
  308. });
  309. it('should get userConfigFile', function () {
  310. var userConfigFile = 'myconfig.js';
  311. var context = { rootDir: process.cwd() };
  312. var taskInfo = { fullArg: '--full', shortArg: '-s', defaultConfigFile: 'default.config.js', envVar: 'IONIC_CONFIG', packageConfig: 'ionic_config' };
  313. var rtn = config.getUserConfigFile(context, taskInfo, userConfigFile);
  314. expect(rtn).toEqual(path_1.resolve('myconfig.js'));
  315. });
  316. it('should not get a user config', function () {
  317. var userConfigFile = null;
  318. var context = { rootDir: process.cwd() };
  319. var taskInfo = { fullArg: '--full', shortArg: '-s', defaultConfigFile: 'default.config.js', envVar: 'IONIC_CONFIG', packageConfig: 'ionic_config' };
  320. var rtn = config.getUserConfigFile(context, taskInfo, userConfigFile);
  321. expect(rtn).toEqual(null);
  322. });
  323. });
  324. describe('config.hasArg function', function () {
  325. it('should return false when a match is not found', function () {
  326. var result = config.hasArg('--full', '-f');
  327. expect(result).toBeFalsy();
  328. });
  329. it('should match on a fullname arg', function () {
  330. config.addArgv('--full');
  331. var result = config.hasArg('--full');
  332. expect(result).toBeTruthy();
  333. });
  334. it('should match on a shortname arg', function () {
  335. config.addArgv('-f');
  336. var result = config.hasArg('--full', '-f');
  337. expect(result).toBeTruthy();
  338. });
  339. it('should compare fullnames as case insensitive', function () {
  340. config.addArgv('--full');
  341. config.addArgv('--TEST');
  342. var result = config.hasArg('--Full');
  343. var result2 = config.hasArg('--test');
  344. expect(result).toBeTruthy();
  345. expect(result2).toBeTruthy();
  346. });
  347. it('should compare shortnames as case insensitive', function () {
  348. config.addArgv('-f');
  349. config.addArgv('-T');
  350. var result = config.hasArg('-F');
  351. var result2 = config.hasArg('-t');
  352. expect(result).toBeTruthy();
  353. expect(result2).toBeTruthy();
  354. });
  355. });
  356. var context;
  357. beforeEach(function () {
  358. config.setProcessArgs(['node', 'ionic-app-scripts']);
  359. config.setProcessEnv({});
  360. config.setCwd('');
  361. config.setAppPackageJsonData(null);
  362. context = config.generateContext({});
  363. });
  364. });