/** * 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('views/common/select_custom_date_view'); describe('App.JobsCustomDatesSelectView', function () { var view; beforeEach(function () { view = App.JobsCustomDatesSelectView.create(); }); describe('#isCustomEndDate', function () { var cases = [ { duration: null, isCustomEndDate: false, title: 'duration not set' }, { duration: 1000, isCustomEndDate: false, title: 'preset duration' }, { duration: 0, isCustomEndDate: true, title: 'custom duration' } ]; beforeEach(function () { view.reopen({ validate: Em.K }); }); cases.forEach(function (item) { it(item.title, function () { view.set('customDateFormFields.duration', { value: item.duration }); expect(view.get('isCustomEndDate')).to.equal(item.isCustomEndDate); }); }); }); describe('#createCustomStartDate', function () { var cases = [ { startDate: '01/01/2016', hoursForStart: '01', minutesForStart: '00', middayPeriodForStart: 'AM', isInvalidDate: false, title: 'valid date and time' }, { startDate: '', hoursForStart: '01', minutesForStart: '00', middayPeriodForStart: 'AM', isInvalidDate: true, title: 'no date specified' }, { startDate: '01/01/2016', hoursForStart: '', minutesForStart: '00', middayPeriodForStart: 'AM', isInvalidDate: true, title: 'no hours specified' }, { startDate: '01/01/2016', hoursForStart: '01', minutesForStart: '', middayPeriodForStart: 'AM', isInvalidDate: true, title: 'no minutes specified' }, { startDate: '01/01/2016', hoursForStart: '01', minutesForStart: '00', middayPeriodForStart: '', isInvalidDate: true, title: 'no midday period specified' } ]; beforeEach(function () { view.reopen({ validate: Em.K }); }); cases.forEach(function (item) { it(item.title, function () { view.get('customDateFormFields').setProperties({ startDate: item.startDate, hoursForStart: item.hoursForStart, minutesForStart: item.minutesForStart, middayPeriodForStart: item.middayPeriodForStart }); expect(Em.isNone(view.createCustomStartDate())).to.equal(item.isInvalidDate); }); }); }); describe('#createCustomEndDate', function () { var customEndCases = [ { endDate: '01/01/2016', hoursForEnd: '01', minutesForEnd: '00', middayPeriodForEnd: 'AM', isInvalidDate: false, title: 'valid date and time' }, { endDate: '', hoursForEnd: '01', minutesForEnd: '00', middayPeriodForEnd: 'AM', isInvalidDate: true, title: 'no date specified' }, { endDate: '01/01/2016', hoursForEnd: '', minutesForEnd: '00', middayPeriodForEnd: 'AM', isInvalidDate: true, title: 'no hours specified' }, { endDate: '01/01/2016', hoursForEnd: '01', minutesForEnd: '', middayPeriodForEnd: 'AM', isInvalidDate: true, title: 'no minutes specified' }, { endDate: '01/01/2016', hoursForEnd: '01', minutesForEnd: '00', middayPeriodForEnd: '', isInvalidDate: true, title: 'no midday period specified' } ]; beforeEach(function () { view.reopen({ validate: Em.K }); }); customEndCases.forEach(function (item) { it(item.title, function () { view.get('customDateFormFields').setProperties({ endDate: item.endDate, hoursForEnd: item.hoursForEnd, minutesForEnd: item.minutesForEnd, middayPeriodForEnd: item.middayPeriodForEnd, duration: { value: 0 } }); expect(Em.isNone(view.createCustomEndDate(1000))).to.equal(item.isInvalidDate); }); }); it('preset duration', function () { view.set('customDateFormFields.duration', { value: 900000 }); expect(view.createCustomEndDate(1000)).to.equal(901000); }); }); describe('#setErrorMessage', function () { var cases = [ { key: 'startDate', property: 'isStartDateError', value: true, message: 'error', errorMessage: 'error', title: 'error' }, { key: 'endDate', property: 'isEndDateError', value: false, message: null, errorMessage: '', title: 'no error' } ]; cases.forEach(function (item) { describe(item.title, function () { beforeEach(function () { view.get('errors').setProperties({ isStartDateError: false, isEndDateError: true }); view.get('errorMessages').setProperties({ startDate: '', endDate: 'error' }); view.setErrorMessage(item.key, item.message); }); it('should set error flag', function () { expect(view.get('errors').get(item.property)).to.equal(item.value); }); it('should set error message', function () { expect(view.get('errorMessages').get(item.key)).to.equal(item.errorMessage); }); }); }); }); describe('#durationSelect', function () { var select; beforeEach(function () { select = view.get('durationSelect').create(); }); describe('#willInsertElement', function () { var cases = [ { duration: 1800000, selection: { value: 1800000, label: Em.I18n.t('jobs.customDateFilter.duration.30min') }, title: 'should detect preset option by value' }, { duration: Em.I18n.t('jobs.customDateFilter.duration.2hr'), selection: { value: 7200000, label: Em.I18n.t('jobs.customDateFilter.duration.2hr') }, title: 'should detect preset option by label' }, { duration: '40 minutes', selection: { value: 0, label: Em.I18n.t('common.custom') }, title: 'should set "Custom" option if preset one can\'t be detected' } ]; cases.forEach(function (item) { it(item.title, function () { select.set('selection', item.duration); select.willInsertElement(); expect(select.get('selection')).to.eql(item.selection); }); }); }); }); });