@sprucelabs/calendar-utils 42.0.494 → 42.0.496

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -24,3 +24,4 @@ export { SpruceSchemas } from './.spruce/schemas/schemas.types';
24
24
  export * from './constants';
25
25
  export { default as DurationUtilBuilder } from './utilities/DurationUtilBuilder';
26
26
  export { default as DateUtilBuilder } from './utilities/DateUtilBuilder';
27
+ export { default as decorateDateUtilWithMockMethods } from './utilities/decorateDateUtilWithMockMethods.utility';
@@ -23,3 +23,4 @@ export * from './dates.js';
23
23
  export * from './constants.js';
24
24
  export { default as DurationUtilBuilder } from './utilities/DurationUtilBuilder.js';
25
25
  export { default as DateUtilBuilder } from './utilities/DateUtilBuilder.js';
26
+ export { default as decorateDateUtilWithMockMethods } from './utilities/decorateDateUtilWithMockMethods.utility.js';
@@ -1,6 +1,10 @@
1
1
  import { DateUtil, TimezoneName } from '../types/calendar.types';
2
2
  export default class DateUtilBuilder {
3
3
  static lastBuiltDateUtil?: DateUtil;
4
+ private static didBuildHandler;
5
+ static didBuild(cb: DidBuildHandler): void;
4
6
  static getForTimezone(timezone: TimezoneName): Promise<DateUtil>;
5
7
  static reset(): void;
6
8
  }
9
+ type DidBuildHandler = (dateUtil: DateUtil) => DateUtil;
10
+ export {};
@@ -1,16 +1,22 @@
1
1
  import DateUtilDecorator from '../locales/DateUtilDecorator.js';
2
2
  import LocaleImpl from '../locales/Locale.js';
3
3
  import dateUtil from './date.utility.js';
