test.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import { afterEach, beforeEach } from "./test/vitest";
  2. import { addLeadingZeros } from "./addLeadingZeros.js";
  3. import { setDefaultOptions } from "./defaultOptions.js";
  4. import sinon from "./test/sinon";
  5. export function assertType(_value) {}
  6. export function resetDefaultOptions() {
  7. setDefaultOptions({});
  8. }
  9. // This makes sure we create the consistent offsets across timezones, no matter where these tests are ran.
  10. export function generateOffset(originalDate) {
  11. // Add the timezone.
  12. let offset = "";
  13. const tzOffset = originalDate.getTimezoneOffset();
  14. if (tzOffset !== 0) {
  15. const absoluteOffset = Math.abs(tzOffset);
  16. const hourOffset = addLeadingZeros(Math.trunc(absoluteOffset / 60), 2);
  17. const minuteOffset = addLeadingZeros(absoluteOffset % 60, 2);
  18. // If less than 0, the sign is +, because it is ahead of time.
  19. const sign = tzOffset < 0 ? "+" : "-";
  20. offset = `${sign}${hourOffset}:${minuteOffset}`;
  21. } else {
  22. offset = "Z";
  23. }
  24. return offset;
  25. }
  26. export function fakeDate(date) {
  27. let clock;
  28. function fakeNow(date) {
  29. clock?.restore();
  30. clock = sinon.useFakeTimers(+date);
  31. }
  32. beforeEach(() => {
  33. fakeNow(+date);
  34. });
  35. afterEach(() => {
  36. clock?.restore();
  37. clock = undefined;
  38. });
  39. return { fakeNow };
  40. }