Вход Регистрация
Файл: time/spec/js/TimepickerSpec.js
Строк: 397
<?php
describe
('Timepicker feature', function() {
  
'use strict';

  var 
$input1,
    
$input2,
    
$input3,
    
$timepicker1,
    
$timepicker2,
    
$timepicker3,
    
tp1,
    
tp2,
    
tp3;

  
beforeEach(function () {
    
loadFixtures('timepicker.html');

    
$input1 = $('#timepicker1');
    
$timepicker1 $input1.timepicker();
    
tp1 $timepicker1.data('timepicker');

    
$input2 = $('#timepicker2');
    
$timepicker2 $input2.timepicker({
      
template'modal',
      
showSecondstrue,
      
minuteStep30,
      
secondStep30,
      
defaultTimefalse
    
});
    
tp2 $timepicker2.data('timepicker');

    
$input3 = $('#timepicker3');
    
$timepicker3 $input3.timepicker({
      
showMeridianfalse,
      
showSecondstrue,
      
defaultTime'13:25:15'
    
});
    
tp3 $timepicker3.data('timepicker');
  });

  
afterEach(function () {
    if (
$input1.data('timepicker') !== undefined) {
      
$input1.data('timepicker').remove();
    }
    if (
$input2.data('timepicker') !== undefined) {
      
$input2.data('timepicker').remove();
    }
    if (
$input3.data('timepicker') !== undefined) {
      
$input3.data('timepicker').remove();
    }
    
$input1.remove();
    
$input2.remove();
    
$input3.remove();
  });

  
it('should be available on the jquery object', function() {
    
expect($.fn.timepicker).toBeDefined();
  });

  
it('should be chainable', function() {
    
expect($timepicker1).toBe($input1);
  });

  
it('should have sensible defaults', function() {
    
expect(tp1.defaultTime).toBeTruthy();
    
expect(tp1.minuteStep).toBe(15);
    
expect(tp1.secondStep).toBe(15);
    
expect(tp1.disableFocus).toBe(false);
    
expect(tp1.showSeconds).toBe(false);
    
expect(tp1.showInputs).toBe(true);
    
expect(tp1.showMeridian).toBe(true);
    
expect(tp1.template).toBe('dropdown');
    
expect(tp1.modalBackdrop).toBe(false);
    
expect(tp1.modalBackdrop).toBe(false);
    
expect(tp1.isOpen).toBe(false);
  });

  
it('should allow user to configure defaults', function() {
    
expect(tp2.template).toBe('modal');
    
expect(tp2.minuteStep).toBe(30);
  });

  
it('should be configurable with data attributes', function() {
    $(
'body').append('<div id="hi" class="bootstrap-timepicker"><input id="customTimepicker" data-template="modal" data-minute-step="30" data-modal-backdrop="true" data-show-meridian="true" type="text"/></div');

    var 
$customInput = $('body').find('#customTimepicker'),
        
tpCustom $customInput.timepicker().data('timepicker');

    
expect($('body').find('#customTimepicker').length).toBe(1);
    
expect(tpCustom.template).toBe('modal');
    
expect(tpCustom.minuteStep).toBe(30'data-minute-step not working');
    
expect(tpCustom.modalBackdrop).toBe(true'data-modal-backdrop not working');
    
expect(tpCustom.showMeridian).toBe(true'data-show-meridian not working');

    
tpCustom.remove();
  });

  
it('should have current time by default', function() {
    var 
dTime = new Date(),
      
hour dTime.getHours(),
      
minute Math.floor(dTime.getMinutes() / tp1.minuteStep) * tp1.minuteStep;

    if (
hour 12) {
      
hour hour 12;
    }

    
expect(tp1.hour).toBe(hour);
    
expect(tp1.minute).toBe(minute);
  });

  
it('should not override time with current time if value is already set', function() {
    $(
'body').append('<div id="timepickerCustom"><input id="timepickerCustomInput" type="text" value="12:15 AM" /></div>');
    var 
$customInput = $('#timepickerCustomInput').timepicker(),
      
tpCustom $customInput.data('timepicker');

    
expect($customInput.val()).toBe('12:15 AM');

    
tpCustom.remove();
    $(
'#timepickerCustom').remove();
  });

  
it('should have no value if defaultTime is set to false', function() {
    
expect($input2.val()).toBe('');
  });

  
it('should be able to set default time with config option', function() {
    
expect(tp3.getTime()).toBe('13:25:15');
  });

  
it('should update the element and widget with the setTime method', function() {
    
tp2.setTime('09:15:20 AM');

    
expect(tp2.hour).toBe(9);
    
expect(tp2.minute).toBe(15);
    
expect(tp2.second).toBe(20);
    
expect(tp2.meridian).toBe('AM');
    
expect($input2.val()).toBe('09:15:20 AM');
    
expect(tp2.$widget.find('.bootstrap-timepicker-hour').val()).toBe('09');
    
expect(tp2.$widget.find('.bootstrap-timepicker-minute').val()).toBe('15');
    
expect(tp2.$widget.find('.bootstrap-timepicker-second').val()).toBe('20');
    
expect(tp2.$widget.find('.bootstrap-timepicker-meridian').val()).toBe('AM');
  });

  
it('should be able to format time values into a string', function() {
    
expect(tp2.formatTime(31545'PM')).toBe('03:15:45 PM');
  });

  
it('should be able get & set the pickers time', function() {
    
tp3.setTime('23:15:20');
    
expect(tp3.getTime()).toBe('23:15:20');
  });

  
it('should update picker on blur', function() {
    
$input1.val('10:25 AM');
    
expect(tp1.getTime()).not.toBe('10:25 AM');
    
$input1.trigger('blur');
    
expect(tp1.getTime()).toBe('10:25 AM');
  });

  
it('should update element with updateElement method', function() {
    
tp1.hour 10;
    
tp1.minute 30;
    
tp1.meridian 'PM';
    
tp1.updateElement();
    
expect($input1.val()).toBe('10:30 PM');
  });

  
it('should update widget with updateWidget method', function() {
    
tp2.hour 10;
    
tp2.minute 30;
    
tp2.second 15;

    
expect(tp2.$widget.find('.bootstrap-timepicker-hour').val()).not.toBe('10');
    
expect(tp2.$widget.find('.bootstrap-timepicker-minute').val()).not.toBe('30');
    
expect(tp2.$widget.find('.bootstrap-timepicker-second').val()).not.toBe('15');

    
tp2.updateWidget();

    
expect(tp2.$widget.find('.bootstrap-timepicker-hour').val()).toBe('10');
    
expect(tp2.$widget.find('.bootstrap-timepicker-minute').val()).toBe('30');
    
expect(tp2.$widget.find('.bootstrap-timepicker-second').val()).toBe('15');
  });

  
it('should update picker with updateFromElementVal method', function() {
    
tp1.hour 12;
    
tp1.minute 12;
    
tp1.meridian 'PM';
    
tp1.update();

    
$input1.val('10:30 AM');

    
expect(tp1.$widget.find('.bootstrap-timepicker-hour').val()).not.toBe('10');
    
expect(tp1.$widget.find('.bootstrap-timepicker-minute').val()).not.toBe('30');
    
expect(tp1.$widget.find('.bootstrap-timepicker-meridian').val()).not.toBe('AM');
    
expect(tp1.hour).not.toBe(10);
    
expect(tp1.minute).not.toBe(30);
    
expect(tp1.meridian).not.toBe('AM');

    
tp1.updateFromElementVal();

    
expect(tp1.$widget.find('.bootstrap-timepicker-hour').val()).toBe('10');
    
expect(tp1.$widget.find('.bootstrap-timepicker-minute').val()).toBe('30');
    
expect(tp1.$widget.find('.bootstrap-timepicker-meridian').val()).toBe('AM');
    
expect(tp1.hour).toBe(10);
    
expect(tp1.minute).toBe(30);
    
expect(tp1.meridian).toBe('AM');
  });

  
it('should update picker with updateFromWidgetInputs method', function() {
    
tp1.hour 12;
    
tp1.minute 12;
    
tp1.meridian 'PM';
    
tp1.update();

    
tp1.$widget.find('.bootstrap-timepicker-hour').val(10);
    
tp1.$widget.find('.bootstrap-timepicker-minute').val(30);
    
tp1.$widget.find('.bootstrap-timepicker-meridian').val('AM');

    
expect(tp1.hour).not.toBe(10);
    
expect(tp1.minute).not.toBe(30);
    
expect(tp1.meridian).not.toBe('AM');
    
expect($input1.val()).not.toBe('10:30 AM');

    
tp1.updateFromWidgetInputs();

    
expect(tp1.hour).toBe(10);
    
expect(tp1.minute).toBe(30);
    
expect(tp1.meridian).toBe('AM');
    
expect($input1.val()).toBe('10:30 AM');
  });

  
it('should increment hours with incrementHour method', function() {
    
tp1.hour 9;
    
tp1.incrementHour();
    
expect(tp1.hour).toBe(10);
  });

  
it('should decrement hours with decrementHour method', function() {
    
tp1.hour 9;
    
tp1.decrementHour();
    
expect(tp1.hour).toBe(8);
  });

  
it('should toggle meridian if hour goes past 12', function() {
    
$input1.val('11:00 AM');
    
tp1.updateFromElementVal();
    
tp1.incrementHour();

    
expect(tp1.hour).toBe(12);
    
expect(tp1.minute).toBe(0);
    
expect(tp1.meridian).toBe('PM');
  });

  
it('should toggle meridian if hour goes below 1', function() {
    
$input1.val('11:00 AM');
    
tp1.updateFromElementVal();
    
tp1.incrementHour();

    
expect(tp1.hour).toBe(12);
    
expect(tp1.minute).toBe(0);
    
expect(tp1.meridian).toBe('PM');
  });

  
it('should set hour to 1 if hour increments on 12 for 12h clock', function() {
    
$input1.val('11:15 PM');
    
tp1.updateFromElementVal();
    
tp1.incrementHour();
    
tp1.incrementHour();

    
expect(tp1.getTime()).toBe('01:15 AM');
  });

  
it('should set hour to 0 if hour increments on 23 for 24h clock', function() {
    
$input3.val('22:15:30');
    
tp3.updateFromElementVal();
    
tp3.incrementHour();
    
tp3.incrementHour();

    
expect(tp3.hour).toBe(0);
    
expect(tp3.minute).toBe(15);
    
expect(tp3.second).toBe(30);
  });

  
it('should increment minutes with incrementMinute method', function() {
    
tp1.minute 10;
    
tp1.incrementMinute();

    
expect(tp1.minute).toBe(15);

    
tp2.minute 0;
    
tp2.incrementMinute();

    
expect(tp2.minute).toBe(30);
  });

  
it('should decrement minutes with decrementMinute method', function() {
    
tp1.hour 11;
    
tp1.minute 0;
    
tp1.decrementMinute();

    
expect(tp1.hour).toBe(10);
    
expect(tp1.minute).toBe(45);

    
tp2.hour 11;
    
tp2.minute 0;
    
tp2.decrementMinute();

    
expect(tp2.hour).toBe(10);
    
expect(tp2.minute).toBe(30);
  });


  
it('should increment hour if minutes increment past 59', function() {
    
$input1.val('11:55 AM');
    
tp1.updateFromElementVal();
    
tp1.incrementMinute();
    
tp1.update();

    
expect(tp1.getTime()).toBe('12:00 PM');
  });

  
it('should toggle meridian with toggleMeridian method', function() {
    
tp1.meridian 'PM';
    
tp1.toggleMeridian();

    
expect(tp1.meridian).toBe('AM');
  });

  
it('should increment seconds with incrementSecond method', function() {
    
tp1.second 0;
    
tp1.incrementSecond();

    
expect(tp1.second).toBe(15);

    
tp2.second 0;
    
tp2.incrementSecond();

    
expect(tp2.second).toBe(30);
  });

  
it('should decrement seconds with decrementSecond method', function() {
    
tp2.hour 11;
    
tp2.minute 0;
    
tp2.second 0;
    
tp2.decrementSecond();

    
expect(tp2.minute).toBe(59);
    
expect(tp2.second).toBe(30);
  });


  
it('should increment minute by 1 if seconds increment past 59', function() {
    
$input2.val('11:55:30 AM');
    
tp2.updateFromElementVal();
    
tp2.incrementSecond();
    
tp2.update();

    
expect(tp2.getTime()).toBe('11:56:00 AM');
  });

  
it('should not have any remaining events if remove is called', function() {
    var 
hideEvents 0;

    
$input1.on('hide.timepicker', function() {
      
hideEvents++;
    });

    
$input1.parents('div').find('.add-on').trigger('click');
    $(
'body').trigger('mousedown');

    
expect(hideEvents).toBe(1);

    
tp1.remove();
    
tp2.remove();
    
tp3.remove();

    $(
'body').trigger('click');
    
expect(hideEvents).toBe(1);
  });

  
it('should not have the widget in the DOM if remove method is called', function() {
    
expect($('body')).toContain('.bootstrap-timepicker-widget');
    
tp1.remove();
    
tp2.remove();
    
tp3.remove();
    
expect($('body')).not.toContain('.bootstrap-timepicker-widget');
  });

  
it('should be able to set time from a script', function() {
    
$input1.timepicker('setTime''12:35 PM');
    
tp1.update();
    
expect(tp1.getTime()).toBe('12:35 PM');
  });

  
it('should be able to opened from script', function() {
    
expect(tp1.isOpen).toBe(false);
    
$input1.timepicker('showWidget');
    
expect(tp1.isOpen).toBe(true);
  });

});
?>
Онлайн: 0
Реклама