config_history_flow_test.js 20 KB

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