123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420 |
- /**
- * 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');
- require('controllers/main/mirroring/edit_dataset_controller');
- require('models/target_cluster');
- require('views/main/mirroring/edit_dataset_view');
- describe('App.MainMirroringEditDataSetController', function () {
- describe('#clearStep', function () {
- it('should clear all fields, error flags and messages', function () {
- var mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create();
- var errors = mainMirroringEditDataSetController.get('errors');
- var errorMessages = mainMirroringEditDataSetController.get('errorMessages');
- var formFeilds = mainMirroringEditDataSetController.get('formFields');
- formFeilds.set('datasetName', 'test');
- sinon.spy(mainMirroringEditDataSetController, 'clearErrors');
- mainMirroringEditDataSetController.clearStep();
- expect(mainMirroringEditDataSetController.clearErrors.calledOnce).to.be.true;
- Em.keys(formFeilds).forEach(function (field) {
- expect(formFeilds[field]).to.be.null;
- });
- mainMirroringEditDataSetController.clearErrors.restore();
- });
- });
- describe('#clearErrors', function () {
- it('should clear all error messages and flags', function () {
- var mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create();
- var errors = mainMirroringEditDataSetController.get('errors');
- var errorMessages = mainMirroringEditDataSetController.get('errorMessages');
- Em.keys(errors).forEach(function (error) {
- errors[error] = true;
- }, this);
- Em.keys(errorMessages).forEach(function (errorMessage) {
- errorMessages[errorMessage] = 'test';
- }, this);
- mainMirroringEditDataSetController.clearErrors();
- Em.keys(errors).forEach(function (error) {
- expect(errors[error]).to.be.false;
- });
- Em.keys(errorMessages).forEach(function (errorMessage) {
- expect(errorMessages[errorMessage]).to.be.empty;
- });
- });
- });
- describe('#showAddPopup', function () {
- it('should show popup and set isEdit as false', function () {
- var mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create();
- sinon.spy(App.ModalPopup, 'show');
- mainMirroringEditDataSetController.showAddPopup();
- expect(App.ModalPopup.show.calledOnce).to.be.true;
- expect(mainMirroringEditDataSetController.get('isEdit')).to.be.false;
- App.ModalPopup.show.restore();
- });
- });
- describe('#showEditPopup', function () {
- it('should show popup,set isEdit as true and set dataset id', function () {
- var mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create();
- var dataset = Ember.Object.create({
- id: 'test'
- });
- sinon.spy(App.ModalPopup, 'show');
- mainMirroringEditDataSetController.showEditPopup(dataset);
- expect(App.ModalPopup.show.calledOnce).to.equal(true);
- expect(mainMirroringEditDataSetController.get('isEdit')).to.be.true;
- expect(mainMirroringEditDataSetController.get('datasetIdToEdit')).to.equal('test');
- App.ModalPopup.show.restore();
- });
- });
- describe('#showPopup', function () {
- it('should show dataset popup and save its view', function () {
- var mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create();
- sinon.spy(App.ModalPopup, 'show');
- mainMirroringEditDataSetController.showPopup();
- expect(App.ModalPopup.show.calledOnce).to.equal(true);
- expect(mainMirroringEditDataSetController.get('popup')).to.not.be.empty;
- App.ModalPopup.show.restore();
- });
- });
- describe('#applyValidation', function () {
- it('should add observers to all fields to validate form', function () {
- var mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create();
- sinon.spy(mainMirroringEditDataSetController, 'validate');
- mainMirroringEditDataSetController.applyValidation();
- expect(mainMirroringEditDataSetController.validate.calledOnce).to.be.true;
- Em.keys(mainMirroringEditDataSetController.get('formFields')).forEach(function (field) {
- expect(mainMirroringEditDataSetController.hasObserverFor('formFields.' + field)).to.be.true;
- });
- mainMirroringEditDataSetController.validate.restore();
- });
- });
- var testCases = [
- {
- day: '01/01/2001',
- hours: '00',
- minutes: '00',
- middayPeriod: 'AM',
- result: new Date('01/01/2001 00:00 AM'),
- message: 'should return date object'
- },
- {
- day: '06/05/2014',
- hours: '12',
- minutes: '59',
- middayPeriod: 'PM',
- result: new Date('06/05/2014 12:59 PM'),
- message: 'should return date object'
- },
- {
- day: '',
- hours: '00',
- minutes: '00',
- middayPeriod: 'AM',
- result: null,
- message: 'should return null if there are empty fields'
- }
- ];
- describe('#scheduleStartDate', function () {
- testCases.forEach(function (test) {
- it(test.message, function () {
- var mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create({
- formFields: Ember.Object.create({
- datasetStartDate: test.day,
- hoursForStart: test.hours,
- minutesForStart: test.minutes,
- middayPeriodForStart: test.middayPeriod
- })
- });
- expect(mainMirroringEditDataSetController.get('scheduleStartDate')).to.deep.equal(test.result);
- });
- });
- });
- describe('#scheduleEndDate', function () {
- testCases.forEach(function (test) {
- it(test.message, function () {
- var mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create({
- formFields: Ember.Object.create({
- datasetEndDate: test.day,
- hoursForEnd: test.hours,
- minutesForEnd: test.minutes,
- middayPeriodForEnd: test.middayPeriod
- })
- });
- expect(mainMirroringEditDataSetController.get('scheduleEndDate')).to.deep.equal(test.result);
- });
- });
- });
- var formFields = Ember.Object.create({
- datasetName: 'test',
- datasetTargetClusterName: 'test',
- datasetSourceDir: '/test',
- datasetTargetDir: '/test',
- datasetStartDate: '01/19/2038',
- hoursForStart: '03',
- minutesForStart: '15',
- middayPeriodForStart: 'AM',
- datasetEndDate: '01/19/2039',
- hoursForEnd: '03',
- minutesForEnd: '15',
- middayPeriodForEnd: 'AM',
- datasetFrequency: '1',
- repeatOptionSelected: 'days'
- })
- describe('#validate', function () {
- it('should set an error for empty fields', function () {
- var mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create();
- mainMirroringEditDataSetController.validate();
- var errors = mainMirroringEditDataSetController.get('errors');
- var errorMessages = mainMirroringEditDataSetController.get('errorMessages');
- Em.keys(errors).forEach(function (error) {
- expect(errors[error]).to.be.true;
- });
- Em.keys(errorMessages).forEach(function (errorMessage) {
- expect(errorMessages[errorMessage]).to.equal(Em.I18n.t('mirroring.required.error'));
- });
- });
- it('should set an error if start date is after end date', function () {
- var mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create();
- var formFields = mainMirroringEditDataSetController.get('formFields');
- formFields.set('datasetStartDate', '04/07/2014');
- formFields.set('hoursForStart', '11');
- formFields.set('minutesForStart', '00');
- formFields.set('middayPeriodForStart', 'PM');
- formFields.set('datasetEndDate', '04/07/2014');
- formFields.set('hoursForEnd', '11');
- formFields.set('minutesForEnd', '00');
- formFields.set('middayPeriodForEnd', 'AM');
- mainMirroringEditDataSetController.validate();
- expect(mainMirroringEditDataSetController.get('errors.isEndDateError')).to.be.true;
- expect(mainMirroringEditDataSetController.get('errorMessages.endDate')).to.equal(Em.I18n.t('mirroring.dateOrder.error'));
- });
- it('should set an error if start date is in the past', function () {
- var mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create();
- var formFields = mainMirroringEditDataSetController.get('formFields');
- formFields.set('datasetStartDate', '04/07/2014');
- formFields.set('hoursForStart', '11');
- formFields.set('minutesForStart', '00');
- formFields.set('middayPeriodForStart', 'AM');
- mainMirroringEditDataSetController.validate();
- expect(mainMirroringEditDataSetController.get('errors.isStartDateError')).to.be.true;
- expect(mainMirroringEditDataSetController.get('errorMessages.startDate')).to.equal(Em.I18n.t('mirroring.startDate.error'));
- });
- it('should set an error if repeat field value consist not only form digits', function () {
- var mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create();
- var formFields = mainMirroringEditDataSetController.get('formFields');
- formFields.set('datasetFrequency', 'test');
- mainMirroringEditDataSetController.validate();
- expect(mainMirroringEditDataSetController.get('errors.isFrequencyError')).to.be.true;
- expect(mainMirroringEditDataSetController.get('errorMessages.frequency')).to.equal(Em.I18n.t('mirroring.required.invalidNumberError'));
- formFields.set('datasetFrequency', '100test');
- mainMirroringEditDataSetController.validate();
- expect(mainMirroringEditDataSetController.get('errors.isFrequencyError')).to.be.true;
- expect(mainMirroringEditDataSetController.get('errorMessages.frequency')).to.equal(Em.I18n.t('mirroring.required.invalidNumberError'));
- });
- it('should not set errors if all fields are filled correctly', function () {
- var mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create({
- formFields: formFields
- });
- mainMirroringEditDataSetController.validate();
- var errors = mainMirroringEditDataSetController.get('errors');
- var errorMessages = mainMirroringEditDataSetController.get('errorMessages');
- Em.keys(errors).forEach(function (error) {
- expect(errors[error]).to.be.false;
- });
- Em.keys(errorMessages).forEach(function (errorMessage) {
- expect(errorMessages[errorMessage]).to.be.empty;
- });
- });
- });
- describe('#addZero', function () {
- it('should add 0 for numbers less than 10', function () {
- var mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create();
- expect(mainMirroringEditDataSetController.addZero(1)).to.equal('01');
- expect(mainMirroringEditDataSetController.addZero(9)).to.equal('09');
- expect(mainMirroringEditDataSetController.addZero(0)).to.equal('00');
- });
- it('should not add 0 for numbers greater than 9', function () {
- var mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create();
- expect(mainMirroringEditDataSetController.addZero(10)).to.equal('10');
- expect(mainMirroringEditDataSetController.addZero(99)).to.equal('99');
- });
- });
- describe('#toTZFormat', function () {
- it('should convert date to TZ format', function () {
- var mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create();
- expect(mainMirroringEditDataSetController.toTZFormat(new Date(Date.UTC(2014, 0, 1, 1, 1)))).to.equal('2014-01-01T01:01Z');
- expect(mainMirroringEditDataSetController.toTZFormat(new Date(Date.UTC(2014, 11, 31, 23, 59)))).to.equal('2014-12-31T23:59Z');
- });
- });
- describe('#toAMPMHours', function () {
- it('should convert time to 12-hours format', function () {
- var mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create();
- expect(mainMirroringEditDataSetController.toAMPMHours(13)).to.equal('01');
- expect(mainMirroringEditDataSetController.toAMPMHours(20)).to.equal('08');
- expect(mainMirroringEditDataSetController.toAMPMHours(24)).to.equal('12');
- expect(mainMirroringEditDataSetController.toAMPMHours(0)).to.equal('12');
- });
- it('should not convert time if argument is less than 12', function () {
- var mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create();
- expect(mainMirroringEditDataSetController.toAMPMHours(1)).to.equal('01');
- expect(mainMirroringEditDataSetController.toAMPMHours(8)).to.equal('08');
- expect(mainMirroringEditDataSetController.toAMPMHours(11)).to.equal('11');
- });
- });
- describe('#save', function () {
- it('should create XML and send it to server', function () {
- var mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create({
- popup: Ember.Object.create({
- isSaving: false
- })
- });
- sinon.spy(mainMirroringEditDataSetController, 'createDatasetXML');
- sinon.spy(mainMirroringEditDataSetController, 'sendDatasetToServer');
- mainMirroringEditDataSetController.save();
- expect(mainMirroringEditDataSetController.createDatasetXML.calledOnce).to.be.true;
- expect(mainMirroringEditDataSetController.sendDatasetToServer.calledOnce).to.be.true;
- expect(mainMirroringEditDataSetController.get('popup.isSaving')).to.be.true;
- mainMirroringEditDataSetController.createDatasetXML.restore();
- mainMirroringEditDataSetController.sendDatasetToServer.restore();
- });
- });
- describe('#createDatasetXML', function () {
- it('should create XML-fromatted data', function () {
- var mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create({
- formFields: formFields
- });
- var startDate = new Date('01/19/2038 03:15 AM').toISOString().replace(/\:\d{2}\.\d{3}/, '');
- var endDate = new Date('01/19/2039 03:15 AM').toISOString().replace(/\:\d{2}\.\d{3}/, '');
- var expectedResult = '<?xml version="1.0"?><feed description="" name="' + App.mirroringDatasetNamePrefix + 'test" xmlns="uri:falcon:feed:0.1"><frequency>days(1)' +
- '</frequency><clusters><cluster name="' + App.get('clusterName') + '" type="source"><validity start="' + startDate + '" end="' + endDate +
- '"/><retention limit="days(7)" action="delete"/></cluster><cluster name="test" type="target"><validity start="' + startDate + '" end="' + endDate +
- '"/><retention limit="months(1)" action="delete"/><locations><location type="data" path="/test" /></locations></cluster></clusters><locations><location type="data" path="' +
- '/test" /></locations><ACL owner="hue" group="users" permission="0755" /><schema location="/none" provider="none"/></feed>';
- var result = mainMirroringEditDataSetController.createDatasetXML();
- expect(result).to.equal(expectedResult);
- });
- });
- describe('#sendDatasetToServer', function () {
- var mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create({
- formFields: formFields
- });
- beforeEach(function () {
- sinon.stub(App.ajax, 'send', Em.K);
- });
- afterEach(function () {
- App.ajax.send.restore();
- });
- it('should send data with correct dataset name', function () {
- mainMirroringEditDataSetController.sendDatasetToServer('test');
- expect(App.ajax.send.args[0][0].data.name).to.equal(App.mirroringDatasetNamePrefix + formFields.datasetName);
- });
- it('should send data from param', function () {
- mainMirroringEditDataSetController.sendDatasetToServer('test');
- expect(App.ajax.send.args[0][0].data.entity).to.equal('test');
- });
- it('should use edit request if isEdit is true', function () {
- mainMirroringEditDataSetController.set('isEdit', true);
- mainMirroringEditDataSetController.sendDatasetToServer('test');
- expect(App.ajax.send.args[0][0].name).to.equal('mirroring.update_entity');
- });
- it('should use create request if isEdit is false', function () {
- mainMirroringEditDataSetController.set('isEdit', false);
- mainMirroringEditDataSetController.sendDatasetToServer('test');
- expect(App.ajax.send.args[0][0].name).to.equal('mirroring.create_new_dataset');
- });
- });
- describe('#onSaveSuccess', function () {
- it('should hide popup and load data', function () {
- var mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create({
- popup: Ember.Object.create({
- isSaving: true,
- hide: function () {
- }
- })
- });
- App.router.set('mainMirroringController', Ember.Object.create({
- loadData: function () {
- }
- }));
- sinon.spy(mainMirroringEditDataSetController.get('popup'), 'hide');
- sinon.spy(App.router.get('mainMirroringController'), 'loadData');
- mainMirroringEditDataSetController.onSaveSuccess();
- expect(mainMirroringEditDataSetController.get('popup.isSaving')).to.be.false;
- expect(App.router.get('mainMirroringController').loadData.calledOnce).to.be.true;
- expect(mainMirroringEditDataSetController.get('popup').hide.calledOnce).to.be.true;
- mainMirroringEditDataSetController.get('popup').hide.restore();
- App.router.get('mainMirroringController').loadData.restore();
- });
- });
- describe('#onSaveError', function () {
- var mainMirroringEditDataSetController;
- beforeEach(function () {
- mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create({
- popup: Ember.Object.create({
- isSaving: true
- })
- });
- sinon.stub(App, 'showAlertPopup', Em.K);
- });
- afterEach(function () {
- App.showAlertPopup.restore();
- });
- it('shouldn\'t show error popup and enable button', function () {
- mainMirroringEditDataSetController.onSaveError(null);
- expect(App.showAlertPopup.calledOnce).to.be.false;
- expect(mainMirroringEditDataSetController.get('popup.isSaving')).to.be.false;
- });
- it('should show error popup and enable button', function () {
- mainMirroringEditDataSetController.onSaveError({responseText: '<message>test</message>'});
- expect(App.showAlertPopup.args[0][1]).to.be.equal(Em.I18n.t('mirroring.manageClusters.error') + ': test');
- expect(mainMirroringEditDataSetController.get('popup.isSaving')).to.be.false;
- });
- });
- describe('#saveDisabled', function () {
- it('should return false if there are no errors', function () {
- var mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create({});
- expect(mainMirroringEditDataSetController.get('saveDisabled')).to.be.false;
- });
- it('should return true if there are some errors', function () {
- var mainMirroringEditDataSetController = App.MainMirroringEditDataSetController.create();
- mainMirroringEditDataSetController.set('errors.isNameError', true);
- expect(mainMirroringEditDataSetController.get('saveDisabled')).to.be.true;
- });
- });
- });
|