PageRenderTime 60ms CodeModel.GetById 31ms RepoModel.GetById 0ms app.codeStats 0ms

/django_helpers/apps/xeditable/static/js-plugins/x-editable-1.5.1/test/unit/datetime.js

https://bitbucket.org/ajumell/django-helpers
JavaScript | 270 lines | 193 code | 63 blank | 14 comment | 0 complexity | 5037a43882b60f6751a8c9647da0bfff MD5 | raw file
  1. $(function () {
  2. var dpg, f = 'dd.mm.yyyy hh:ii', mode;
  3. module("datetime", {
  4. setup: function(){
  5. fx = $('#async-fixture');
  6. dpg = $.fn.datetimepicker.DPGlobal;
  7. $.support.transition = false;
  8. mode = $.fn.editable.defaults.mode;
  9. $.fn.editable.defaults.mode = 'popup';
  10. },
  11. teardown: function() {
  12. //restore mode
  13. $.fn.editable.defaults.mode = mode;
  14. }
  15. });
  16. function frmt(date, format) {
  17. //convert to utc
  18. date = $.fn.editabletypes.datetime.prototype.toUTC(date);
  19. return dpg.formatDate(date, dpg.parseFormat(format, 'standard'), 'en', 'standard');
  20. }
  21. asyncTest("container should contain datetimepicker with value and save new entered date", function () {
  22. $.fn.editabletypes.datetime.defaults.datetimepicker.weekStart = 1;
  23. var d = '15.05.1984 20:30',
  24. e = $('<a href="#" data-type="datetime" data-pk="1" data-url="post-datetime">'+d+'</a>').appendTo(fx).editable({
  25. format: f,
  26. datetimepicker: {
  27. }
  28. }),
  29. nextD = '16.05.1984 21:35';
  30. $.mockjax({
  31. url: 'post-datetime',
  32. response: function(settings) {
  33. equal(settings.data.value, nextD, 'submitted value correct');
  34. }
  35. });
  36. //testing func, run twice!
  37. var func = function() {
  38. var df = $.Deferred();
  39. equal(frmt(e.data('editable').value, 'dd.mm.yyyy hh:ii'), d, 'value correct');
  40. e.click();
  41. var p = tip(e);
  42. ok(p.find('.datetimepicker').is(':visible'), 'datetimepicker exists');
  43. equal(p.find('.datetimepicker').length, 1, 'datetimepicker single');
  44. ok(p.find('.datetimepicker').find('.datetimepicker-days').is(':visible'), 'datetimepicker days visible');
  45. equal(frmt(e.data('editable').value, f), d, 'day set correct');
  46. ok(p.find('td.day.active').is(':visible'), 'active day is visible');
  47. equal(p.find('td.day.active').text(), 15, 'day shown correct');
  48. equal(p.find('th.dow').eq(0).text(), 'Mo', 'weekStart correct');
  49. //set new day
  50. p.find('.day.active').next().click();
  51. //hours appeared?
  52. ok(p.find('.datetimepicker-hours').is(':visible'), 'datetimepicker hours visible');
  53. //set hours 21
  54. p.find('.hour.active').next().click();
  55. //minutes appeared?
  56. ok(p.find('.datetimepicker-minutes').is(':visible'), 'datetimepicker minutes visible');
  57. //set minutes 21:35
  58. p.find('.minute.active').next().click();
  59. //submit
  60. p.find('form').submit();
  61. setTimeout(function() {
  62. ok(!p.is(':visible'), 'popover closed');
  63. equal(frmt(e.data('editable').value, f), nextD, 'new date saved to value');
  64. equal(e.text(), nextD, 'new text shown');
  65. df.resolve();
  66. }, timeout);
  67. return df.promise();
  68. };
  69. $.when(func()).then(function() {
  70. e.editable('setValue', d, true);
  71. $.when(func()).then(function() {
  72. e.remove();
  73. start();
  74. });
  75. });
  76. });
  77. asyncTest("viewformat, init by text", function () {
  78. $.fn.editabletypes.datetime.defaults.datetimepicker.weekStart = 1;
  79. var dview = '15/05/1984 11:50',
  80. d = '1984-05-15 11:50',
  81. e = $('<a href="#" data-type="datetime" data-pk="1" data-url="post-datetime1">'+dview+'</a>').appendTo(fx).editable({
  82. format: 'yyyy-mm-dd hh:ii',
  83. viewformat: 'dd/mm/yyyy hh:ii',
  84. datetimepicker: {
  85. }
  86. }),
  87. nextD = '1984-05-16 11:50',
  88. nextDview = '16/05/1984 11:50';
  89. equal(frmt(e.data('editable').value, 'yyyy-mm-dd hh:ii'), d, 'value correct');
  90. $.mockjax({
  91. url: 'post-datetime1',
  92. response: function(settings) {
  93. equal(settings.data.value, nextD, 'submitted value correct');
  94. }
  95. });
  96. e.click();
  97. var p = tip(e);
  98. ok(p.find('.datetimepicker').is(':visible'), 'datetimepicker exists');
  99. equal(frmt(e.data('editable').value, 'yyyy-mm-dd hh:ii'), d, 'day set correct');
  100. equal(p.find('td.day.active').text(), 15, 'day shown correct');
  101. equal(p.find('th.dow').eq(0).text(), 'Mo', 'weekStart correct');
  102. //set new day
  103. p.find('td.day.active').next().click();
  104. p.find('form').submit();
  105. setTimeout(function() {
  106. ok(!p.is(':visible'), 'popover closed')
  107. equal(frmt(e.data('editable').value, 'yyyy-mm-dd hh:ii'), nextD, 'new date saved to value')
  108. equal(e.text(), nextDview, 'new text shown in correct format')
  109. e.remove();
  110. start();
  111. }, timeout);
  112. });
  113. test("datetimepicker options can be defined in data-datetimepicker string", function () {
  114. var e = $('<a href="#" data-type="datetime" data-datetimepicker="{weekStart: 2}" data-pk="1" data-url="/post"></a>').appendTo('#qunit-fixture').editable({
  115. });
  116. equal(e.data('editable').input.options.datetimepicker.weekStart, 2, 'options applied correct');
  117. });
  118. test("viewformat, init by value", function () {
  119. var dview = '15/05/1984 15:45',
  120. d = '1984-05-15 15:45',
  121. e = $('<a href="#" data-type="datetime" data-pk="1" data-format="yyyy-mm-dd hh:ii" data-viewformat="dd/mm/yyyy hh:ii" data-value="'+d+'"></a>').appendTo('#qunit-fixture').editable();
  122. equal(frmt(e.data('editable').value, 'yyyy-mm-dd hh:ii'), d, 'value correct');
  123. equal(e.text(), dview, 'text correct');
  124. });
  125. test("input should contain today if element is empty", function () {
  126. var e = $('<a href="#" data-type="datetime"></a>').appendTo('#qunit-fixture').editable();
  127. e.click();
  128. var p = tip(e),
  129. today = new Date();
  130. equal(p.find('td.day.active').text(), today.getDate(), 'day shown correct');
  131. p.find('.editable-cancel').click();
  132. ok(!p.is(':visible'), 'popover closed');
  133. });
  134. asyncTest("clear button (showbuttons: true)", function () {
  135. var d = '15.05.1984 16:40',
  136. e = $('<a href="#" data-type="datetime" data-pk="1" data-url="post-datetime-clear.php">'+d+'</a>').appendTo(fx).editable({
  137. format: f,
  138. clear: 'abc',
  139. showbuttons: true
  140. });
  141. $.mockjax({
  142. url: 'post-datetime-clear.php',
  143. response: function(settings) {
  144. equal(settings.data.value, '', 'submitted value correct');
  145. }
  146. });
  147. equal(frmt(e.data('editable').value, 'dd.mm.yyyy hh:ii'), d, 'value correct');
  148. e.click();
  149. var p = tip(e);
  150. ok(p.find('.datetimepicker').is(':visible'), 'datetimepicker exists');
  151. equal(frmt(e.data('editable').value, f), d, 'day set correct');
  152. equal(p.find('td.day.active').text(), 15, 'day shown correct');
  153. var clear = p.find('.editable-clear a');
  154. equal(clear.text(), 'abc', 'clear link shown');
  155. //click clear
  156. clear.click();
  157. ok(!p.find('td.day.active').length, 'no active day');
  158. ok(p.find('.datetimepicker').is(':visible'), 'datetimepicker still visible');
  159. p.find('form').submit();
  160. setTimeout(function() {
  161. ok(!p.is(':visible'), 'popover closed');
  162. equal(e.data('editable').value, null, 'null saved to value');
  163. equal(e.text(), e.data('editable').options.emptytext, 'empty text shown');
  164. //reopen popover
  165. e.click();
  166. p = tip(e);
  167. ok(p.find('.datetimepicker').is(':visible'), 'datetimepicker exists');
  168. e.remove();
  169. start();
  170. }, timeout);
  171. });
  172. asyncTest("clear button (showbuttons: false)", function () {
  173. var d = '15.05.1984 16:40',
  174. e = $('<a href="#" data-type="datetime" data-pk="1" data-url="post-datetime-clear1.php">'+d+'</a>').appendTo(fx).editable({
  175. showbuttons: false,
  176. format: f,
  177. clear: 'abc'
  178. });
  179. $.mockjax({
  180. url: 'post-datetime-clear1.php',
  181. response: function(settings) {
  182. equal(settings.data.value, '', 'submitted value correct');
  183. }
  184. });
  185. equal(frmt(e.data('editable').value, 'dd.mm.yyyy hh:ii'), d, 'value correct');
  186. e.click();
  187. var p = tip(e);
  188. ok(p.find('.datetimepicker').is(':visible'), 'datetimepicker exists');
  189. equal(frmt(e.data('editable').value, f), d, 'day set correct');
  190. equal(p.find('td.day.active').text(), 15, 'day shown correct');
  191. var clear = p.find('.editable-clear a');
  192. equal(clear.text(), 'abc', 'clear link shown');
  193. //click clear
  194. clear.click();
  195. setTimeout(function() {
  196. ok(!p.is(':visible'), 'popover closed');
  197. equal(e.data('editable').value, null, 'null saved to value');
  198. equal(e.text(), e.data('editable').options.emptytext, 'empty text shown');
  199. //reopen popover
  200. e.click();
  201. p = tip(e);
  202. ok(p.find('.datetimepicker').is(':visible'), 'datetimepicker exists');
  203. e.remove();
  204. start();
  205. }, timeout);
  206. });
  207. });