datefield test ready
This commit is contained in:
@ -26,13 +26,13 @@ $(function(){
|
|||||||
|
|
||||||
var Date = function (options) {
|
var Date = function (options) {
|
||||||
this.init('date', options, Date.defaults);
|
this.init('date', options, Date.defaults);
|
||||||
this.initPicker();
|
this.initPicker(options, Date.defaults);
|
||||||
};
|
};
|
||||||
|
|
||||||
$.fn.editableutils.inherit(Date, $.fn.editabletypes.abstractinput);
|
$.fn.editableutils.inherit(Date, $.fn.editabletypes.abstractinput);
|
||||||
|
|
||||||
$.extend(Date.prototype, {
|
$.extend(Date.prototype, {
|
||||||
initPicker: function() {
|
initPicker: function(options, defaults) {
|
||||||
//'format' is set directly from settings or data-* attributes
|
//'format' is set directly from settings or data-* attributes
|
||||||
|
|
||||||
//by default viewformat equals to format
|
//by default viewformat equals to format
|
||||||
@ -42,7 +42,7 @@ $(function(){
|
|||||||
|
|
||||||
//overriding datepicker config (as by default jQuery extend() is not recursive)
|
//overriding datepicker config (as by default jQuery extend() is not recursive)
|
||||||
//since 1.4 datepicker internally uses viewformat instead of format. Format is for submit only
|
//since 1.4 datepicker internally uses viewformat instead of format. Format is for submit only
|
||||||
this.options.datepicker = $.extend({}, Date.defaults.datepicker, this.options.datepicker, {
|
this.options.datepicker = $.extend({}, defaults.datepicker, options.datepicker, {
|
||||||
format: this.options.viewformat
|
format: this.options.viewformat
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ Automatically shown in inline mode.
|
|||||||
|
|
||||||
var DateField = function (options) {
|
var DateField = function (options) {
|
||||||
this.init('datefield', options, DateField.defaults);
|
this.init('datefield', options, DateField.defaults);
|
||||||
this.initPicker();
|
this.initPicker(options, DateField.defaults);
|
||||||
};
|
};
|
||||||
|
|
||||||
$.fn.editableutils.inherit(DateField, $.fn.editabletypes.date);
|
$.fn.editableutils.inherit(DateField, $.fn.editabletypes.date);
|
||||||
@ -28,12 +28,14 @@ Automatically shown in inline mode.
|
|||||||
this.$input.datepicker(this.options.datepicker);
|
this.$input.datepicker(this.options.datepicker);
|
||||||
|
|
||||||
//need to disable original event handlers
|
//need to disable original event handlers
|
||||||
this.$field.off('focus keyup keydown');
|
this.$field.off('focus keydown');
|
||||||
|
|
||||||
//shadow update value of datepicker
|
//update value of datepicker
|
||||||
this.$field.keyup($.proxy(function(){
|
this.$field.keyup($.proxy(function(){
|
||||||
this.$input.data('datepicker').date = this.input2value();
|
this.$input.removeData('date');
|
||||||
|
this.$input.datepicker('update');
|
||||||
}, this));
|
}, this));
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
value2str: function(value) {
|
value2str: function(value) {
|
||||||
@ -76,7 +78,14 @@ Automatically shown in inline mode.
|
|||||||
@default ''
|
@default ''
|
||||||
**/
|
**/
|
||||||
inputclass: '',
|
inputclass: '',
|
||||||
datepicker: {autoclose: true},
|
|
||||||
|
datepicker: {
|
||||||
|
weekStart: 0,
|
||||||
|
startView: 0,
|
||||||
|
autoclose: true,
|
||||||
|
keyboardNavigation: false
|
||||||
|
},
|
||||||
|
|
||||||
clear: false
|
clear: false
|
||||||
});
|
});
|
||||||
|
|
||||||
|
17
test/main.js
17
test/main.js
@ -27,16 +27,27 @@ require(["loader", jqurl], function(loader) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
function addTests(config) {
|
function addTests(config) {
|
||||||
|
var date;
|
||||||
|
|
||||||
|
switch(params.f) {
|
||||||
|
case 'bootstrap':
|
||||||
|
date = ['test/unit/datefield', 'test/unit/date'];
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
date = ['test/unit/dateui'];
|
||||||
|
}
|
||||||
|
|
||||||
var tests = [
|
var tests = [
|
||||||
'test/mocks',
|
'test/mocks',
|
||||||
'test/unit/common',
|
'test/unit/common',
|
||||||
'test/unit/text',
|
'test/unit/text',
|
||||||
'test/unit/textarea',
|
'test/unit/textarea',
|
||||||
'test/unit/select',
|
'test/unit/select',
|
||||||
'test/unit/checklist',
|
'test/unit/checklist'
|
||||||
(params.f === 'bootstrap') ? 'test/unit/date' : 'test/unit/dateui',
|
|
||||||
'test/unit/api'
|
|
||||||
];
|
];
|
||||||
|
tests = tests.concat(date);
|
||||||
|
tests.push('test/unit/api');
|
||||||
|
|
||||||
for(var i=0; i<tests.length-1; i++) {
|
for(var i=0; i<tests.length-1; i++) {
|
||||||
config.shim[tests[i+1]] = [tests[i]];
|
config.shim[tests[i+1]] = [tests[i]];
|
||||||
|
@ -1,13 +1,19 @@
|
|||||||
$(function () {
|
$(function () {
|
||||||
|
|
||||||
var dpg, f = 'dd.mm.yyyy';
|
var dpg, f = 'dd.mm.yyyy', mode;
|
||||||
|
|
||||||
module("date", {
|
module("date", {
|
||||||
setup: function(){
|
setup: function(){
|
||||||
fx = $('#async-fixture');
|
fx = $('#async-fixture');
|
||||||
dpg = $.fn.datepicker.DPGlobal;
|
dpg = $.fn.datepicker.DPGlobal;
|
||||||
$.support.transition = false;
|
$.support.transition = false;
|
||||||
}
|
mode = $.fn.editable.defaults.mode;
|
||||||
|
$.fn.editable.defaults.mode = 'popup';
|
||||||
|
},
|
||||||
|
teardown: function() {
|
||||||
|
//restore mode
|
||||||
|
$.fn.editable.defaults.mode = mode;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
function frmt(date, format) {
|
function frmt(date, format) {
|
||||||
|
109
test/unit/datefield.js
Normal file
109
test/unit/datefield.js
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
$(function () {
|
||||||
|
|
||||||
|
var dpg, f = 'dd.mm.yyyy', mode;
|
||||||
|
|
||||||
|
module("datefield", {
|
||||||
|
setup: function(){
|
||||||
|
fx = $('#async-fixture');
|
||||||
|
dpg = $.fn.datepicker.DPGlobal;
|
||||||
|
$.support.transition = false;
|
||||||
|
|
||||||
|
mode = $.fn.editable.defaults.mode;
|
||||||
|
$.fn.editable.defaults.mode = 'inline';
|
||||||
|
},
|
||||||
|
teardown: function() {
|
||||||
|
//restore mode
|
||||||
|
$.fn.editable.defaults.mode = mode;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function frmt(date, format) {
|
||||||
|
return dpg.formatDate(date, dpg.parseFormat(format), 'en');
|
||||||
|
}
|
||||||
|
|
||||||
|
asyncTest("container should contain input with value and save new entered date", function () {
|
||||||
|
|
||||||
|
var d = '15.05.1984',
|
||||||
|
e = $('<a href="#" data-type="date" data-pk="1" data-url="post-date.php">'+d+'</a>').appendTo(fx).editable({
|
||||||
|
format: f,
|
||||||
|
viewformat: f,
|
||||||
|
datepicker: {
|
||||||
|
weekStart: 1
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
nextD = '16.05.1984',
|
||||||
|
finalD = '17.05.1984';
|
||||||
|
|
||||||
|
$.mockjax({
|
||||||
|
url: 'post-date.php',
|
||||||
|
response: function(settings) {
|
||||||
|
equal(settings.data.value, finalD, 'submitted value correct');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
equal(frmt(e.data('editable').value, 'dd.mm.yyyy'), d, 'value correct');
|
||||||
|
|
||||||
|
e.click();
|
||||||
|
var p = tip(e);
|
||||||
|
ok(p.find('input').is(':visible'), 'input exists');
|
||||||
|
|
||||||
|
equal(p.find('input').val(), d, 'date set correct');
|
||||||
|
|
||||||
|
//open picker
|
||||||
|
p.find('span').click();
|
||||||
|
var picker = p.find('span').parent().data().datepicker.picker;
|
||||||
|
|
||||||
|
ok(picker.is(':visible'), 'picker shown');
|
||||||
|
ok(picker.find('td.day.active').is(':visible'), 'active day is visible');
|
||||||
|
equal(picker.find('td.day.active').text(), 15, 'day shown correct');
|
||||||
|
equal(picker.find('th.dow').eq(0).text(), 'Mo', 'weekStart correct');
|
||||||
|
|
||||||
|
//set new day by picker
|
||||||
|
picker.find('td.day.active').next().click();
|
||||||
|
ok(!picker.is(':visible'), 'picker closed');
|
||||||
|
|
||||||
|
equal(p.find('input').val(), nextD, 'next day set correct');
|
||||||
|
|
||||||
|
p.find('input').val(finalD).trigger('keyup');
|
||||||
|
|
||||||
|
equal(picker.find('td.day.active').text(), 17, 'picker active date updated');
|
||||||
|
|
||||||
|
//submit
|
||||||
|
p.find('form').submit();
|
||||||
|
|
||||||
|
setTimeout(function() {
|
||||||
|
ok(!p.is(':visible'), 'popover closed');
|
||||||
|
ok(!picker.is(':visible'), 'picker closed');
|
||||||
|
equal(frmt(e.data('editable').value, f), finalD, 'new date saved to value');
|
||||||
|
equal(e.text(), finalD, 'new text shown');
|
||||||
|
e.remove();
|
||||||
|
start();
|
||||||
|
}, timeout);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test("viewformat, init by text", function () {
|
||||||
|
|
||||||
|
var dview = '15/05/1984',
|
||||||
|
d = '1984-05-15',
|
||||||
|
e = $('<a href="#" data-type="date" data-pk="1" data-url="post-date1.php">'+dview+'</a>').appendTo('#qunit-fixture').editable({
|
||||||
|
format: 'yyyy-mm-dd',
|
||||||
|
viewformat: 'dd/mm/yyyy'
|
||||||
|
}),
|
||||||
|
nextD = '1984-05-16',
|
||||||
|
nextDview = '16/05/1984';
|
||||||
|
|
||||||
|
equal(frmt(e.data('editable').value, 'yyyy-mm-dd'), d, 'value correct');
|
||||||
|
});
|
||||||
|
|
||||||
|
test("viewformat, init by value", function () {
|
||||||
|
var dview = '15/05/1984',
|
||||||
|
d = '1984-05-15',
|
||||||
|
e = $('<a href="#" data-type="date" data-pk="1" data-format="yyyy-mm-dd" data-viewformat="dd/mm/yyyy" data-value="'+d+'"></a>').appendTo('#qunit-fixture').editable();
|
||||||
|
|
||||||
|
equal(frmt(e.data('editable').value, 'yyyy-mm-dd'), d, 'value correct');
|
||||||
|
equal(e.text(), dview, 'text correct');
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
Reference in New Issue
Block a user