start-end-test.js 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327
  1. 'use strict';
  2. var sinon = require('sinon');
  3. var main = require('../package.json').main;
  4. var schedule = require('../' + main);
  5. var clock;
  6. module.exports = {
  7. setUp: function (cb) {
  8. clock = sinon.useFakeTimers();
  9. cb();
  10. },
  11. 'RecurrenceRule': {
  12. 'no endTime , startTime less than now': function (test) {
  13. test.expect(3);
  14. var job = new schedule.Job(function () {
  15. test.ok(true);
  16. });
  17. var rule = new schedule.RecurrenceRule();
  18. rule.second = null; // every second
  19. job.schedule({
  20. start: new Date(Date.now() - 2000),
  21. rule: rule
  22. });
  23. setTimeout(function () {
  24. job.cancel();
  25. test.done();
  26. }, 3250);
  27. clock.tick(3250);
  28. },
  29. 'no endTime , startTime greater than now': function (test) {
  30. test.expect(1);
  31. var job = new schedule.Job(function () {
  32. test.ok(true);
  33. });
  34. var rule = new schedule.RecurrenceRule();
  35. rule.second = null; // every second
  36. job.schedule({
  37. start: new Date(Date.now() + 2000),
  38. rule: rule
  39. });
  40. setTimeout(function () {
  41. job.cancel();
  42. test.done();
  43. }, 3250);
  44. clock.tick(3250);
  45. },
  46. 'no startTime , endTime less than now': function (test) {
  47. test.expect(0);
  48. var job = new schedule.Job(function () {
  49. test.ok(true);
  50. });
  51. var rule = new schedule.RecurrenceRule();
  52. rule.second = null; // every second
  53. job.schedule({
  54. end: new Date(Date.now() - 2000),
  55. rule: rule
  56. });
  57. setTimeout(function () {
  58. job.cancel();
  59. test.done();
  60. }, 3250);
  61. clock.tick(3250);
  62. },
  63. 'no startTime , endTime greater than now': function (test) {
  64. test.expect(2);
  65. var job = new schedule.Job(function () {
  66. test.ok(true);
  67. });
  68. var rule = new schedule.RecurrenceRule();
  69. rule.second = null; // every second
  70. job.schedule({
  71. end: new Date(Date.now() + 2000),
  72. rule: rule
  73. });
  74. setTimeout(function () {
  75. job.cancel();
  76. test.done();
  77. }, 3250);
  78. clock.tick(3250);
  79. },
  80. 'has startTime and endTime': function (test) {
  81. test.expect(1);
  82. var job = new schedule.Job(function () {
  83. test.ok(true);
  84. });
  85. var rule = new schedule.RecurrenceRule();
  86. rule.second = null; // every second
  87. job.schedule({
  88. start: new Date(Date.now() + 1000),
  89. end: new Date(Date.now() + 2000),
  90. rule: rule
  91. });
  92. setTimeout(function () {
  93. job.cancel();
  94. test.done();
  95. }, 3250);
  96. clock.tick(3250);
  97. }
  98. },
  99. 'Object Literal': {
  100. 'no endTime , startTime less than now': function (test) {
  101. test.expect(3);
  102. var job = new schedule.Job(function () {
  103. test.ok(true);
  104. });
  105. job.schedule({
  106. start: new Date(Date.now() - 2000),
  107. rule: { second: null }
  108. });
  109. setTimeout(function () {
  110. job.cancel();
  111. test.done();
  112. }, 3250);
  113. clock.tick(3250);
  114. },
  115. 'no endTime , startTime greater than now': function (test) {
  116. test.expect(1);
  117. var job = new schedule.Job(function () {
  118. test.ok(true);
  119. });
  120. job.schedule({
  121. start: new Date(Date.now() + 2000),
  122. rule: { second: null }
  123. });
  124. setTimeout(function () {
  125. job.cancel();
  126. test.done();
  127. }, 3250);
  128. clock.tick(3250);
  129. },
  130. 'no startTime , endTime less than now': function (test) {
  131. test.expect(0);
  132. var job = new schedule.Job(function () {
  133. test.ok(true);
  134. });
  135. job.schedule({
  136. end: new Date(Date.now() - 2000),
  137. rule: { second: null }
  138. });
  139. setTimeout(function () {
  140. job.cancel();
  141. test.done();
  142. }, 3250);
  143. clock.tick(3250);
  144. },
  145. 'no startTime , endTime greater than now': function (test) {
  146. test.expect(2);
  147. var job = new schedule.Job(function () {
  148. test.ok(true);
  149. });
  150. job.schedule({
  151. end: new Date(Date.now() + 2000),
  152. rule: { second: null }
  153. });
  154. setTimeout(function () {
  155. job.cancel();
  156. test.done();
  157. }, 3250);
  158. clock.tick(3250);
  159. },
  160. 'has startTime and endTime': function (test) {
  161. test.expect(1);
  162. var job = new schedule.Job(function () {
  163. test.ok(true);
  164. });
  165. job.schedule({
  166. start: new Date(Date.now() + 1000),
  167. end: new Date(Date.now() + 2000),
  168. rule: { second: null }
  169. });
  170. setTimeout(function () {
  171. job.cancel();
  172. test.done();
  173. }, 3250);
  174. clock.tick(3250);
  175. }
  176. },
  177. 'cron-style': {
  178. 'no endTime , startTime less than now': function (test) {
  179. test.expect(3);
  180. var job = new schedule.Job(function () {
  181. test.ok(true);
  182. });
  183. job.schedule({
  184. start: new Date(Date.now() - 2000),
  185. rule: '*/1 * * * * *'
  186. });
  187. setTimeout(function () {
  188. job.cancel();
  189. test.done();
  190. }, 3250);
  191. clock.tick(3250);
  192. },
  193. 'no endTime , startTime greater than now': function (test) {
  194. test.expect(1);
  195. var job = new schedule.Job(function () {
  196. test.ok(true);
  197. });
  198. job.schedule({
  199. start: new Date(Date.now() + 2000),
  200. rule: '*/1 * * * * *'
  201. });
  202. setTimeout(function () {
  203. job.cancel();
  204. test.done();
  205. }, 3250);
  206. clock.tick(3250);
  207. },
  208. 'no startTime , endTime less than now': function (test) {
  209. test.expect(0);
  210. var job = new schedule.Job(function () {
  211. test.ok(true);
  212. });
  213. job.schedule({
  214. end: new Date(Date.now() - 2000),
  215. rule: '*/1 * * * * *'
  216. });
  217. setTimeout(function () {
  218. job.cancel();
  219. test.done();
  220. }, 3250);
  221. clock.tick(3250);
  222. },
  223. 'no startTime , endTime greater than now': function (test) {
  224. test.expect(2);
  225. var job = new schedule.Job(function () {
  226. test.ok(true);
  227. });
  228. job.schedule({
  229. end: new Date(Date.now() + 2000),
  230. rule: '*/1 * * * * *'
  231. });
  232. setTimeout(function () {
  233. job.cancel();
  234. test.done();
  235. }, 3250);
  236. clock.tick(3250);
  237. },
  238. 'has startTime and endTime': function (test) {
  239. test.expect(1);
  240. var job = new schedule.Job(function () {
  241. test.ok(true);
  242. });
  243. job.schedule({
  244. start: new Date(Date.now() + 1000),
  245. end: new Date(Date.now() + 2000),
  246. rule: '*/1 * * * * *'
  247. });
  248. setTimeout(function () {
  249. job.cancel();
  250. test.done();
  251. }, 3250);
  252. clock.tick(3250);
  253. }
  254. },
  255. tearDown: function (cb) {
  256. clock.restore();
  257. cb();
  258. }
  259. };