/lib/assertions/is-date.test.js

https://github.com/busterjs/referee · JavaScript · 182 lines · 162 code · 18 blank · 2 comment · 0 complexity · 076d5dd58a06cc210c715087037be96d MD5 · raw file

  1. "use strict";
  2. var assert = require("assert");
  3. var referee = require("../referee");
  4. var captureArgs = require("../test-helper/capture-args");
  5. describe("assert.isDate", function () {
  6. it("should pass for Date", function () {
  7. referee.assert.isDate(new Date("[a-z]"));
  8. });
  9. it("should fail for RegExp", function () {
  10. assert.throws(
  11. function () {
  12. referee.assert.isDate(new RegExp("[a-z]"));
  13. },
  14. function (error) {
  15. assert.equal(error.code, "ERR_ASSERTION");
  16. assert.equal(
  17. error.message,
  18. "[assert.isDate] Expected /[a-z]/ to be a Date"
  19. );
  20. assert.equal(error.name, "AssertionError");
  21. assert.equal(error.operator, "assert.isDate");
  22. return true;
  23. }
  24. );
  25. });
  26. it("should fail for String", function () {
  27. assert.throws(
  28. function () {
  29. referee.assert.isDate("apple pie");
  30. },
  31. function (error) {
  32. assert.equal(error.code, "ERR_ASSERTION");
  33. assert.equal(
  34. error.message,
  35. "[assert.isDate] Expected 'apple pie' to be a Date"
  36. );
  37. assert.equal(error.name, "AssertionError");
  38. assert.equal(error.operator, "assert.isDate");
  39. return true;
  40. }
  41. );
  42. });
  43. it("should fail for Array", function () {
  44. assert.throws(
  45. function () {
  46. referee.assert.isDate([]);
  47. },
  48. function (error) {
  49. assert.equal(error.code, "ERR_ASSERTION");
  50. assert.equal(error.message, "[assert.isDate] Expected [] to be a Date");
  51. assert.equal(error.name, "AssertionError");
  52. assert.equal(error.operator, "assert.isDate");
  53. return true;
  54. }
  55. );
  56. });
  57. it("should fail for Object", function () {
  58. assert.throws(
  59. function () {
  60. referee.assert.isDate({});
  61. },
  62. function (error) {
  63. assert.equal(error.code, "ERR_ASSERTION");
  64. assert.equal(error.message, "[assert.isDate] Expected {} to be a Date");
  65. assert.equal(error.name, "AssertionError");
  66. assert.equal(error.operator, "assert.isDate");
  67. return true;
  68. }
  69. );
  70. });
  71. it("should fail for arguments", function () {
  72. assert.throws(
  73. function () {
  74. referee.assert.isDate(captureArgs());
  75. },
  76. function (error) {
  77. assert.equal(error.code, "ERR_ASSERTION");
  78. assert.equal(
  79. error.message,
  80. "[assert.isDate] Expected [Arguments] {} to be a Date"
  81. );
  82. assert.equal(error.name, "AssertionError");
  83. assert.equal(error.operator, "assert.isDate");
  84. return true;
  85. }
  86. );
  87. });
  88. it("should fail with custom message", function () {
  89. var message = "9d0346ee-490c-4bad-ad69-b925d75f5860";
  90. assert.throws(
  91. function () {
  92. referee.assert.isDate({}, message);
  93. },
  94. function (error) {
  95. assert.equal(error.code, "ERR_ASSERTION");
  96. assert.equal(
  97. error.message,
  98. `[assert.isDate] ${message}: Expected {} to be a Date`
  99. );
  100. assert.equal(error.name, "AssertionError");
  101. assert.equal(error.operator, "assert.isDate");
  102. return true;
  103. }
  104. );
  105. });
  106. });
  107. describe("refute.isDate", function () {
  108. it("should fail for Date", function () {
  109. var date = new Date(Date.UTC(0, 0, 0, 0, 0, 0));
  110. assert.throws(
  111. function () {
  112. referee.refute.isDate(date);
  113. },
  114. function (error) {
  115. assert.equal(error.code, "ERR_ASSERTION");
  116. assert.equal(
  117. error.message,
  118. "[refute.isDate] Expected 1899-12-31T00:00:00.000Z not to be a Date"
  119. );
  120. assert.equal(error.name, "AssertionError");
  121. assert.equal(error.operator, "refute.isDate");
  122. return true;
  123. }
  124. );
  125. });
  126. it("should pass for RegExp", function () {
  127. referee.refute.isDate(new RegExp());
  128. });
  129. it("should pass for String", function () {
  130. referee.refute.isDate("123");
  131. });
  132. it("should pass for Array", function () {
  133. referee.refute.isDate([]);
  134. });
  135. it("should pass for Object", function () {
  136. referee.refute.isDate({});
  137. });
  138. it("should pass for arguments", function () {
  139. referee.refute.isDate(captureArgs());
  140. });
  141. it("should fail with custom message", function () {
  142. var message = "5e790207-e300-4ecc-ac94-055e85639d95";
  143. var date = new Date(Date.UTC(0, 0, 0, 0, 0, 0));
  144. // In node 6+8 date.toString() uses "(UTC)" as suffix in UTC timezone
  145. // In node 10 date.toString() uses "(Coordinated Universal Time)"
  146. var suffix = date.toString().match(/\(.*\)$/)[0];
  147. var expectedMessage = `[refute.isDate] ${message}${": Expected 1899-12-31T00:00:00.000Z not to be a Date".replace(
  148. "{suffix}",
  149. suffix
  150. )}`;
  151. assert.throws(
  152. function () {
  153. referee.refute.isDate(date, message);
  154. },
  155. function (error) {
  156. assert.equal(error.code, "ERR_ASSERTION");
  157. assert.equal(error.message, expectedMessage);
  158. assert.equal(error.name, "AssertionError");
  159. assert.equal(error.operator, "refute.isDate");
  160. return true;
  161. }
  162. );
  163. });
  164. });