4
- export default class DateUtilBuilder {
4
+ class DateUtilBuilder {
5
+ static didBuild(cb) {
6
+ this.didBuildHandler = cb;
7
+ }
5
8
  static async getForTimezone(timezone) {
6
9
  const locale = new LocaleImpl();
7
10
  await locale.setZoneName(timezone);
8
11
  const decorator = new DateUtilDecorator(locale);
9
- const results = decorator.makeLocaleAware(dateUtil);
12
+ const results = this.didBuildHandler(decorator.makeLocaleAware(dateUtil));
10
13
  this.lastBuiltDateUtil = results;
11
14
  return results;
12
15
  }
13
16
  static reset() {
14
17
  delete this.lastBuiltDateUtil;
18
+ this.didBuildHandler = (dateUtil) => dateUtil;
15
19
  }
16
20
  }
21
+ DateUtilBuilder.didBuildHandler = (dateUtil) => dateUtil;
22
+ export default DateUtilBuilder;
@@ -0,0 +1,7 @@
1
+ import { DateUtil } from '../types/calendar.types';
2
+ export default function decorateDateUtilWithMockMethods(dateUtil: DateUtil): MockDateUtil<DateUtil>;
3
+ export type MockDateUtil<T = DateUtil> = {
4
+ [K in keyof T]: T[K];
5
+ } & {
6
+ [K in keyof T as `assert${Capitalize<string & K>}Called`]: T[K];
7
+ };
@@ -0,0 +1,27 @@
1
+ import { assert } from '@sprucelabs/test-utils';
2
+ import { cloneDeep } from 'lodash';
3
+ export default function decorateDateUtilWithMockMethods(dateUtil) {
4
+ const mockDateUtil = cloneDeep(dateUtil);
5
+ //@ts-ignore
6
+ Object.keys(mockDateUtil).filter((methodName) => {
7
+ if (typeof mockDateUtil[methodName] === 'function') {
8
+ const assertionName = `assert${methodName.charAt(0).toUpperCase()}${methodName.slice(1)}Called`;
9
+ const callLog = {};
10
+ const originalMethod = mockDateUtil[methodName].bind(mockDateUtil);
11
+ //@ts-ignore
12
+ mockDateUtil[methodName] = (...args) => {
13
+ callLog[methodName] = args;
14
+ //@ts-ignore
15
+ return originalMethod(...args);
16
+ };
17
+ //@ts-ignore
18
+ mockDateUtil[assertionName] = (...args) => {
19
+ assert.isTruthy(callLog[methodName], `dateUtil.${methodName} was not called`);
20
+ if (args.length > 0) {
21
+ assert.isEqualDeep(callLog[methodName], args, 'expected');
22
+ }
23
+ };
24
+ }
25
+ });
26
+ return mockDateUtil;
27
+ }
package/build/index.d.ts CHANGED
@@ -24,3 +24,4 @@ export { SpruceSchemas } from './.spruce/schemas/schemas.types';
24
24
  export * from './constants';
25
25
  export { default as DurationUtilBuilder } from './utilities/DurationUtilBuilder';
26
26
  export { default as DateUtilBuilder } from './utilities/DateUtilBuilder';
27
+ export { default as decorateDateUtilWithMockMethods } from './utilities/decorateDateUtilWithMockMethods.utility';
package/build/index.js CHANGED
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
17
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.DateUtilBuilder = exports.DurationUtilBuilder = exports.RepeatingRuleTextGenerator = exports.sortTimezoneChoices = exports.DateParser = exports.calendarEventLineIconSchema = exports.eventTimeBlockSchema = exports.eventExclusionDateSchema = exports.calendarEventTargetSchema = exports.calendarEventSchema = exports.calculateEventDurationMinutes = exports.calculateEventDurationMillis = exports.TimezoneChoiceSorter = exports.DateUtilDecorator = exports.LocaleImpl = exports.PeopleSorter = exports.dateAssert = exports.durationUtil = exports.dateUtil = exports.calendarUtil = void 0;
20
+ exports.decorateDateUtilWithMockMethods = exports.DateUtilBuilder = exports.DurationUtilBuilder = exports.RepeatingRuleTextGenerator = exports.sortTimezoneChoices = exports.DateParser = exports.calendarEventLineIconSchema = exports.eventTimeBlockSchema = exports.eventExclusionDateSchema = exports.calendarEventTargetSchema = exports.calendarEventSchema = exports.calculateEventDurationMinutes = exports.calculateEventDurationMillis = exports.TimezoneChoiceSorter = exports.DateUtilDecorator = exports.LocaleImpl = exports.PeopleSorter = exports.dateAssert = exports.durationUtil = exports.dateUtil = exports.calendarUtil = void 0;
21
21
  var calendar_utility_1 = require("./utilities/calendar.utility");
22
22
  Object.defineProperty(exports, "calendarUtil", { enumerable: true, get: function () { return __importDefault(calendar_utility_1).default; } });
23
23
  var date_utility_1 = require("./utilities/date.utility");
@@ -63,3 +63,5 @@ var DurationUtilBuilder_1 = require("./utilities/DurationUtilBuilder");
63
63
  Object.defineProperty(exports, "DurationUtilBuilder", { enumerable: true, get: function () { return __importDefault(DurationUtilBuilder_1).default; } });
64
64
  var DateUtilBuilder_1 = require("./utilities/DateUtilBuilder");
65
65
  Object.defineProperty(exports, "DateUtilBuilder", { enumerable: true, get: function () { return __importDefault(DateUtilBuilder_1).default; } });
66
+ var decorateDateUtilWithMockMethods_utility_1 = require("./utilities/decorateDateUtilWithMockMethods.utility");
67
+ Object.defineProperty(exports, "decorateDateUtilWithMockMethods", { enumerable: true, get: function () { return __importDefault(decorateDateUtilWithMockMethods_utility_1).default; } });
@@ -1,6 +1,10 @@
1
1
  import { DateUtil, TimezoneName } from '../types/calendar.types';
2
2
  export default class DateUtilBuilder {
3
3
  static lastBuiltDateUtil?: DateUtil;
4
+ private static didBuildHandler;
5
+ static didBuild(cb: DidBuildHandler): void;
4
6
  static getForTimezone(timezone: TimezoneName): Promise<DateUtil>;
5
7
  static reset(): void;
6
8
  }
9
+ type DidBuildHandler = (dateUtil: DateUtil) => DateUtil;
10
+ export {};
@@ -7,16 +7,21 @@ const DateUtilDecorator_1 = __importDefault(require("../locales/DateUtilDecorato
7
7
  const Locale_1 = __importDefault(require("../locales/Locale"));
8
8
  const date_utility_1 = __importDefault(require("./date.utility"));
9
9
  class DateUtilBuilder {
10
+ static didBuild(cb) {
11
+ this.didBuildHandler = cb;
12
+ }
10
13
  static async getForTimezone(timezone) {
11
14
  const locale = new Locale_1.default();
12
15
  await locale.setZoneName(timezone);
13
16
  const decorator = new DateUtilDecorator_1.default(locale);
14
- const results = decorator.makeLocaleAware(date_utility_1.default);
17
+ const results = this.didBuildHandler(decorator.makeLocaleAware(date_utility_1.default));
15
18
  this.lastBuiltDateUtil = results;
16
19
  return results;
17
20
  }
18
21
  static reset() {
19
22
  delete this.lastBuiltDateUtil;
23
+ this.didBuildHandler = (dateUtil) => dateUtil;
20
24
  }
21
25
  }
26
+ DateUtilBuilder.didBuildHandler = (dateUtil) => dateUtil;
22
27
  exports.default = DateUtilBuilder;
@@ -0,0 +1,7 @@
1
+ import { DateUtil } from '../types/calendar.types';
2
+ export default function decorateDateUtilWithMockMethods(dateUtil: DateUtil): MockDateUtil<DateUtil>;
3
+ export type MockDateUtil<T = DateUtil> = {
4
+ [K in keyof T]: T[K];
5
+ } & {
6
+ [K in keyof T as `assert${Capitalize<string & K>}Called`]: T[K];
7
+ };
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = decorateDateUtilWithMockMethods;
4
+ const test_utils_1 = require("@sprucelabs/test-utils");
5
+ const lodash_1 = require("lodash");
6
+ function decorateDateUtilWithMockMethods(dateUtil) {
7
+ const mockDateUtil = (0, lodash_1.cloneDeep)(dateUtil);
8
+ //@ts-ignore
9
+ Object.keys(mockDateUtil).filter((methodName) => {
10
+ if (typeof mockDateUtil[methodName] === 'function') {
11
+ const assertionName = `assert${methodName.charAt(0).toUpperCase()}${methodName.slice(1)}Called`;
12
+ const callLog = {};
13
+ const originalMethod = mockDateUtil[methodName].bind(mockDateUtil);
14
+ //@ts-ignore
15
+ mockDateUtil[methodName] = (...args) => {
16
+ callLog[methodName] = args;
17
+ //@ts-ignore
18
+ return originalMethod(...args);
19
+ };
20
+ //@ts-ignore
21
+ mockDateUtil[assertionName] = (...args) => {
22
+ test_utils_1.assert.isTruthy(callLog[methodName], `dateUtil.${methodName} was not called`);
23
+ if (args.length > 0) {
24
+ test_utils_1.assert.isEqualDeep(callLog[methodName], args, 'expected');
25
+ }
26
+ };
27
+ }
28
+ });
29
+ return mockDateUtil;
30
+ }
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "42.0.494",
6
+ "version": "42.0.496",
7
7
  "files": [
8
8
  "build/**/*",
9
9
  "!build/__tests__",
@@ -62,11 +62,11 @@
62
62
  },
63
63
  "dependencies": {
64
64
  "@sprucelabs/error": "^6.0.539",
65
- "@sprucelabs/mercury-event-emitter": "^42.0.599",
66
- "@sprucelabs/mercury-types": "^47.0.598",
67
- "@sprucelabs/schema": "^30.0.556",
68
- "@sprucelabs/spruce-core-schemas": "^40.1.543",
69
- "@sprucelabs/spruce-event-utils": "^40.1.320",
65
+ "@sprucelabs/mercury-event-emitter": "^42.0.600",
66
+ "@sprucelabs/mercury-types": "^47.0.599",
67
+ "@sprucelabs/schema": "^30.0.557",
68
+ "@sprucelabs/spruce-core-schemas": "^40.1.544",
69
+ "@sprucelabs/spruce-event-utils": "^40.1.321",
70
70
  "date-fns": "^4.1.0",
71
71
  "date-fns-tz": "^3.2.0",
72
72
  "rrule": "^2.8.1"