test.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. 'use strict';
  2. var assert = require('assert');
  3. var sd = require('../');
  4. describe('silly-datetime', function () {
  5. describe('#format', function () {
  6. var FORMAT_A = 'YYYY-MM-DD HH:mm:ss';
  7. var FORMAT_B = 'M/D/YYYY H:m a';
  8. var datetime = new Date(2015, 7, 6, 15, 10, 3);
  9. it('should return as `' + FORMAT_A + '`', function () {
  10. assert.equal('2015-08-06 15:10:03', sd.format(datetime, FORMAT_A));
  11. });
  12. it('should return as `' + FORMAT_B + '`', function () {
  13. assert.equal('8/6/2015 15:10 pm', sd.format(datetime, FORMAT_B));
  14. });
  15. });
  16. describe('#fromNow', function () {
  17. var SECOND_IN = 'in a few seconds';
  18. it('test `' + SECOND_IN + '`', function () {
  19. var datetime = +new Date() + 3 * 1000;
  20. assert.equal(SECOND_IN, sd.fromNow(datetime));
  21. });
  22. var SECOND_AGO = 'a few seconds ago';
  23. it('test `' + SECOND_AGO + '`', function () {
  24. assert.equal(SECOND_AGO, sd.fromNow(NaN));
  25. });
  26. var MINUTE = 3;
  27. var MINUTE_AGO = MINUTE + ' minutes ago';
  28. it('test `' + MINUTE_AGO + '`', function () {
  29. var datetime = +new Date() - MINUTE * 60 * 1000;
  30. assert.equal(MINUTE_AGO, sd.fromNow(datetime));
  31. });
  32. var HOUR = 3;
  33. var HOUR_AGO = HOUR + ' hours ago';
  34. it('test `' + HOUR_AGO + '`', function () {
  35. var datetime = +new Date() - HOUR * 60 * 60 * 1000;
  36. assert.equal(HOUR_AGO, sd.fromNow(datetime));
  37. });
  38. var DAY = 3;
  39. var DAY_AGO = DAY + ' days ago';
  40. it('test `' + DAY_AGO + '`', function () {
  41. var datetime = +new Date() - DAY * 24 * 60 * 60 * 1000;
  42. assert.equal(DAY_AGO, sd.fromNow(datetime));
  43. });
  44. var MONTH = 3;
  45. var MONTH_AGO = MONTH + ' months ago';
  46. it('test `' + MONTH_AGO + '`', function () {
  47. var datetime = new Date();
  48. datetime.setMonth(datetime.getMonth() - MONTH);
  49. assert.equal(MONTH_AGO, sd.fromNow(datetime));
  50. });
  51. var YEAR = 3;
  52. var YEAR_AGO = YEAR + ' years ago';
  53. it('test `' + YEAR_AGO + '`', function () {
  54. var datetime = new Date();
  55. datetime.setFullYear(datetime.getFullYear() - YEAR);
  56. assert.equal(YEAR_AGO, sd.fromNow(datetime));
  57. });
  58. });
  59. describe('#locate', function () {
  60. var FORMAT_ZH_CN_MINUTE = 10;
  61. var FORMAT_ZH_CN = FORMAT_ZH_CN_MINUTE + '分钟内';
  62. it('should return as `' + FORMAT_ZH_CN + '`', function () {
  63. var datetime = +new Date() + (FORMAT_ZH_CN_MINUTE * 60 + 1) * 1000;
  64. sd.locate('zh-cn');
  65. assert.equal(
  66. FORMAT_ZH_CN,
  67. sd.fromNow(datetime)
  68. );
  69. });
  70. var FORMAT_ZH_TW_HOUR = 10;
  71. var FORMAT_ZH_TW = FORMAT_ZH_TW_HOUR + '小時以内';
  72. it('should return as `' + FORMAT_ZH_TW + '`', function () {
  73. var datetime = +new Date() + (FORMAT_ZH_TW_HOUR * 60 * 60 + 1) * 1000;
  74. sd.locate({ future: '%s以内', hh: '%s小時' });
  75. assert.equal(
  76. FORMAT_ZH_TW,
  77. sd.fromNow(datetime)
  78. );
  79. });
  80. });
  81. });