config_history_flow_test.js 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756
  1. /**
  2. * Licensed to the Apache Software Foundation (ASF) under one
  3. * or more contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. The ASF licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. */
  18. var App = require('app');
  19. require('views/common/configs/config_history_flow');
  20. var testHelpers = require('test/helpers');
  21. describe.skip('App.ConfigHistoryFlowView', function () {
  22. var view = App.ConfigHistoryFlowView.create({
  23. controller: Em.Object.create({
  24. loadSelectedVersion: Em.K,
  25. loadStep: Em.K
  26. }),
  27. displayedServiceVersion: Em.Object.create(),
  28. serviceVersions: []
  29. });
  30. App.TestAliases.testAsComputedAlias(view, 'serviceName', 'controller.selectedService.serviceName', 'string');
  31. App.TestAliases.testAsComputedOr(view, 'isSaveDisabled', ['controller.isSubmitDisabled', '!controller.versionLoaded', '!controller.isPropertiesChanged']);
  32. App.TestAliases.testAsComputedGt(view, 'displayedServiceVersion.notes.length', 100);
  33. App.TestAliases.testAsComputedTruncate(view, 'shortNotes', 'displayedServiceVersion.notes', 100, 100);
  34. describe('#visibleServiceVersion', function () {
  35. var testCases = [
  36. {
  37. params: {
  38. startIndex: 0,
  39. serviceVersions: []
  40. },
  41. result: []
  42. },
  43. {
  44. params: {
  45. startIndex: 0,
  46. serviceVersions: [1, 2, 3]
  47. },
  48. result: [1, 2, 3]
  49. },
  50. {
  51. params: {
  52. startIndex: 0,
  53. serviceVersions: [1, 2, 3, 4, 5, 6, 7]
  54. },
  55. result: [1, 2, 3, 4, 5]
  56. },
  57. {
  58. params: {
  59. startIndex: 3,
  60. serviceVersions: [1, 2, 3, 4, 5, 6, 7]
  61. },
  62. result: [4, 5, 6, 7]
  63. }
  64. ];
  65. testCases.forEach(function (test) {
  66. it('start index - ' + test.params.startIndex + ', serviceVersions length - ' + test.params.serviceVersions.length, function () {
  67. view.set('serviceVersions', test.params.serviceVersions);
  68. view.set('startIndex', test.params.startIndex);
  69. view.propertyDidChange('visibleServiceVersion');
  70. expect(view.get('visibleServiceVersion')).to.eql(test.result);
  71. });
  72. });
  73. });
  74. describe('#versionActionsDisabled', function () {
  75. it('versionLoaded is false', function () {
  76. view.set('controller.versionLoaded', false);
  77. expect(view.get('versionActionsDisabled')).to.be.true;
  78. });
  79. it('versionLoaded is true', function () {
  80. view.set('controller.versionLoaded', true);
  81. expect(view.get('versionActionsDisabled')).to.be.false;
  82. });
  83. });
  84. describe('#dropDownList', function () {
  85. var displayedServiceVersion = {version: 1};
  86. it('Only one service version is present', function () {
  87. view.set('serviceVersions', [displayedServiceVersion]);
  88. view.set('displayedServiceVersion', displayedServiceVersion);
  89. view.propertyDidChange('dropDownList');
  90. expect(view.get('dropDownList')).to.be.empty;
  91. });
  92. it('Three service version', function () {
  93. view.set('serviceVersions', [displayedServiceVersion, {version: 2}, {version: 3}]);
  94. view.set('displayedServiceVersion', displayedServiceVersion);
  95. view.propertyDidChange('dropDownList');
  96. expect(view.get('dropDownList')).to.eql([{version: 3}, {version: 2}]);
  97. });
  98. it('Seven service version, showFullList is false', function () {
  99. view.set('serviceVersions', [
  100. displayedServiceVersion,
  101. {version: 2},
  102. {version: 3},
  103. {version: 4},
  104. {version: 5},
  105. {version: 6},
  106. {version: 7},
  107. {version: 8}
  108. ]);
  109. view.set('displayedServiceVersion', displayedServiceVersion);
  110. view.set('showFullList', false);
  111. view.propertyDidChange('dropDownList');
  112. expect(view.get('dropDownList')).to.eql([
  113. {version: 8},
  114. {version: 7},
  115. {version: 6},
  116. {version: 5},
  117. {version: 4},
  118. {version: 3}
  119. ]);
  120. });
  121. it('Seven service version, showFullList is true', function () {
  122. view.set('serviceVersions', [
  123. displayedServiceVersion,
  124. {version: 2},
  125. {version: 3},
  126. {version: 4},
  127. {version: 5},
  128. {version: 6},
  129. {version: 7},
  130. {version: 8}
  131. ]);
  132. view.set('displayedServiceVersion', displayedServiceVersion);
  133. view.set('showFullList', true);
  134. view.propertyDidChange('dropDownList');
  135. expect(view.get('dropDownList')).to.eql([
  136. {version: 8},
  137. {version: 7},
  138. {version: 6},
  139. {version: 5},
  140. {version: 4},
  141. {version: 3},
  142. {version: 2}
  143. ]);
  144. });
  145. });
  146. describe('#openFullList()', function () {
  147. var event;
  148. beforeEach(function () {
  149. event = {
  150. stopPropagation: Em.K
  151. };
  152. sinon.spy(event, 'stopPropagation');
  153. view.openFullList(event);
  154. });
  155. afterEach(function () {
  156. event.stopPropagation.restore();
  157. });
  158. it('stopPropagation is called once', function () {
  159. expect(event.stopPropagation.calledOnce).to.be.true;
  160. });
  161. it('stopPropagation is true', function () {
  162. expect(view.get('stopPropagation')).to.be.true;
  163. });
  164. });
  165. describe('#hideFullList()', function () {
  166. var testCases = [
  167. {
  168. params: {
  169. serviceVersions: new Array(0)
  170. },
  171. result: true
  172. },
  173. {
  174. params: {
  175. serviceVersions: new Array(6)
  176. },
  177. result: true
  178. },
  179. {
  180. params: {
  181. serviceVersions: new Array(7)
  182. },
  183. result: false
  184. }
  185. ];
  186. testCases.forEach(function (test) {
  187. it('notes length - ' + test.params.count, function () {
  188. view.set('serviceVersions', test.params.serviceVersions);
  189. view.hideFullList();
  190. expect(view.get('showFullList')).to.equal(test.result);
  191. });
  192. });
  193. });
  194. describe('#didInsertElement()', function () {
  195. beforeEach(function () {
  196. sinon.stub(App, 'tooltip');
  197. view.didInsertElement();
  198. });
  199. afterEach(function () {
  200. App.tooltip.restore();
  201. });
  202. it('App.tooltip is called on�e', function () {
  203. expect(App.tooltip.calledOnce).to.be.true;
  204. });
  205. });
  206. describe('#willInsertElement()', function () {
  207. beforeEach(function () {
  208. sinon.stub(view, 'adjustFlowView', Em.K);
  209. sinon.stub(view, 'keepInfoBarAtTop', Em.K);
  210. });
  211. afterEach(function () {
  212. view.adjustFlowView.restore();
  213. view.keepInfoBarAtTop.restore();
  214. });
  215. describe('Only current version is present', function () {
  216. beforeEach(function () {
  217. view.set('serviceVersions', [Em.Object.create({isCurrent: true})]);
  218. view.willInsertElement();
  219. });
  220. it('adjustFlowView is called once', function () {
  221. expect(view.adjustFlowView.calledOnce).to.be.true;
  222. });
  223. it('keepInfoBarAtTop is called once', function () {
  224. expect(view.keepInfoBarAtTop.calledOnce).to.be.true;
  225. });
  226. it('startIndex = 0', function () {
  227. expect(view.get('startIndex')).to.equal(0);
  228. });
  229. it('serviceVersions.@each.isDisplayed = [true]', function () {
  230. expect(view.get('serviceVersions').mapProperty('isDisplayed')).to.eql([true]);
  231. });
  232. });
  233. describe('Five service versions are present', function () {
  234. beforeEach(function () {
  235. view.set('serviceVersions', [
  236. Em.Object.create({isCurrent: true}),
  237. Em.Object.create(),
  238. Em.Object.create(),
  239. Em.Object.create(),
  240. Em.Object.create()
  241. ]);
  242. view.willInsertElement();
  243. });
  244. it('adjustFlowView is called once', function () {
  245. expect(view.adjustFlowView.calledOnce).to.be.true;
  246. });
  247. it('keepInfoBarAtTop is called once', function () {
  248. expect(view.keepInfoBarAtTop.calledOnce).to.be.true;
  249. });
  250. it('startIndex = 0', function () {
  251. expect(view.get('startIndex')).to.equal(0);
  252. });
  253. it('serviceVersions.@each.isDisplayed = [true, false, false, false, false]', function () {
  254. expect(view.get('serviceVersions').mapProperty('isDisplayed')).to.eql([true, false, false, false, false]);
  255. });
  256. });
  257. describe('Six service versions are present', function () {
  258. beforeEach(function () {
  259. view.set('serviceVersions', [
  260. Em.Object.create({isCurrent: true}),
  261. Em.Object.create(),
  262. Em.Object.create(),
  263. Em.Object.create(),
  264. Em.Object.create(),
  265. Em.Object.create()
  266. ]);
  267. view.willInsertElement();
  268. });
  269. it('adjustFlowView is called once', function () {
  270. expect(view.adjustFlowView.calledOnce).to.be.true;
  271. });
  272. it('keepInfoBarAtTop is called once', function () {
  273. expect(view.keepInfoBarAtTop.calledOnce).to.be.true;
  274. });
  275. it('startIndex is 1', function () {
  276. expect(view.get('startIndex')).to.equal(1);
  277. });
  278. it('serviceVersions.@each.isDisplayed = [true, false, false, false, false, false]', function () {
  279. expect(view.get('serviceVersions').mapProperty('isDisplayed')).to.eql([true, false, false, false, false, false]);
  280. });
  281. });
  282. });
  283. describe('#setInfoBarPosition()', function () {
  284. var testCases = [
  285. {
  286. params: {
  287. scrollTop: 0,
  288. defaultTop: 0
  289. },
  290. result: 'auto'
  291. },
  292. {
  293. params: {
  294. scrollTop: 1,
  295. defaultTop: 11
  296. },
  297. result: '10px'
  298. },
  299. {
  300. params: {
  301. scrollTop: 1,
  302. defaultTop: 0
  303. },
  304. result: '10px'
  305. }
  306. ];
  307. var infoBar = {
  308. css: Em.K
  309. };
  310. beforeEach(function () {
  311. sinon.spy(infoBar, 'css');
  312. });
  313. afterEach(function () {
  314. infoBar.css.restore();
  315. });
  316. testCases.forEach(function (test) {
  317. it('scroll top - ' + test.params.scrollTop + ', default top - ' + test.params.defaultTop, function () {
  318. view.setInfoBarPosition(infoBar, test.params.defaultTop, test.params.scrollTop);
  319. expect(infoBar.css.calledWith('top', test.result)).to.be.true;
  320. });
  321. });
  322. });
  323. describe('#adjustFlowView()', function () {
  324. var testCases = [
  325. {
  326. params: {
  327. serviceVersions: [Em.Object.create()],
  328. startIndex: 0
  329. },
  330. result: {
  331. first: [true],
  332. showLeftArrow: false,
  333. showRightArrow: false
  334. }
  335. },
  336. {
  337. params: {
  338. serviceVersions: [
  339. Em.Object.create(),
  340. Em.Object.create(),
  341. Em.Object.create(),
  342. Em.Object.create(),
  343. Em.Object.create()
  344. ],
  345. startIndex: 0
  346. },
  347. result: {
  348. first: [true, false, false, false, false],
  349. showLeftArrow: false,
  350. showRightArrow: false
  351. }
  352. },
  353. {
  354. params: {
  355. serviceVersions: [
  356. Em.Object.create(),
  357. Em.Object.create(),
  358. Em.Object.create(),
  359. Em.Object.create(),
  360. Em.Object.create(),
  361. Em.Object.create()
  362. ],
  363. startIndex: 0
  364. },
  365. result: {
  366. first: [true, false, false, false, false, false],
  367. showLeftArrow: false,
  368. showRightArrow: true
  369. }
  370. },
  371. {
  372. params: {
  373. serviceVersions: [
  374. Em.Object.create(),
  375. Em.Object.create(),
  376. Em.Object.create(),
  377. Em.Object.create(),
  378. Em.Object.create(),
  379. Em.Object.create()
  380. ],
  381. startIndex: 1
  382. },
  383. result: {
  384. first: [false, true, false, false, false, false],
  385. showLeftArrow: true,
  386. showRightArrow: false
  387. }
  388. },
  389. {
  390. params: {
  391. serviceVersions: [
  392. Em.Object.create(),
  393. Em.Object.create(),
  394. Em.Object.create(),
  395. Em.Object.create(),
  396. Em.Object.create(),
  397. Em.Object.create(),
  398. Em.Object.create()
  399. ],
  400. startIndex: 1
  401. },
  402. result: {
  403. first: [false, true, false, false, false, false, false],
  404. showLeftArrow: true,
  405. showRightArrow: true
  406. }
  407. }
  408. ];
  409. testCases.forEach(function (test) {
  410. it('start index - ' + test.params.startIndex + ', serviceVersions length - ' + test.params.serviceVersions.length, function () {
  411. view.set('startIndex', test.params.startIndex);
  412. view.set('serviceVersions', test.params.serviceVersions);
  413. view.adjustFlowView();
  414. expect(view.get('serviceVersions').mapProperty('first')).to.eql(test.result.first);
  415. expect(view.get('showLeftArrow')).to.eql(test.result.showLeftArrow);
  416. expect(view.get('showRightArrow')).to.eql(test.result.showRightArrow);
  417. });
  418. });
  419. });
  420. describe('#switchVersion()', function () {
  421. var event = {
  422. context: Em.Object.create({
  423. version: 2
  424. })
  425. };
  426. beforeEach(function(){
  427. sinon.stub(view, 'shiftFlowOnSwitch', Em.K);
  428. sinon.spy(view.get('controller'), 'loadSelectedVersion');
  429. });
  430. afterEach(function(){
  431. view.shiftFlowOnSwitch.restore();
  432. view.get('controller').loadSelectedVersion.restore();
  433. });
  434. it('Only one service version is present', function () {
  435. view.set('serviceVersions', [Em.Object.create({version: 2})]);
  436. view.switchVersion(event);
  437. expect(view.get('serviceVersions').mapProperty('isDisplayed')).to.eql([true]);
  438. expect(view.get('controller').loadSelectedVersion.calledWith(2)).to.be.true;
  439. expect(view.shiftFlowOnSwitch.calledWith(0)).to.be.true;
  440. });
  441. it('Two service versions are present', function () {
  442. view.set('serviceVersions', [
  443. Em.Object.create({version: 1}),
  444. Em.Object.create({version: 2})
  445. ]);
  446. view.switchVersion(event);
  447. expect(view.get('serviceVersions').mapProperty('isDisplayed')).to.eql([false, true]);
  448. expect(view.get('controller').loadSelectedVersion.calledWith(2)).to.be.true;
  449. expect(view.shiftFlowOnSwitch.calledWith(1)).to.be.true;
  450. });
  451. });
  452. describe('#compare()', function () {
  453. it('should set compareServiceVersion', function () {
  454. view.compare({context: Em.Object.create({version: 1})});
  455. expect(view.get('controller.compareServiceVersion')).to.eql(Em.Object.create({version: 1}));
  456. });
  457. });
  458. describe('#revert()', function () {
  459. beforeEach(function () {
  460. sinon.stub(App.ModalPopup, 'show', function (options) {
  461. options.onPrimary.call(Em.Object.create({
  462. serviceConfigNote: 'note',
  463. hide: Em.K
  464. }));
  465. });
  466. sinon.stub(view, 'sendRevertCall', Em.K);
  467. });
  468. afterEach(function () {
  469. App.ModalPopup.show.restore();
  470. view.sendRevertCall.restore();
  471. });
  472. it('context passed', function () {
  473. view.revert({context: Em.Object.create({
  474. version: 1,
  475. serviceName: 'S1'
  476. })});
  477. expect(App.ModalPopup.show.calledOnce).to.be.true;
  478. expect(view.sendRevertCall.calledWith(Em.Object.create({
  479. version: 1,
  480. serviceName: 'S1',
  481. serviceConfigNote: 'note'
  482. }))).to.be.true;
  483. });
  484. it('context is not passed', function () {
  485. view.set('displayedServiceVersion', Em.Object.create({
  486. version: 1,
  487. serviceName: 'S1'
  488. }));
  489. view.revert({});
  490. expect(App.ModalPopup.show.calledOnce).to.be.true;
  491. expect(view.sendRevertCall.calledWith(Em.Object.create({
  492. version: 1,
  493. serviceName: 'S1',
  494. serviceConfigNote: 'note',
  495. notes: ''
  496. }))).to.be.true;
  497. });
  498. });
  499. describe('#sendRevertCall()', function () {
  500. beforeEach(function () {
  501. view.sendRevertCall(Em.Object.create());
  502. });
  503. it('request is sent', function () {
  504. var args = testHelpers.findAjaxRequest('name', 'service.serviceConfigVersion.revert');
  505. expect(args).exists;
  506. });
  507. });
  508. describe('#sendRevertCallSuccess()', function () {
  509. beforeEach(function () {
  510. sinon.spy(view.get('controller'), 'loadStep');
  511. sinon.stub(App.router.get('updateController'), 'updateComponentConfig', Em.K);
  512. view.sendRevertCallSuccess();
  513. });
  514. afterEach(function () {
  515. view.get('controller').loadStep.restore();
  516. App.router.get('updateController').updateComponentConfig.restore();
  517. });
  518. it('loadStep is called', function () {
  519. expect(view.get('controller').loadStep.calledOnce).to.be.true;
  520. });
  521. it('updateComponentConfig is called', function () {
  522. expect(App.router.get('updateController').updateComponentConfig.calledOnce).to.be.true;
  523. });
  524. });
  525. describe('#save()', function () {
  526. beforeEach(function () {
  527. sinon.stub(App.ModalPopup, 'show', Em.K);
  528. sinon.stub(App.ServiceConfigVersion, 'find').returns([
  529. { serviceName: 'service'}
  530. ]);
  531. });
  532. afterEach(function () {
  533. App.ModalPopup.show.restore();
  534. App.ServiceConfigVersion.find.restore();
  535. });
  536. it('modal popup should be displayed', function () {
  537. view.save();
  538. expect(App.ModalPopup.show.calledOnce).to.be.true;
  539. });
  540. it('controller properties should be modified on save', function () {
  541. view.setProperties({
  542. 'serviceName': 'service',
  543. 'controller.saveConfigsFlag': false,
  544. 'controller.serviceConfigVersionNote': '',
  545. 'controller.serviceConfigNote': '',
  546. 'controller.preSelectedConfigVersion': null,
  547. 'serviceConfigNote': 'note',
  548. 'displayedServiceVersion.serviceName': 'service',
  549. 'controller.selectedConfigGroup.name': 'group'
  550. });
  551. var popup = view.save();
  552. popup.onSave();
  553. expect(view.get('controller.saveConfigsFlag')).to.be.true;
  554. expect(view.get('controller').getProperties(['saveConfigsFlag', 'serviceConfigVersionNote', 'serviceConfigNote', 'preSelectedConfigVersion'])).to.eql({
  555. saveConfigsFlag: true,
  556. serviceConfigVersionNote: 'note',
  557. serviceConfigNote: this.get('serviceConfigNote'),
  558. preSelectedConfigVersion: Em.Object.create({
  559. version: 2,
  560. serviceName: 'service',
  561. groupName: 'group'
  562. })
  563. });
  564. });
  565. });
  566. describe('#shiftBack()', function () {
  567. beforeEach(function () {
  568. sinon.stub(view, 'decrementProperty', Em.K);
  569. sinon.stub(view, 'adjustFlowView', Em.K);
  570. view.shiftBack();
  571. });
  572. afterEach(function () {
  573. view.adjustFlowView.restore();
  574. view.decrementProperty.restore();
  575. });
  576. it('decrementProperty is called with correct data', function () {
  577. expect(view.decrementProperty.calledWith('startIndex')).to.be.true;
  578. });
  579. it('adjustFlowView is called once', function () {
  580. expect(view.adjustFlowView.calledOnce).to.be.true;
  581. });
  582. });
  583. describe('#shiftForward()', function () {
  584. beforeEach(function () {
  585. sinon.stub(view, 'incrementProperty', Em.K);
  586. sinon.stub(view, 'adjustFlowView', Em.K);
  587. view.shiftForward();
  588. });
  589. afterEach(function () {
  590. view.adjustFlowView.restore();
  591. view.incrementProperty.restore();
  592. });
  593. it('startIndex++', function () {
  594. expect(view.incrementProperty.calledWith('startIndex')).to.be.true;
  595. });
  596. it('adjustFlowView is called once', function () {
  597. expect(view.adjustFlowView.calledOnce).to.be.true;
  598. });
  599. });
  600. describe('#adjustFlowView()', function () {
  601. var testCases = [
  602. {
  603. params: {
  604. serviceVersions: [],
  605. startIndex: 0,
  606. versionIndex: 1
  607. },
  608. result: {
  609. startIndex: 0,
  610. adjustFlowViewCall: false
  611. }
  612. },
  613. {
  614. params: {
  615. serviceVersions: new Array(6),
  616. startIndex: 7,
  617. versionIndex: 6
  618. },
  619. result: {
  620. startIndex: 1,
  621. adjustFlowViewCall: true
  622. }
  623. },
  624. {
  625. params: {
  626. serviceVersions: new Array(12),
  627. startIndex: 7,
  628. versionIndex: 6
  629. },
  630. result: {
  631. startIndex: 6,
  632. adjustFlowViewCall: true
  633. }
  634. },
  635. {
  636. params: {
  637. serviceVersions: new Array(12),
  638. startIndex: 0,
  639. versionIndex: 6
  640. },
  641. result: {
  642. startIndex: 6,
  643. adjustFlowViewCall: true
  644. }
  645. },
  646. {
  647. params: {
  648. serviceVersions: new Array(6),
  649. startIndex: 0,
  650. versionIndex: 6
  651. },
  652. result: {
  653. startIndex: 1,
  654. adjustFlowViewCall: true
  655. }
  656. }
  657. ];
  658. beforeEach(function () {
  659. sinon.stub(view, 'adjustFlowView', Em.K);
  660. });
  661. afterEach(function () {
  662. view.adjustFlowView.restore();
  663. });
  664. testCases.forEach(function (test) {
  665. it('start index - ' + test.params.startIndex + ', serviceVersions length - ' + test.params.serviceVersions.length + ', versionIndex - ' + test.params.versionIndex, function () {
  666. view.set('serviceVersions', test.params.serviceVersions);
  667. view.set('startIndex', test.params.startIndex);
  668. view.shiftFlowOnSwitch(test.params.versionIndex);
  669. expect(view.get('startIndex')).to.eql(test.result.startIndex);
  670. expect(view.adjustFlowView.calledOnce).to.eql(test.result.adjustFlowViewCall);
  671. });
  672. });
  673. });
  674. });
  675. function getView() {
  676. return App.ConfigsServiceVersionBoxView.create();
  677. }
  678. describe('App.ConfigsServiceVersionBoxView', function () {
  679. App.TestAliases.testAsComputedAlias(getView(), 'disabledActionAttr', 'serviceVersion.disabledActionAttr', 'object');
  680. App.TestAliases.testAsComputedAlias(getView(), 'disabledActionMessages', 'serviceVersion.disabledActionMessages', 'object');
  681. });