@sprucelabs/spruce-calendar-components 22.4.6 → 22.4.9

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.
Files changed (37) hide show
  1. package/build/.spruce/schemas/schemas.types.d.ts +142 -142
  2. package/build/__tests__/support/CalendarToolBeltStateMachineTestFactory.d.ts +39 -0
  3. package/build/__tests__/support/CalendarToolBeltStateMachineTestFactory.js +105 -0
  4. package/build/__tests__/support/SpyEventManager.d.ts +40 -0
  5. package/build/__tests__/support/SpyEventManager.js +30 -0
  6. package/build/__tests__/support/SpyPeopleManager.d.ts +10 -0
  7. package/build/__tests__/support/SpyPeopleManager.js +23 -0
  8. package/build/__tests__/support/SpyRemoteEventStore.d.ts +18 -0
  9. package/build/__tests__/support/SpyRemoteEventStore.js +31 -0
  10. package/build/__tests__/support/SpyRemotePreferencesStore.d.ts +9 -0
  11. package/build/__tests__/support/SpyRemotePreferencesStore.js +17 -0
  12. package/build/__tests__/support/utilities/calendarAssert.d.ts +13 -0
  13. package/build/__tests__/support/utilities/calendarAssert.js +93 -0
  14. package/build/__tests__/support/utilities/calendarSkillAssert.d.ts +40 -0
  15. package/build/__tests__/support/utilities/calendarSkillAssert.js +346 -0
  16. package/build/__tests__/support/utilities/calendarToolBeltInteractor.d.ts +5 -0
  17. package/build/__tests__/support/utilities/calendarToolBeltInteractor.js +11 -0
  18. package/build/esm/.spruce/schemas/schemas.types.d.ts +142 -142
  19. package/build/esm/__tests__/support/CalendarToolBeltStateMachineTestFactory.d.ts +39 -0
  20. package/build/esm/__tests__/support/CalendarToolBeltStateMachineTestFactory.js +126 -0
  21. package/build/esm/__tests__/support/SpyEventManager.d.ts +40 -0
  22. package/build/esm/__tests__/support/SpyEventManager.js +38 -0
  23. package/build/esm/__tests__/support/SpyPeopleManager.d.ts +10 -0
  24. package/build/esm/__tests__/support/SpyPeopleManager.js +31 -0
  25. package/build/esm/__tests__/support/SpyRemoteEventStore.d.ts +18 -0
  26. package/build/esm/__tests__/support/SpyRemoteEventStore.js +46 -0
  27. package/build/esm/__tests__/support/SpyRemotePreferencesStore.d.ts +9 -0
  28. package/build/esm/__tests__/support/SpyRemotePreferencesStore.js +22 -0
  29. package/build/esm/__tests__/support/utilities/calendarAssert.d.ts +13 -0
  30. package/build/esm/__tests__/support/utilities/calendarAssert.js +88 -0
  31. package/build/esm/__tests__/support/utilities/calendarSkillAssert.d.ts +40 -0
  32. package/build/esm/__tests__/support/utilities/calendarSkillAssert.js +372 -0
  33. package/build/esm/__tests__/support/utilities/calendarToolBeltInteractor.d.ts +5 -0
  34. package/build/esm/__tests__/support/utilities/calendarToolBeltInteractor.js +20 -0
  35. package/build/esm/toolBelt/states/AbstractCalendarEventToolBeltState.js +1 -1
  36. package/build/toolBelt/states/AbstractCalendarEventToolBeltState.js +1 -1
  37. package/package.json +34 -2
@@ -2046,41 +2046,41 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
2046
2046
  }
2047
2047
  }
