blob: 9d492e978c26f9d7b8d9d4a81faf3097566c9d55 [file] [log] [blame]
/**
* 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);
});
});
});
});
});