1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285 |
- /**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- var App = require('app');
- var testHelpers = require('test/helpers');
- require('utils/polling');
- describe('App.Poll', function () {
- var poll;
- beforeEach(function () {
- poll = App.Poll.create();
- });
- describe('#isCompleted', function () {
- var cases = [
- {
- isError: true,
- isSuccess: false,
- isCompleted: true,
- title: 'error'
- },
- {
- isError: false,
- isSuccess: true,
- isCompleted: true,
- title: 'success'
- },
- {
- isError: false,
- isSuccess: false,
- isCompleted: false,
- title: 'incomplete'
- }
- ];
- cases.forEach(function (item) {
- it(item.title, function () {
- poll.setProperties({
- isError: item.isError,
- isSuccess: item.isSuccess
- });
- expect(poll.get('isCompleted')).to.equal(item.isCompleted);
- });
- });
- });
- describe('#showLink', function () {
- var cases = [
- {
- isPolling: true,
- isStarted: false,
- showLink: true,
- title: 'polling'
- },
- {
- isPolling: false,
- isStarted: true,
- showLink: true,
- title: 'started'
- },
- {
- isPolling: false,
- isStarted: false,
- showLink: false,
- title: 'not polling, not started'
- }
- ];
- cases.forEach(function (item) {
- it(item.title, function () {
- poll.setProperties({
- isPolling: item.isPolling,
- isStarted: item.isStarted
- });
- expect(poll.get('showLink')).to.equal(item.showLink);
- });
- });
- });
- describe('#start', function () {
- var cases = [
- {
- setRequestIdCallCount: 1,
- startPollingCallCount: 0,
- title: 'request id not defined'
- },
- {
- requestId: null,
- setRequestIdCallCount: 1,
- startPollingCallCount: 0,
- title: 'request id is null'
- },
- {
- requestId: 0,
- setRequestIdCallCount: 0,
- startPollingCallCount: 1,
- title: 'request id is zero'
- },
- {
- requestId: 1,
- setRequestIdCallCount: 0,
- startPollingCallCount: 1,
- title: 'request id is non-zero'
- }
- ];
- cases.forEach(function (item) {
- describe(item.title, function () {
- beforeEach(function () {
- sinon.stub(poll, 'setRequestId', Em.K);
- sinon.stub(poll, 'startPolling', Em.K);
- poll.set('requestId', item.requestId);
- poll.start();
- });
- afterEach(function () {
- poll.setRequestId.restore();
- poll.startPolling.restore();
- });
- it('set request id', function () {
- expect(poll.setRequestId.callCount).to.equal(item.setRequestIdCallCount);
- });
- it('start polling', function () {
- expect(poll.startPolling.callCount).to.equal(item.startPollingCallCount);
- });
- });
- });
- });
- describe('#setRequestId', function () {
- var ajaxObj;
- beforeEach(function () {
- $.ajax.restore();
- sinon.stub($, 'ajax', function (obj) {
- return obj;
- });
- });
- it('AJAX request parameters', function () {
- var ajaxProps = {
- url: '/default',
- data: {}
- };
- poll.setProperties(ajaxProps);
- poll.setRequestId();
- ajaxObj = $.ajax.firstCall.args[0];
- expect(Em.Object.create(ajaxObj).getProperties(['url', 'data'])).to.eql(ajaxProps);
- });
- describe('#success', function () {
- var cases = [
- {
- data: undefined,
- isSuccess: true,
- isError: false,
- requestId: 1,
- doPollingCallCount: 0,
- title: 'data not defined'
- },
- {
- data: 'null',
- isSuccess: true,
- isError: false,
- requestId: 1,
- doPollingCallCount: 0,
- title: 'null data'
- },
- {
- data: '',
- isSuccess: true,
- isError: false,
- requestId: 1,
- doPollingCallCount: 0,
- title: 'empty data'
- },
- {
- data: '{}',
- isSuccess: false,
- isError: true,
- requestId: undefined,
- doPollingCallCount: 1,
- title: 'empty object'
- },
- {
- data: '{"Requests":null}',
- isSuccess: false,
- isError: true,
- requestId: null,
- doPollingCallCount: 1,
- title: 'no requests info'
- },
- {
- data: '{"Requests":{}}',
- isSuccess: false,
- isError: true,
- requestId: undefined,
- doPollingCallCount: 1,
- title: 'empty requests info'
- },
- {
- data: '{"Requests":{"name":"r0"}}',
- isSuccess: false,
- isError: true,
- requestId: undefined,
- doPollingCallCount: 1,
- title: 'no request id'
- },
- {
- data: '{"Requests":{"id":0}}',
- isSuccess: false,
- isError: true,
- requestId: 0,
- doPollingCallCount: 1,
- title: 'request id available'
- }
- ];
- cases.forEach(function (item) {
- describe(item.title, function () {
- var ajaxObject;
- beforeEach(function () {
- sinon.stub(poll, 'doPolling', Em.K);
- poll.setProperties({
- isSuccess: false,
- isError: true,
- requestId: 1
- });
- poll.setRequestId();
- ajaxObject = $.ajax.firstCall.args[0];
- ajaxObject.success(item.data);
- });
- afterEach(function () {
- poll.doPolling.restore();
- });
- it('isSuccess', function () {
- expect(poll.get('isSuccess')).to.equal(item.isSuccess);
- });
- it('isError', function () {
- expect(poll.get('isError')).to.equal(item.isError);
- });
- it('requestId', function () {
- expect(poll.get('requestId')).to.equal(item.requestId);
- });
- it('doPolling call', function () {
- expect(poll.doPolling.callCount).to.equal(item.doPollingCallCount);
- });
- });
- });
- });
- describe('#error', function () {
- beforeEach(function () {
- poll.setProperties({
- isSuccess: true,
- isError: false
- });
- poll.setRequestId();
- ajaxObj = $.ajax.firstCall.args[0];
- ajaxObj.error();
- });
- it('isSuccess', function () {
- expect(poll.get('isSuccess')).to.be.false;
- });
- it('isError', function () {
- expect(poll.get('isError')).to.be.true;
- });
- });
- });
- describe('#updateTaskLog', function () {
- beforeEach(function () {
- sinon.stub(poll, 'pollTaskLog', Em.K);
- poll.set('currentTaskId', 0);
- poll.updateTaskLog(1);
- });
- afterEach(function () {
- poll.pollTaskLog.restore();
- });
- it('should change task id', function () {
- expect(poll.get('currentTaskId')).to.equal(1);
- });
- it('should poll task log', function () {
- expect(poll.pollTaskLog.calledOnce).to.be.true;
- });
- });
- describe('#doPolling', function () {
- var cases = [
- {
- requestId: undefined,
- startPollingCallCount: 0,
- title: 'request id is undefined'
- },
- {
- requestId: null,
- startPollingCallCount: 0,
- title: 'request id is null'
- },
- {
- requestId: 0,
- startPollingCallCount: 1,
- title: 'request id is 0'
- },
- {
- requestId: 1,
- startPollingCallCount: 1,
- title: 'request id is gra than 0'
- }
- ];
- beforeEach(function () {
- sinon.stub(poll, 'startPolling', Em.K);
- });
- afterEach(function () {
- poll.startPolling.restore();
- });
- cases.forEach(function (item) {
- it(item.title, function () {
- poll.set('requestId', item.requestId);
- poll.doPolling();
- expect(poll.startPolling.callCount).to.equal(item.startPollingCallCount);
- });
- });
- });
- describe('#pollTaskLog', function () {
- var cases = [
- {
- currentTaskId: undefined,
- ajaxCallArguments: undefined,
- title: 'current task id is undefined'
- },
- {
- currentTaskId: null,
- ajaxCallArguments: undefined,
- title: 'current task id is null'
- },
- {
- currentTaskId: 0,
- ajaxCallArguments: [{
- name: 'background_operations.get_by_task',
- data: {
- requestId: 0,
- taskId: 0
- },
- success: 'pollTaskLogSuccessCallback'
- }],
- title: 'current task id is 0'
- },
- {
- currentTaskId: 1,
- ajaxCallArguments: [{
- name: 'background_operations.get_by_task',
- data: {
- requestId: 0,
- taskId: 1
- },
- success: 'pollTaskLogSuccessCallback'
- }],
- title: 'current task id is more than 0'
- }
- ];
- cases.forEach(function (item) {
- it(item.title, function () {
- poll.setProperties({
- requestId: 0,
- currentTaskId: item.currentTaskId
- });
- poll.pollTaskLog();
- if (item.ajaxCallArguments) {
- item.ajaxCallArguments[0].sender = poll;
- }
- expect(testHelpers.findAjaxRequest('name', 'background_operations.get_by_task')).to.eql(item.ajaxCallArguments);
- });
- });
- });
- describe('#pollTaskLogSuccessCallback', function () {
- it('polled data', function () {
- poll.set('polledData', [
- {
- Tasks: {
- id: 0
- }
- },
- {
- Tasks: {
- id: 1
- }
- },
- {
- Tasks: {
- id: 2
- }
- }
- ]);
- poll.pollTaskLogSuccessCallback({
- Tasks: {
- id: 1,
- stdout: 'stdout',
- stderr: 'stderr'
- }
- });
- expect(poll.get('polledData').toArray()).to.eql([
- {
- Tasks: {
- id: 0
- }
- },
- {
- Tasks: {
- id: 1,
- stdout: 'stdout',
- stderr: 'stderr'
- }
- },
- {
- Tasks: {
- id: 2
- }
- }
- ]);
- });
- });
- describe('#startPolling', function () {
- var cases = [
- {
- requestId: undefined,
- ajaxCallArguments: undefined,
- result: false,
- pollTaskLogCallCount: 0,
- title: 'request id is undefined'
- },
- {
- requestId: null,
- ajaxCallArguments: undefined,
- result: false,
- pollTaskLogCallCount: 0,
- title: 'request id is null'
- },
- {
- requestId: 0,
- ajaxCallArguments: [{
- name: 'background_operations.get_by_request',
- data: {
- requestId: 0
- },
- success: 'reloadSuccessCallback',
- error: 'reloadErrorCallback'
- }],
- result: true,
- pollTaskLogCallCount: 1,
- title: 'request id is 0'
- },
- {
- requestId: 1,
- ajaxCallArguments: [{
- name: 'background_operations.get_by_request',
- data: {
- requestId: 1
- },
- success: 'reloadSuccessCallback',
- error: 'reloadErrorCallback'
- }],
- result: true,
- pollTaskLogCallCount: 1,
- title: 'request id is more than 0'
- }
- ];
- cases.forEach(function (item) {
- var result;
- describe(item.title, function () {
- beforeEach(function () {
- sinon.stub(poll, 'pollTaskLog', Em.K);
- poll.set('requestId', item.requestId);
- result = poll.startPolling();
- if (item.ajaxCallArguments) {
- item.ajaxCallArguments[0].sender = poll;
- item.ajaxCallArguments[0].data.callback = poll.startPolling;
- }
- });
- afterEach(function () {
- poll.pollTaskLog.restore();
- });
- it('AJAX request', function () {
- expect(testHelpers.findAjaxRequest('name', 'background_operations.get_by_request')).to.eql(item.ajaxCallArguments);
- });
- it('result', function () {
- expect(result).to.equal(item.result);
- });
- it('pollTaskLog', function () {
- expect(poll.pollTaskLog.callCount).to.equal(item.pollTaskLogCallCount);
- });
- });
- });
- });
- describe('#reloadErrorCallback', function () {
- var cases = [
- {
- status: undefined,
- isSuccess: false,
- isError: false,
- title: 'status is undefined'
- },
- {
- status: null,
- isSuccess: false,
- isError: false,
- title: 'status is null'
- },
- {
- status: 0,
- isSuccess: false,
- isError: false,
- title: 'status is 0'
- },
- {
- status: 200,
- isSuccess: true,
- isError: false,
- title: 'success'
- },
- {
- status: 404,
- isSuccess: false,
- isError: true,
- title: 'error'
- }
- ];
- cases.forEach(function (item) {
- it(item.title, function () {
- poll.setProperties({
- isSuccess: item.isSuccess,
- isError: false
- });
- poll.reloadErrorCallback({
- status: item.status
- }, null, null, null, {});
- expect(poll.get('isError')).to.equal(item.isError);
- });
- });
- });
- describe('#replacePolledData', function () {
- var cases = [
- {
- currentTaskId: undefined,
- data: [],
- result: [],
- title: 'current task id is undefined'
- },
- {
- currentTaskId: null,
- data: [],
- result: [],
- title: 'current task id is null'
- },
- {
- currentTaskId: 0,
- polledData: [
- {
- Tasks: {
- id: 0
- }
- },
- {
- Tasks: {
- id: 1
- }
- }
- ],
- data: [
- {
- Tasks: {
- id: 1
- }
- }
- ],
- result: [
- {
- Tasks: {
- id: 1
- }
- }
- ],
- title: 'current task id is 0, no corresponding task passed'
- },
- {
- currentTaskId: 1,
- polledData: [
- {
- Tasks: {
- id: 0
- }
- }
- ],
- data: [
- {
- Tasks: {
- id: 0
- }
- },
- {
- Tasks: {
- id: 1
- }
- }
- ],
- result: [
- {
- Tasks: {
- id: 0
- }
- },
- {
- Tasks: {
- id: 1
- }
- }
- ],
- title: 'current task id is more than 0, no corresponding task set'
- },
- {
- currentTaskId: 2,
- polledData: [
- {
- Tasks: {
- id: 0
- }
- },
- {
- Tasks: {
- id: 2,
- stdout: 'stdout',
- stderr: 'stderr'
- }
- }
- ],
- data: [
- {
- Tasks: {
- id: 0
- }
- },
- {
- Tasks: {
- id: 2
- }
- },
- {
- Tasks: {
- id: 3
- }
- }
- ],
- result: [
- {
- Tasks: {
- id: 0
- }
- },
- {
- Tasks: {
- id: 2,
- stdout: 'stdout',
- stderr: 'stderr'
- }
- },
- {
- Tasks: {
- id: 3
- }
- }
- ],
- title: 'current task id is more than 0, corresponding task set and passed'
- },
- {
- currentTaskId: 3,
- polledData: [
- {
- Tasks: {
- id: 0
- }
- }
- ],
- data: [
- {
- Tasks: {
- id: 1
- }
- }
- ],
- result: [
- {
- Tasks: {
- id: 1
- }
- }
- ],
- title: 'current task id is more than 0, corresponding task neither set nor passed'
- }
- ];
- cases.forEach(function (item) {
- it(item.title, function () {
- poll.setProperties({
- currentTaskId: item.currentTaskId,
- polledData: item.polledData || null
- });
- poll.replacePolledData(item.data);
- expect(poll.get('polledData').toArray()).to.eql(item.result);
- });
- });
- });
- describe('#calculateProgressByTasks', function () {
- var cases = [
- {
- tasksData: [
- {
- Tasks: {
- status: 'QUEUED'
- }
- },
- {
- Tasks: {
- status: 'QUEUED'
- }
- }
- ],
- result: 9,
- title: 'all tasks pending'
- },
- {
- tasksData: [
- {
- Tasks: {
- status: 'IN_PROGRESS'
- }
- },
- {
- Tasks: {
- status: 'IN_PROGRESS'
- }
- }
- ],
- result: 35,
- title: 'all tasks in progress'
- },
- {
- tasksData: [
- {
- Tasks: {
- status: 'COMPLETED'
- }
- },
- {
- Tasks: {
- status: 'COMPLETED'
- }
- }
- ],
- result: 100,
- title: 'all tasks completed'
- },
- {
- tasksData: [
- {
- Tasks: {
- status: 'FAILED'
- }
- },
- {
- Tasks: {
- status: 'FAILED'
- }
- }
- ],
- result: 100,
- title: 'all tasks failed'
- },
- {
- tasksData: [
- {
- Tasks: {
- status: 'ABORTED'
- }
- },
- {
- Tasks: {
- status: 'ABORTED'
- }
- }
- ],
- result: 100,
- title: 'all tasks aborted'
- },
- {
- tasksData: [
- {
- Tasks: {
- status: 'TIMEDOUT'
- }
- },
- {
- Tasks: {
- status: 'TIMEDOUT'
- }
- }
- ],
- result: 100,
- title: 'all tasks timed out'
- },
- {
- tasksData: [
- {
- Tasks: {
- status: 'QUEUED'
- }
- },
- {
- Tasks: {
- status: 'COMPLETED'
- }
- }
- ],
- result: 55,
- title: 'pending and finished tasks'
- },
- {
- tasksData: [
- {
- Tasks: {
- status: 'IN_PROGRESS'
- }
- },
- {
- Tasks: {
- status: 'FAILED'
- }
- }
- ],
- result: 68,
- title: 'running and finished tasks'
- },
- {
- tasksData: [
- {
- Tasks: {
- status: 'IN_PROGRESS'
- }
- },
- {
- Tasks: {
- status: 'QUEUED'
- }
- }
- ],
- result: 22,
- title: 'running and pending tasks'
- },
- {
- tasksData: [
- {
- Tasks: {
- status: 'IN_PROGRESS'
- }
- },
- {
- Tasks: {
- status: 'QUEUED'
- }
- },
- {
- Tasks: {
- status: 'ABORTED'
- }
- }
- ],
- result: 48,
- title: 'running, pending and finished tasks'
- }
- ];
- cases.forEach(function (item) {
- it(item.title, function () {
- expect(poll.calculateProgressByTasks(item.tasksData)).to.equal(item.result);
- });
- });
- });
- describe('#isPollingFinished', function () {
- var cases = [
- {
- polledData: [
- {
- Tasks: {
- status: 'QUEUED'
- }
- },
- {
- Tasks: {
- status: 'COMPLETED'
- }
- }
- ],
- isPollingFinished: false,
- isSuccess: false,
- isError: false,
- title: 'some queued tasks'
- },
- {
- polledData: [
- {
- Tasks: {
- status: 'IN_PROGRESS'
- }
- },
- {
- Tasks: {
- status: 'COMPLETED'
- }
- }
- ],
- isPollingFinished: false,
- isSuccess: false,
- isError: false,
- title: 'some running tasks'
- },
- {
- polledData: [
- {
- Tasks: {
- status: 'PENDING'
- }
- },
- {
- Tasks: {
- status: 'COMPLETED'
- }
- }
- ],
- isPollingFinished: false,
- isSuccess: false,
- isError: false,
- title: 'some pending tasks'
- },
- {
- polledData: [
- {
- Tasks: {
- status: 'FAILED'
- }
- },
- {
- Tasks: {
- status: 'COMPLETED'
- }
- }
- ],
- isPollingFinished: true,
- isSuccess: false,
- isError: true,
- title: 'all tasks finished, some failed'
- },
- {
- polledData: [
- {
- Tasks: {
- status: 'ABORTED'
- }
- },
- {
- Tasks: {
- status: 'COMPLETED'
- }
- }
- ],
- isPollingFinished: true,
- isSuccess: false,
- isError: true,
- title: 'all tasks finished, some aborted'
- },
- {
- polledData: [
- {
- Tasks: {
- status: 'ABORTED'
- }
- },
- {
- Tasks: {
- status: 'COMPLETED'
- }
- }
- ],
- isPollingFinished: true,
- isSuccess: false,
- isError: true,
- title: 'all tasks finished, some timed out'
- },
- {
- polledData: [
- {
- Tasks: {
- status: 'COMPLETED'
- }
- },
- {
- Tasks: {
- status: 'COMPLETED'
- }
- }
- ],
- isPollingFinished: true,
- isSuccess: true,
- isError: false,
- title: 'all tasks finished successfully'
- }
- ];
- cases.forEach(function (item) {
- describe(item.title, function () {
- var result;
- beforeEach(function () {
- poll.setProperties({
- isSuccess: false,
- isError: false
- });
- result = poll.isPollingFinished(item.polledData);
- });
- it('isPollingFinished', function () {
- expect(result).to.equal(item.isPollingFinished);
- });
- it('isSuccess', function () {
- expect(poll.get('isSuccess')).to.equal(item.isSuccess);
- });
- it('isError', function () {
- expect(poll.get('isError')).to.equal(item.isError);
- });
- });
- });
- });
- describe('#parseInfo', function () {
- var cases = [
- {
- polledData: {
- Requests: {
- id: 1
- }
- },
- replacePolledDataCallCount: 0,
- progress: '0',
- result: false,
- title: 'no corresponding request data'
- },
- {
- polledData: {
- tasks: []
- },
- replacePolledDataCallCount: 1,
- progress: '100',
- result: false,
- title: 'no request id info'
- },
- {
- polledData: {
- Requests: {
- id: 0
- },
- tasks: []
- },
- replacePolledDataCallCount: 1,
- progress: '100',
- result: false,
- title: 'no tasks'
- },
- {
- polledData: {
- Requests: {
- id: 0
- },
- tasks: [
- {
- Tasks: {
- status: 'PENDING'
- }
- },
- {
- Tasks: {
- status: 'COMPLETED'
- }
- }
- ]
- },
- replacePolledDataCallCount: 1,
- progress: '100',
- result: false,
- title: 'not all tasks finished'
- },
- {
- polledData: {
- Requests: {
- id: 0
- },
- tasks: [
- {
- Tasks: {
- status: 'FAILED'
- }
- },
- {
- Tasks: {
- status: 'COMPLETED'
- }
- }
- ]
- },
- replacePolledDataCallCount: 1,
- progress: '100',
- result: true,
- title: 'all tasks finished'
- }
- ];
- cases.forEach(function (item) {
- describe(item.title, function () {
- var result;
- beforeEach(function () {
- sinon.stub(poll, 'replacePolledData', Em.K);
- sinon.stub(poll, 'calculateProgressByTasks').returns(100);
- sinon.stub(poll, 'isPollingFinished', function (data) {
- return data.length > 0 && !(data.someProperty('Tasks.status', 'QUEUED') || data.someProperty('Tasks.status', 'IN_PROGRESS')
- || data.someProperty('Tasks.status', 'PENDING'));
- });
- poll.setProperties({
- requestId: 0,
- progress: '0'
- });
- result = poll.parseInfo(item.polledData);
- });
- afterEach(function () {
- poll.replacePolledData.restore();
- poll.calculateProgressByTasks.restore();
- poll.isPollingFinished.restore();
- });
- it('replacePolledData call', function () {
- expect(poll.replacePolledData.callCount).to.equal(item.replacePolledDataCallCount);
- });
- if (item.replacePolledDataCallCount) {
- it('replacePolledData argument', function () {
- expect(poll.replacePolledData.firstCall.args).to.eql([item.polledData.tasks]);
- });
- }
- it('progress', function () {
- expect(poll.get('progress')).to.equal(item.progress);
- });
- it('result', function () {
- expect(result).to.equal(item.result);
- });
- });
- });
- });
- });
|