2048
2048
  namespace SpruceSchemas.Calendar.v2021_05_19 {
2049
- interface GetCalendarEventEmitTarget {
2050
- 'locationId': string;
2051
- 'calendarEventId': string;
2049
+ interface GetCalendarEmitTarget {
2050
+ 'organizationId': string;
2051
+ 'slug': string;
2052
2052
  }
2053
- interface GetCalendarEventEmitTargetSchema extends SpruceSchema.Schema {
2054
- id: 'getCalendarEventEmitTarget';
2053
+ interface GetCalendarEmitTargetSchema extends SpruceSchema.Schema {
2054
+ id: 'getCalendarEmitTarget';
2055
2055
  version: 'v2021_05_19';
2056
2056
  namespace: 'Calendar';
2057
2057
  name: '';
2058
2058
  fields: {
2059
2059
  /** . */
2060
- 'locationId': {
2060
+ 'organizationId': {
2061
2061
  type: 'id';
2062
2062
  isRequired: true;
2063
2063
  options: undefined;
2064
2064
  };
2065
2065
  /** . */
2066
- 'calendarEventId': {
2066
+ 'slug': {
2067
2067
  type: 'id';
2068
2068
  isRequired: true;
2069
2069
  options: undefined;
2070
2070
  };
2071
2071
  };
2072
2072
  }
2073
- interface GetCalendarEventEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.GetCalendarEventEmitTargetSchema> {
2073
+ interface GetCalendarEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.GetCalendarEmitTargetSchema> {
2074
2074
  }
2075
2075
  }
2076
2076
  namespace SpruceSchemas.Calendar.v2021_05_19 {
2077
- interface GetCalendarEventEmitTargetAndPayload {
2077
+ interface GetCalendarEmitTargetAndPayload {
2078
2078
  /** Source. */
2079
2079
  'source'?: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource | undefined | null;
2080
- 'target': SpruceSchemas.Calendar.v2021_05_19.GetCalendarEventEmitTarget;
2080
+ 'target': SpruceSchemas.Calendar.v2021_05_19.GetCalendarEmitTarget;
2081
2081
  }
2082
- interface GetCalendarEventEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
2083
- id: 'getCalendarEventEmitTargetAndPayload';
2082
+ interface GetCalendarEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
2083
+ id: 'getCalendarEmitTargetAndPayload';
2084
2084
  version: 'v2021_05_19';
2085
2085
  namespace: 'Calendar';
2086
2086
  name: '';
@@ -2098,73 +2098,73 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
2098
2098
  type: 'schema';
2099
2099
  isRequired: true;
2100
2100
  options: {
2101
- schema: SpruceSchemas.Calendar.v2021_05_19.GetCalendarEventEmitTargetSchema;
2101
+ schema: SpruceSchemas.Calendar.v2021_05_19.GetCalendarEmitTargetSchema;
2102
2102
  };
2103
2103
  };
2104
2104
  };
2105
2105
  }
2106
- interface GetCalendarEventEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.GetCalendarEventEmitTargetAndPayloadSchema> {
2106
+ interface GetCalendarEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.GetCalendarEmitTargetAndPayloadSchema> {
2107
2107
  }
2108
2108
  }
2109
2109
  namespace SpruceSchemas.Calendar.v2021_05_19 {
2110
- interface GetCalendarEventResponsePayload {
2111
- 'calendarEvent': SpruceSchemas.CalendarUtils.v2021_05_19.CalendarEvent;
2110
+ interface GetCalendarResponsePayload {
2111
+ 'calendar': SpruceSchemas.Calendar.v2021_05_19.Calendar;
2112
2112
  }
2113
- interface GetCalendarEventResponsePayloadSchema extends SpruceSchema.Schema {
2114
- id: 'getCalendarEventResponsePayload';
2113
+ interface GetCalendarResponsePayloadSchema extends SpruceSchema.Schema {
2114
+ id: 'getCalendarResponsePayload';
2115
2115
  version: 'v2021_05_19';
2116
2116
  namespace: 'Calendar';
2117
2117
  name: '';
2118
2118
  fields: {
2119
2119
  /** . */
2120
- 'calendarEvent': {
2120
+ 'calendar': {
2121
2121
  type: 'schema';
2122
2122
  isRequired: true;
2123
2123
  options: {
2124
- schema: SpruceSchemas.CalendarUtils.v2021_05_19.CalendarEventSchema;
2124
+ schema: SpruceSchemas.Calendar.v2021_05_19.CalendarSchema;
2125
2125
  };
2126
2126
  };
2127
2127
  };
2128
2128
  }
2129
- interface GetCalendarEventResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.GetCalendarEventResponsePayloadSchema> {
2129
+ interface GetCalendarResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.GetCalendarResponsePayloadSchema> {
2130
2130
  }
2131
2131
  }
2132
2132
  namespace SpruceSchemas.Calendar.v2021_05_19 {
2133
- interface GetCalendarEmitTarget {
2134
- 'organizationId': string;
2135
- 'slug': string;
2133
+ interface GetCalendarEventEmitTarget {
2134
+ 'locationId': string;
2135
+ 'calendarEventId': string;
2136
2136
  }
2137
- interface GetCalendarEmitTargetSchema extends SpruceSchema.Schema {
2138
- id: 'getCalendarEmitTarget';
2137
+ interface GetCalendarEventEmitTargetSchema extends SpruceSchema.Schema {
2138
+ id: 'getCalendarEventEmitTarget';
2139
2139
  version: 'v2021_05_19';
2140
2140
  namespace: 'Calendar';
2141
2141
  name: '';
2142
2142
  fields: {
2143
2143
  /** . */
2144
- 'organizationId': {
2144
+ 'locationId': {
2145
2145
  type: 'id';
2146
2146
  isRequired: true;
2147
2147
  options: undefined;
2148
2148
  };
2149
2149
  /** . */
2150
- 'slug': {
2150
+ 'calendarEventId': {
2151
2151
  type: 'id';
2152
2152
  isRequired: true;
2153
2153
  options: undefined;
2154
2154
  };
2155
2155
  };
2156
2156
  }
2157
- interface GetCalendarEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.GetCalendarEmitTargetSchema> {
2157
+ interface GetCalendarEventEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.GetCalendarEventEmitTargetSchema> {
2158
2158
  }
2159
2159
  }
2160
2160
  namespace SpruceSchemas.Calendar.v2021_05_19 {
2161
- interface GetCalendarEmitTargetAndPayload {
2161
+ interface GetCalendarEventEmitTargetAndPayload {
2162
2162
  /** Source. */
2163
2163
  'source'?: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource | undefined | null;
2164
- 'target': SpruceSchemas.Calendar.v2021_05_19.GetCalendarEmitTarget;
2164
+ 'target': SpruceSchemas.Calendar.v2021_05_19.GetCalendarEventEmitTarget;
2165
2165
  }
2166
- interface GetCalendarEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
2167
- id: 'getCalendarEmitTargetAndPayload';
2166
+ interface GetCalendarEventEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
2167
+ id: 'getCalendarEventEmitTargetAndPayload';
2168
2168
  version: 'v2021_05_19';
2169
2169
  namespace: 'Calendar';
2170
2170
  name: '';
@@ -2182,35 +2182,35 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
2182
2182
  type: 'schema';
2183
2183
  isRequired: true;
2184
2184
  options: {
2185
- schema: SpruceSchemas.Calendar.v2021_05_19.GetCalendarEmitTargetSchema;
2185
+ schema: SpruceSchemas.Calendar.v2021_05_19.GetCalendarEventEmitTargetSchema;
2186
2186
  };
2187
2187
  };
2188
2188
  };
2189
2189
  }
2190
- interface GetCalendarEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.GetCalendarEmitTargetAndPayloadSchema> {
2190
+ interface GetCalendarEventEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.GetCalendarEventEmitTargetAndPayloadSchema> {
2191
2191
  }
2192
2192
  }
2193
2193
  namespace SpruceSchemas.Calendar.v2021_05_19 {
2194
- interface GetCalendarResponsePayload {
2195
- 'calendar': SpruceSchemas.Calendar.v2021_05_19.Calendar;
2194
+ interface GetCalendarEventResponsePayload {
2195
+ 'calendarEvent': SpruceSchemas.CalendarUtils.v2021_05_19.CalendarEvent;
2196
2196
  }
2197
- interface GetCalendarResponsePayloadSchema extends SpruceSchema.Schema {
2198
- id: 'getCalendarResponsePayload';
2197
+ interface GetCalendarEventResponsePayloadSchema extends SpruceSchema.Schema {
2198
+ id: 'getCalendarEventResponsePayload';
2199
2199
  version: 'v2021_05_19';
2200
2200
  namespace: 'Calendar';
2201
2201
  name: '';
2202
2202
  fields: {
2203
2203
  /** . */
2204
- 'calendar': {
2204
+ 'calendarEvent': {
2205
2205
  type: 'schema';
2206
2206
  isRequired: true;
2207
2207
  options: {
2208
- schema: SpruceSchemas.Calendar.v2021_05_19.CalendarSchema;
2208
+ schema: SpruceSchemas.CalendarUtils.v2021_05_19.CalendarEventSchema;
2209
2209
  };
2210
2210
  };
2211
2211
  };
2212
2212
  }
2213
- interface GetCalendarResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.GetCalendarResponsePayloadSchema> {
2213
+ interface GetCalendarEventResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.GetCalendarEventResponsePayloadSchema> {
2214
2214
  }
2215
2215
  }
2216
2216
  namespace SpruceSchemas.Calendar.v2021_05_19 {
@@ -2339,106 +2339,6 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
2339
2339
  interface GetConflictsForTimeRangeResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.GetConflictsForTimeRangeResponsePayloadSchema> {
2340
2340
  }
2341
2341
  }
2342
- namespace SpruceSchemas.Calendar.v2021_05_19 {
2343
- interface GetPreferencesEmitTarget {
2344
- 'organizationId': string;
2345
- }
2346
- interface GetPreferencesEmitTargetSchema extends SpruceSchema.Schema {
2347
- id: 'getPreferencesEmitTarget';
2348
- version: 'v2021_05_19';
2349
- namespace: 'Calendar';
2350
- name: '';
2351
- fields: {
2352
- /** . */
2353
- 'organizationId': {
2354
- type: 'id';
2355
- isRequired: true;
2356
- options: undefined;
2357
- };
2358
- };
2359
- }
2360
- interface GetPreferencesEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.GetPreferencesEmitTargetSchema> {
2361
- }
2362
- }
2363
- namespace SpruceSchemas.Calendar.v2021_05_19 {
2364
- interface GetPreferencesEmitTargetAndPayload {
2365
- /** Source. */
2366
- 'source'?: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource | undefined | null;
2367
- 'target': SpruceSchemas.Calendar.v2021_05_19.GetPreferencesEmitTarget;
2368
- }
2369
- interface GetPreferencesEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
2370
- id: 'getPreferencesEmitTargetAndPayload';
2371
- version: 'v2021_05_19';
2372
- namespace: 'Calendar';
2373
- name: '';
2374
- fields: {
2375
- /** Source. */
2376
- 'source': {
2377
- label: 'Source';
2378
- type: 'schema';
2379
- options: {
2380
- schema: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSourceSchema;
2381
- };
2382
- };
2383
- /** . */
2384
- 'target': {
2385
- type: 'schema';
2386
- isRequired: true;
2387
- options: {
2388
- schema: SpruceSchemas.Calendar.v2021_05_19.GetPreferencesEmitTargetSchema;
2389
- };
2390
- };
2391
- };
2392
- }
2393
- interface GetPreferencesEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.GetPreferencesEmitTargetAndPayloadSchema> {
2394
- }
2395
- }
2396
- namespace SpruceSchemas.Calendar.v2021_05_19 {
2397
- interface GetPreferencesResponsePayload {
2398
- 'selectedCalendarIds'?: string[] | undefined | null;
2399
- 'visiblePeopleMode'?: ("me" | "working" | "custom") | undefined | null;
2400
- 'visiblePeopleIds'?: string[] | undefined | null;
2401
- }
2402
- interface GetPreferencesResponsePayloadSchema extends SpruceSchema.Schema {
2403
- id: 'getPreferencesResponsePayload';
2404
- version: 'v2021_05_19';
2405
- namespace: 'Calendar';
2406
- name: '';
2407
- fields: {
2408
- /** . */
2409
- 'selectedCalendarIds': {
2410
- type: 'id';
2411
- isArray: true;
2412
- minArrayLength: 0;
2413
- options: undefined;
2414
- };
2415
- /** . */
2416
- 'visiblePeopleMode': {
2417
- type: 'select';
2418
- options: {
2419
- choices: [{
2420
- "value": "me";
2421
- "label": "Me";
2422
- }, {
2423
- "value": "working";
2424
- "label": "Working";
2425
- }, {
2426
- "value": "custom";
2427
- "label": "Custom";
2428
- }];
2429
- };
2430
- };
2431
- /** . */
2432
- 'visiblePeopleIds': {
2433
- type: 'text';
2434
- isArray: true;
2435
- options: undefined;
2436
- };
2437
- };
2438
- }
2439
- interface GetPreferencesResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.GetPreferencesResponsePayloadSchema> {
2440
- }
2441
- }
2442
2342
  namespace SpruceSchemas.Calendar.v2021_05_19 {
2443
2343
  interface GetSchedulesEmitTarget {
2444
2344
  'organizationId'?: string | undefined | null;
@@ -2575,6 +2475,106 @@ declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schem
2575
2475
  interface GetSchedulesResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.GetSchedulesResponsePayloadSchema> {
2576
2476
  }
2577
2477
  }
2478
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
2479
+ interface GetPreferencesEmitTarget {
2480
+ 'organizationId': string;
2481
+ }
2482
+ interface GetPreferencesEmitTargetSchema extends SpruceSchema.Schema {
2483
+ id: 'getPreferencesEmitTarget';
2484
+ version: 'v2021_05_19';
2485
+ namespace: 'Calendar';
2486
+ name: '';
2487
+ fields: {
2488
+ /** . */
2489
+ 'organizationId': {
2490
+ type: 'id';
2491
+ isRequired: true;
2492
+ options: undefined;
2493
+ };
2494
+ };
2495
+ }
2496
+ interface GetPreferencesEmitTargetEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.GetPreferencesEmitTargetSchema> {
2497
+ }
2498
+ }
2499
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
2500
+ interface GetPreferencesEmitTargetAndPayload {
2501
+ /** Source. */
2502
+ 'source'?: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSource | undefined | null;
2503
+ 'target': SpruceSchemas.Calendar.v2021_05_19.GetPreferencesEmitTarget;
2504
+ }
2505
+ interface GetPreferencesEmitTargetAndPayloadSchema extends SpruceSchema.Schema {
2506
+ id: 'getPreferencesEmitTargetAndPayload';
2507
+ version: 'v2021_05_19';
2508
+ namespace: 'Calendar';
2509
+ name: '';
2510
+ fields: {
2511
+ /** Source. */
2512
+ 'source': {
2513
+ label: 'Source';
2514
+ type: 'schema';
2515
+ options: {
2516
+ schema: SpruceSchemas.SpruceEventUtils.v2021_09_13.EventSourceSchema;
2517
+ };
2518
+ };
2519
+ /** . */
2520
+ 'target': {
2521
+ type: 'schema';
2522
+ isRequired: true;
2523
+ options: {
2524
+ schema: SpruceSchemas.Calendar.v2021_05_19.GetPreferencesEmitTargetSchema;
2525
+ };
2526
+ };
2527
+ };
2528
+ }
2529
+ interface GetPreferencesEmitTargetAndPayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.GetPreferencesEmitTargetAndPayloadSchema> {
2530
+ }
2531
+ }
2532
+ namespace SpruceSchemas.Calendar.v2021_05_19 {
2533
+ interface GetPreferencesResponsePayload {
2534
+ 'selectedCalendarIds'?: string[] | undefined | null;
2535
+ 'visiblePeopleMode'?: ("me" | "working" | "custom") | undefined | null;
2536
+ 'visiblePeopleIds'?: string[] | undefined | null;
2537
+ }
2538
+ interface GetPreferencesResponsePayloadSchema extends SpruceSchema.Schema {
2539
+ id: 'getPreferencesResponsePayload';
2540
+ version: 'v2021_05_19';
2541
+ namespace: 'Calendar';
2542
+ name: '';
2543
+ fields: {
2544
+ /** . */
2545
+ 'selectedCalendarIds': {
2546
+ type: 'id';
2547
+ isArray: true;
2548
+ minArrayLength: 0;
2549
+ options: undefined;
2550
+ };
2551
+ /** . */
2552
+ 'visiblePeopleMode': {
2553
+ type: 'select';
2554
+ options: {
2555
+ choices: [{
2556
+ "value": "me";
2557
+ "label": "Me";
2558
+ }, {
2559
+ "value": "working";
2560
+ "label": "Working";
2561
+ }, {
2562
+ "value": "custom";
2563
+ "label": "Custom";
2564
+ }];
2565
+ };
2566
+ };
2567
+ /** . */
2568
+ 'visiblePeopleIds': {
2569
+ type: 'text';
2570
+ isArray: true;
2571
+ options: undefined;
2572
+ };
2573
+ };
2574
+ }
2575
+ interface GetPreferencesResponsePayloadEntity extends SchemaEntity<SpruceSchemas.Calendar.v2021_05_19.GetPreferencesResponsePayloadSchema> {
2576
+ }
2577
+ }
2578
2578
  namespace SpruceSchemas.Calendar.v2021_05_19 {
2579
2579
  interface ListCalendarEventTypesEmitPayload {
2580
2580
  'shouldShowOnlyMine'?: boolean | undefined | null;
@@ -0,0 +1,39 @@
1
+ import { SpruceSchemas } from '@sprucelabs/calendar-utils';
2
+ import { ToolBeltViewController } from '@sprucelabs/heartwood-view-controllers';
3
+ import { ViewFixture } from '@sprucelabs/spruce-test-fixtures';
4
+ import { GetScheduleOptions, RemoteEventStore } from '../../stores/RemoteEventStore';
5
+ import { CalendarToolBeltStateMachine, UpdateEvent } from '../../types/calendar.types';
6
+ import CalendarViewController from '../../viewControllers/Calendar.vc';
7
+ import SpyEventManager from './SpyEventManager';
8
+ export default class CalendarToolBeltStateMachineTestFactory {
9
+ static StateMachine(views: ViewFixture): Promise<{
10
+ stateMachine: CalendarToolBeltStateMachine;
11
+ toolBeltVc: ToolBeltViewController;
12
+ calendarVc: CalendarViewController;
13
+ events: SpyEventManager;
14
+ }>;
15
+ }
16
+ declare module '@sprucelabs/heartwood-view-controllers/build/types/heartwood.types' {
17
+ interface ViewControllerMap {
18
+ 'calendar.calendar': CalendarViewController;
19
+ }
20
+ interface ViewControllerOptionsMap {
21
+ 'calendar.calendar': ConstructorParameters<typeof CalendarViewController>[0];
22
+ }
23
+ }
24
+ export declare class FakeRemoteEventStore implements RemoteEventStore {
25
+ lastPersistedEvent?: SpruceSchemas.CalendarUtils.v2021_05_19.CalendarEvent;
26
+ load(_options: {
27
+ organizationId: string;
28
+ locationId: string;
29
+ }): Promise<void>;
30
+ persist(event: UpdateEvent): Promise<SpruceSchemas.CalendarUtils.v2021_05_19.CalendarEvent>;
31
+ setCalendarId(_id: string): void;
32
+ clearCalendarId(): void;
33
+ getCalendarId(): string | undefined;
34
+ waitForPendingSaves(): Promise<void>;
35
+ cancelEvent(_id: string): Promise<void>;
36
+ getSchedules(_options: GetScheduleOptions): Promise<SpruceSchemas.HeartwoodViewControllers.v2021_02_11.CalendarEvent[]>;
37
+ getEventTypes(): Promise<SpruceSchemas.Calendar.v2021_05_19.CalendarEventType[]>;
38
+ getCalendars(): Promise<SpruceSchemas.Calendar.v2021_05_19.Calendar[]>;
39
+ }
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FakeRemoteEventStore = void 0;
7
+ const calendar_utils_1 = require("@sprucelabs/calendar-utils");
8
+ const heartwood_view_controllers_1 = require("@sprucelabs/heartwood-view-controllers");
9
+ const spruce_test_fixtures_1 = require("@sprucelabs/spruce-test-fixtures");
10
+ const test_utils_1 = require("@sprucelabs/test-utils");
11
+ const RemotePreferencesStore_1 = __importDefault(require("../../stores/RemotePreferencesStore"));
12
+ const draftGenerator_1 = __importDefault(require("../../utilities/draftGenerator"));
13
+ const Calendar_vc_1 = __importDefault(require("../../viewControllers/Calendar.vc"));
14
+ const SpyEventManager_1 = __importDefault(require("./SpyEventManager"));
15
+ const SpyPeopleManager_1 = __importDefault(require("./SpyPeopleManager"));
16
+ class CalendarToolBeltStateMachineTestFactory {
17
+ static async StateMachine(views) {
18
+ const factory = views.getFactory();
19
+ if (!factory.hasController('calendar.calendar')) {
20
+ factory.mixinControllers({
21
+ //@ts-ignore
22
+ 'calendar.calendar': Calendar_vc_1.default,
23
+ });
24
+ }
25
+ const toolBeltVc = views.Controller('toolBelt', {});
26
+ const event = heartwood_view_controllers_1.calendarSeeder.generateEventValues();
27
+ const calendarVc = views.Controller('calendar.calendar', {
28
+ onAddDraftEvent: () => { },
29
+ onEventSwapped(draft, saved) {
30
+ return events.silentlySwapEvent(draft.id, saved);
31
+ },
32
+ });
33
+ calendarVc.addEvent(event);
34
+ const sm = new heartwood_view_controllers_1.ToolBeltStateMachine({
35
+ vcFactory: views.getFactory(),
36
+ toolBeltVc,
37
+ connectToApi: async () => spruce_test_fixtures_1.fake.getClient(),
38
+ context: Object.assign(Object.assign({}, views.getRouter().buildLoadOptions()), { event,
39
+ calendarVc, cancelEvent: () => { } }),
40
+ });
41
+ const connectToApi = async () => spruce_test_fixtures_1.fake.getClient();
42
+ const preferences = new FakeRemotePreferences({ connectToApi });
43
+ const remoteEventsStore = new FakeRemoteEventStore();
44
+ const events = new SpyEventManager_1.default({
45
+ calendarVc,
46
+ sm,
47
+ dates: calendar_utils_1.dateUtil,
48
+ remoteVc: {
49
+ fetchRemoteController: async (name) => factory.getController(name),
50
+ },
51
+ askForUpdateStrategy: async () => {
52
+ return 'all';
53
+ },
54
+ events: remoteEventsStore,
55
+ preferences,
56
+ });
57
+ await events.load();
58
+ events.silentlyAddEvent(event);
59
+ const people = new SpyPeopleManager_1.default({
60
+ calendarVc,
61
+ connectToApi,
62
+ preferences,
63
+ getVisibleEvents: () => [],
64
+ });
65
+ await sm.updateContext({ events, people });
66
+ await sm.on('did-update-context', () => {
67
+ calendarVc.updateEvent(event.id, Object.assign({}, sm.getContext().event));
68
+ });
69
+ //@ts-ignore
70
+ return { stateMachine: sm, toolBeltVc, calendarVc, events };
71
+ }
72
+ }
73
+ exports.default = CalendarToolBeltStateMachineTestFactory;
74
+ class FakeRemotePreferences extends RemotePreferencesStore_1.default {
75
+ async loadPreferences() { }
76
+ async save() { }
77
+ }
78
+ class FakeRemoteEventStore {
79
+ async load(_options) { }
80
+ async persist(event) {
81
+ const e = Object.assign(Object.assign({ dateCreated: new Date().getTime() }, heartwood_view_controllers_1.calendarSeeder.generateEventValues()), event);
82
+ if (draftGenerator_1.default.isDraftId(e.id)) {
83
+ e.id = (0, test_utils_1.generateId)();
84
+ }
85
+ this.lastPersistedEvent = e;
86
+ return e;
87
+ }
88
+ setCalendarId(_id) { }
89
+ clearCalendarId() { }
90
+ getCalendarId() {
91
+ return undefined;
92
+ }
93
+ async waitForPendingSaves() { }
94
+ async cancelEvent(_id) { }
95
+ async getSchedules(_options) {
96
+ return [];
97
+ }
98
+ async getEventTypes() {
99
+ return [];
100
+ }
101
+ async getCalendars() {
102
+ return [];
103
+ }
104
+ }
105
+ exports.FakeRemoteEventStore = FakeRemoteEventStore;
@@ -0,0 +1,40 @@
1
+ import { CalendarEvent, CalendarToolBeltContext, UpdateCalendarToolBeltContextHandler } from '../../types/calendar.types';
2
+ import CalendarEventManager, { CalendarEventManagerOptions } from '../../utilities/CalendarEventManager';
3
+ import SpyRemoteEventStore from './SpyRemoteEventStore';
4
+ import SpyRemotePreferencesStore from './SpyRemotePreferencesStore';
5
+ export default class SpyEventManager extends CalendarEventManager {
6
+ updateContext?: UpdateCalendarToolBeltContextHandler<CalendarToolBeltContext>;
7
+ constructor(options: SpyEventManagerOptions);
8
+ getRemoteEventsStore(): SpyRemoteEventStore;
9
+ getPreferences(): SpyRemotePreferencesStore;
10
+ silentlySetAllEvents(events: CalendarEvent[]): void;
11
+ silentlyMixinEvents(events: CalendarEvent[]): void;
12
+ silentlyAddEvent(event: CalendarEvent): void;
13
+ updateEventInContext(updates: Partial<CalendarEvent>): Promise<{
14
+ isBusy: boolean;
15
+ id: string;
16
+ target: import("@sprucelabs/spruce-core-schemas").SpruceSchemas.CalendarUtils.v2021_05_19.CalendarEventTarget;
17
+ calendarId: string;
18
+ eventTypeSlug?: string | null | undefined;
19
+ startDateTimeMs: number;
20
+ isResizeable?: boolean | null | undefined;
21
+ style?: "active" | "blocked" | "draft" | "tentative" | "upcoming" | "unavailable" | "past" | "warn" | "critical" | null | undefined;
22
+ groupId?: string | null | undefined;
23
+ timeBlocks: import("@sprucelabs/spruce-core-schemas").SpruceSchemas.CalendarUtils.v2021_05_19.EventTimeBlock[];
24
+ repeats?: "weekly" | "monthly" | "daily" | null | undefined;
25
+ daysOfWeek?: ("sun" | "mon" | "tue" | "wed" | "thur" | "fri" | "sat")[] | null | undefined;
26
+ daysOfMonth?: ("1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12" | "13" | "14" | "15" | "16" | "17" | "18" | "19" | "20" | "21" | "22" | "23" | "24" | "25" | "26" | "27" | "28" | "29" | "30" | "31")[] | null | undefined;
27
+ repeatsUntil?: number | null | undefined;
28
+ occurrences?: number | null | undefined;
29
+ interval?: number | null | undefined;
30
+ nthOccurrences?: number[] | null | undefined;
31
+ activeUntilDate?: number | null | undefined;
32
+ exclusionDates?: import("@sprucelabs/spruce-core-schemas").SpruceSchemas.CalendarUtils.v2021_05_19.EventExclusionDate[] | null | undefined;
33
+ nthInRepeating?: number | null | undefined;
34
+ totalInRepeating?: number | null | undefined;
35
+ error?: Error | null | undefined;
36
+ isSelected?: boolean | null | undefined;
37
+ controller?: import("@sprucelabs/heartwood-view-controllers").CalendarEventViewController | null | undefined;
38
+ }>;
39
+ }
40
+ export declare type SpyEventManagerOptions = CalendarEventManagerOptions;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const CalendarEventManager_1 = __importDefault(require("../../utilities/CalendarEventManager"));
7
+ class SpyEventManager extends CalendarEventManager_1.default {
8
+ constructor(options) {
9
+ super(options);
10
+ }
11
+ getRemoteEventsStore() {
12
+ return this.events;
13
+ }
14
+ getPreferences() {
15
+ return this.prefs;
16
+ }
17
+ silentlySetAllEvents(events) {
18
+ this.allEvents = events;
19
+ }
20
+ silentlyMixinEvents(events) {
21
+ this.allEvents = [...this.allEvents, ...events];
22
+ }
23
+ silentlyAddEvent(event) {
24
+ this.allEvents.push(event);
25
+ }
26
+ async updateEventInContext(updates) {
27
+ return super.updateEventInContext(updates);
28
+ }
29
+ }
30
+ exports.default = SpyEventManager;
@@ -0,0 +1,10 @@
1
+ import CalendarPeopleManager, { PeopleManagerOptions, SetVisiblePeolpeOptions } from '../../utilities/CalendarPeopleManager';
2
+ import { PersonMode } from '../../viewControllers/PersonSelectTool.vc';
3
+ export default class SpyPeopleManager extends CalendarPeopleManager {
4
+ visiblePeopleIds?: string[];
5
+ peopleVisibilityMode?: PersonMode;
6
+ constructor(options: PeopleManagerOptions);
7
+ protected getVisiblePeopleIds(): string[];
8
+ getVisibilityMode(): PersonMode;
9
+ setVisiblePeopleIds(ids: string[], options?: SetVisiblePeolpeOptions): Promise<void>;
10
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const CalendarPeopleManager_1 = __importDefault(require("../../utilities/CalendarPeopleManager"));
7
+ class SpyPeopleManager extends CalendarPeopleManager_1.default {
8
+ constructor(options) {
9
+ super(options);
10
+ }
11
+ getVisiblePeopleIds() {
12
+ var _a;
13
+ return (_a = this.visiblePeopleIds) !== null && _a !== void 0 ? _a : super.getVisiblePeopleIds();
14
+ }
15
+ getVisibilityMode() {
16
+ var _a;
17
+ return (_a = this.peopleVisibilityMode) !== null && _a !== void 0 ? _a : super.getVisibilityMode();
18
+ }
19
+ async setVisiblePeopleIds(ids, options) {
20
+ return super.setVisiblePeopleIds(ids, options);
21
+ }
22
+ }
23
+ exports.default = SpyPeopleManager;