diff --git a/test/main.js b/test/main.js index 667c8e3..e6023f3 100644 --- a/test/main.js +++ b/test/main.js @@ -35,7 +35,7 @@ require(["loader", jqurl], function(loader) { break; default: - date = ['test/unit/dateui']; + date = ['test/unit/dateuifield', 'test/unit/dateui']; } var tests = [ diff --git a/test/unit/dateui.js b/test/unit/dateui.js index 6fd592e..b3f6479 100644 --- a/test/unit/dateui.js +++ b/test/unit/dateui.js @@ -1,12 +1,18 @@ $(function () { - var dpg; + var dpg, mode; module("dateui", { setup: function(){ fx = $('#async-fixture'); $.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) { @@ -17,7 +23,7 @@ $(function () { asyncTest("container should contain datepicker with value and save new entered date", function () { var d = '15.05.1984', dview = '15/05/1984', - e = $('<a href="#" data-type="date" data-pk="1" data-url="post-date.php">'+dview+'</a>').appendTo(fx).editable({ + e = $('<a href="#" data-type="date" data-pk="1" data-url="post-dateui.php">'+dview+'</a>').appendTo(fx).editable({ format: 'dd.mm.yyyy', viewformat: 'dd/mm/yyyy', datepicker: { @@ -28,7 +34,7 @@ $(function () { nextDview = '16/05/1984'; $.mockjax({ - url: 'post-date.php', + url: 'post-dateui.php', response: function(settings) { equal(settings.data.value, nextD, 'submitted value correct'); } diff --git a/test/unit/dateuifield.js b/test/unit/dateuifield.js new file mode 100644 index 0000000..9375818 --- /dev/null +++ b/test/unit/dateuifield.js @@ -0,0 +1,108 @@ +$(function () { + + var f = 'dd.mm.yyyy', mode; + + module("dateuifield", { + setup: function(){ + fx = $('#async-fixture'); + $.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) { + format = format.replace('yyyy', 'yy'); + return $.datepicker.formatDate(format, date); + } + + 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-dateuifield.php">'+d+'</a>').appendTo(fx).editable({ + format: f, + viewformat: f, + datepicker: { + firstDay: 1 + } + }), + nextD = '16.05.1984', + finalD = '17.05.1984'; + + $.mockjax({ + url: 'post-dateuifield.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('img').click(); + var picker = p.find('input').datepicker('widget'); + + ok(picker.is(':visible'), 'picker shown'); + ok(picker.find('a.ui-state-active').is(':visible'), 'active day is visible'); + equal(picker.find('a.ui-state-active').text(), 15, 'day shown correct'); + equal(picker.find('.ui-datepicker-calendar > thead > tr > th').eq(0).find('span').text(), 'Mo', 'weekStart correct'); + + //set new day by picker + picker.find('a.ui-state-active').parent().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('a.ui-state-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'); + }); + +}); \ No newline at end of file