@hyper.software/common-helpers 2.2.57 → 2.2.58

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.
@@ -1,334 +1,199 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
- return new (P || (P = Promise))(function (resolve, reject) {
16
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
- step((generator = generator.apply(thisArg, _arguments || [])).next());
20
- });
21
- };
22
- var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
24
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
- function verb(n) { return function (v) { return step([n, v]); }; }
26
- function step(op) {
27
- if (f) throw new TypeError("Generator is already executing.");
28
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
- if (y = 0, t) op = [op[0] & 2, t.value];
31
- switch (op[0]) {
32
- case 0: case 1: t = op; break;
33
- case 4: _.label++; return { value: op[1], done: false };
34
- case 5: _.label++; y = op[1]; op = [0]; continue;
35
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
- default:
37
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
- if (t[2]) _.ops.pop();
42
- _.trys.pop(); continue;
43
- }
44
- op = body.call(thisArg, _);
45
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
- }
48
- };
49
- var __importDefault = (this && this.__importDefault) || function (mod) {
50
- return (mod && mod.__esModule) ? mod : { "default": mod };
51
- };
52
- Object.defineProperty(exports, "__esModule", { value: true });
53
- var moment_1 = __importDefault(require("moment"));
54
- var dynamicPricingService_1 = require("../../dynamicPricingService/dynamicPricingService");
55
- var interfaces_1 = require("../../../interfaces");
56
- describe('calculateDynamicPricing', function () {
57
- var today = (0, moment_1.default)().startOf('day');
58
- var nearDate = today.clone().add(7, 'days').format('YYYY-MM-DD');
59
- var farDate = today.clone().add(60, 'days').format('YYYY-MM-DD');
60
- var basePrice = 100;
61
- var baseDynamicPricing = function (overrides) {
62
- if (overrides === void 0) { overrides = {}; }
63
- return (__assign({ isActive: true, basePrice: {}, startDate: today.format('YYYY-MM-DD'), endDate: farDate, type: interfaces_1.DYNAMIC_PRICING_TYPE.INCREASE, amount: 20 }, overrides));
64
- };
65
- var mockCompany = {
66
- id: 'comp1',
67
- holidays: [],
68
- };
69
- var mockGetRoomTypesAvailability = function (available, date) {
70
- var _a;
71
- return jest.fn().mockResolvedValue({
72
- roomType1: {
73
- availability: (_a = {},
74
- _a[date] = available,
75
- _a),
76
- },
77
- });
78
- };
79
- var mockGetRoomsByCompanyId = function (count) {
80
- return jest.fn().mockResolvedValue({
81
- list: Array(count).fill({ roomTypeId: 'roomType1' }),
82
- });
83
- };
84
- it('applies holiday dynamic pricing if date is near holiday', function () { return __awaiter(void 0, void 0, void 0, function () {
85
- var holidayDate, companyWithHoliday, pricing, result;
86
- var _a;
87
- return __generator(this, function (_b) {
88
- switch (_b.label) {
89
- case 0:
90
- holidayDate = (0, moment_1.default)(today).add(1, 'day').format('YYYY-MM-DD');
91
- companyWithHoliday = {
92
- id: 'comp1',
93
- holidays: [{ date: holidayDate, enableDynamicPricing: true }],
94
- };
95
- pricing = (_a = {},
96
- _a[holidayDate] = 100,
97
- _a);
98
- return [4 /*yield*/, (0, dynamicPricingService_1.calculateDynamicPricing)({
99
- currentPricing: pricing,
100
- dynamicPricing: baseDynamicPricing(),
101
- existingBasePriceMap: {},
102
- company: companyWithHoliday,
103
- roomTypeId: 'roomType1',
104
- companyId: 'comp1',
105
- getRoomTypesAvailability: mockGetRoomTypesAvailability(1, holidayDate),
106
- getRoomsByCompanyId: mockGetRoomsByCompanyId(10),
107
- })];
108
- case 1:
109
- result = _b.sent();
110
- expect(result.updatedPricing[holidayDate]).toBeGreaterThan(100);
111
- return [2 /*return*/];
112
- }
113
- });
114
- }); });
115
- it('keeps price near base when availability is 100% and date is far', function () { return __awaiter(void 0, void 0, void 0, function () {
116
- var result, price;
117
- var _a;
118
- return __generator(this, function (_b) {
119
- switch (_b.label) {
120
- case 0: return [4 /*yield*/, (0, dynamicPricingService_1.calculateDynamicPricing)({
121
- currentPricing: (_a = {}, _a[farDate] = basePrice, _a),
122
- dynamicPricing: baseDynamicPricing(),
123
- existingBasePriceMap: {},
124
- company: mockCompany,
125
- roomTypeId: 'roomType1',
126
- companyId: 'comp1',
127
- getRoomTypesAvailability: mockGetRoomTypesAvailability(10, farDate),
128
- getRoomsByCompanyId: mockGetRoomsByCompanyId(10),
129
- })];
130
- case 1:
131
- result = _b.sent();
132
- price = result.updatedPricing[farDate];
133
- expect(price).toBeGreaterThanOrEqual(basePrice);
134
- expect(price).toBeLessThanOrEqual(Math.round(basePrice * 1.1));
135
- return [2 /*return*/];
136
- }
137
- });
138
- }); });
139
- it('increases price moderately with 50% availability and date is far', function () { return __awaiter(void 0, void 0, void 0, function () {
140
- var result, price;
141
- var _a;
142
- return __generator(this, function (_b) {
143
- switch (_b.label) {
144
- case 0: return [4 /*yield*/, (0, dynamicPricingService_1.calculateDynamicPricing)({
145
- currentPricing: (_a = {}, _a[farDate] = basePrice, _a),
146
- dynamicPricing: baseDynamicPricing(),
147
- existingBasePriceMap: {},
148
- company: mockCompany,
149
- roomTypeId: 'roomType1',
150
- companyId: 'comp1',
151
- getRoomTypesAvailability: mockGetRoomTypesAvailability(5, farDate),
152
- getRoomsByCompanyId: mockGetRoomsByCompanyId(10),
153
- })];
154
- case 1:
155
- result = _b.sent();
156
- price = result.updatedPricing[farDate];
157
- expect(price).toBeGreaterThanOrEqual(basePrice);
158
- expect(price).toBeLessThanOrEqual(Math.round(basePrice * 1.4));
159
- return [2 /*return*/];
160
- }
161
- });
162
- }); });
163
- it('maximizes price with 1 room left and date is far', function () { return __awaiter(void 0, void 0, void 0, function () {
164
- var result, price;
165
- var _a;
166
- return __generator(this, function (_b) {
167
- switch (_b.label) {
168
- case 0: return [4 /*yield*/, (0, dynamicPricingService_1.calculateDynamicPricing)({
169
- currentPricing: (_a = {}, _a[farDate] = basePrice, _a),
170
- dynamicPricing: baseDynamicPricing(),
171
- existingBasePriceMap: {},
172
- company: mockCompany,
173
- roomTypeId: 'roomType1',
174
- companyId: 'comp1',
175
- getRoomTypesAvailability: mockGetRoomTypesAvailability(1, farDate),
176
- getRoomsByCompanyId: mockGetRoomsByCompanyId(50),
177
- })];
178
- case 1:
179
- result = _b.sent();
180
- price = result.updatedPricing[farDate];
181
- expect(price).toBeGreaterThanOrEqual(basePrice);
182
- expect(price).toBeLessThanOrEqual(Math.round(basePrice * 1.5));
183
- return [2 /*return*/];
184
- }
185
- });
186
- }); });
187
- it('slightly increases price with 100% availability and date is near', function () { return __awaiter(void 0, void 0, void 0, function () {
188
- var result, price;
189
- var _a;
190
- return __generator(this, function (_b) {
191
- switch (_b.label) {
192
- case 0: return [4 /*yield*/, (0, dynamicPricingService_1.calculateDynamicPricing)({
193
- currentPricing: (_a = {}, _a[nearDate] = basePrice, _a),
194
- dynamicPricing: baseDynamicPricing(),
195
- existingBasePriceMap: {},
196
- company: mockCompany,
197
- roomTypeId: 'roomType1',
198
- companyId: 'comp1',
199
- getRoomTypesAvailability: mockGetRoomTypesAvailability(10, nearDate),
200
- getRoomsByCompanyId: mockGetRoomsByCompanyId(10),
201
- })];
202
- case 1:
203
- result = _b.sent();
204
- price = result.updatedPricing[nearDate];
205
- expect(price).toBeGreaterThanOrEqual(basePrice);
206
- expect(price).toBeLessThanOrEqual(Math.round(133));
207
- return [2 /*return*/];
208
- }
209
- });
210
- }); });
211
- it('strongly increases price with 50% availability and date is near', function () { return __awaiter(void 0, void 0, void 0, function () {
212
- var result, price;
213
- var _a;
214
- return __generator(this, function (_b) {
215
- switch (_b.label) {
216
- case 0: return [4 /*yield*/, (0, dynamicPricingService_1.calculateDynamicPricing)({
217
- currentPricing: (_a = {}, _a[nearDate] = basePrice, _a),
218
- dynamicPricing: baseDynamicPricing(),
219
- existingBasePriceMap: {},
220
- company: mockCompany,
221
- roomTypeId: 'roomType1',
222
- companyId: 'comp1',
223
- getRoomTypesAvailability: mockGetRoomTypesAvailability(5, nearDate),
224
- getRoomsByCompanyId: mockGetRoomsByCompanyId(10),
225
- })];
226
- case 1:
227
- result = _b.sent();
228
- price = result.updatedPricing[nearDate];
229
- expect(price).toBeGreaterThanOrEqual(basePrice);
230
- expect(price).toBeLessThanOrEqual(Math.round(basePrice * 1.4));
231
- return [2 /*return*/];
232
- }
233
- });
234
- }); });
235
- it('reverts to base price when dynamic pricing is turned off', function () { return __awaiter(void 0, void 0, void 0, function () {
236
- var dateStr, result;
237
- var _a, _b;
238
- return __generator(this, function (_c) {
239
- switch (_c.label) {
240
- case 0:
241
- dateStr = today.clone().add(1, 'day').format('YYYY-MM-DD');
242
- return [4 /*yield*/, (0, dynamicPricingService_1.calculateDynamicPricing)({
243
- currentPricing: (_a = {}, _a[dateStr] = 130, _a),
244
- dynamicPricing: baseDynamicPricing({ isActive: false }),
245
- existingBasePriceMap: (_b = {}, _b[dateStr] = 100, _b),
246
- company: {
247
- id: 'comp1',
248
- holidays: [{ date: dateStr, enableDynamicPricing: true }],
249
- },
250
- roomTypeId: 'roomType1',
251
- companyId: 'comp1',
252
- getRoomTypesAvailability: mockGetRoomTypesAvailability(3, dateStr),
253
- getRoomsByCompanyId: mockGetRoomsByCompanyId(10),
254
- })];
255
- case 1:
256
- result = _c.sent();
257
- expect(result.updatedPricing[dateStr]).toBe(100);
258
- return [2 /*return*/];
259
- }
260
- });
261
- }); });
262
- it('does not apply dynamic pricing if holiday has enableDynamicPricing: false', function () { return __awaiter(void 0, void 0, void 0, function () {
263
- var holidayDate, companyWithHoliday, pricing, result;
264
- var _a;
265
- return __generator(this, function (_b) {
266
- switch (_b.label) {
267
- case 0:
268
- holidayDate = today.clone().add(1, 'day').format('YYYY-MM-DD');
269
- companyWithHoliday = {
270
- id: 'comp1',
271
- holidays: [{ date: holidayDate, enableDynamicPricing: false }],
272
- };
273
- pricing = (_a = {},
274
- _a[holidayDate] = 100,
275
- _a);
276
- return [4 /*yield*/, (0, dynamicPricingService_1.calculateDynamicPricing)({
277
- currentPricing: pricing,
278
- dynamicPricing: baseDynamicPricing(),
279
- existingBasePriceMap: {},
280
- company: companyWithHoliday,
281
- roomTypeId: 'roomType1',
282
- companyId: 'comp1',
283
- getRoomTypesAvailability: mockGetRoomTypesAvailability(1, holidayDate),
284
- getRoomsByCompanyId: mockGetRoomsByCompanyId(10),
285
- })];
286
- case 1:
287
- result = _b.sent();
288
- expect(result.updatedPricing[holidayDate]).toBe(100);
289
- return [2 /*return*/];
290
- }
291
- });
292
- }); });
293
- it('only changes pricing for 3 days around enabled holiday', function () { return __awaiter(void 0, void 0, void 0, function () {
294
- var holiday, dayBefore, dayOf, dayAfter, unrelated, pricing, result;
295
- var _a;
296
- return __generator(this, function (_b) {
297
- switch (_b.label) {
298
- case 0:
299
- holiday = today.clone().add(10, 'days');
300
- dayBefore = holiday.clone().subtract(1, 'day').format('YYYY-MM-DD');
301
- dayOf = holiday.format('YYYY-MM-DD');
302
- dayAfter = holiday.clone().add(1, 'day').format('YYYY-MM-DD');
303
- unrelated = today.clone().add(20, 'days').format('YYYY-MM-DD');
304
- pricing = (_a = {},
305
- _a[dayBefore] = 100,
306
- _a[dayOf] = 100,
307
- _a[dayAfter] = 100,
308
- _a[unrelated] = 100,
309
- _a);
310
- return [4 /*yield*/, (0, dynamicPricingService_1.calculateDynamicPricing)({
311
- currentPricing: pricing,
312
- dynamicPricing: baseDynamicPricing(),
313
- existingBasePriceMap: {},
314
- company: {
315
- id: 'comp1',
316
- holidays: [{ date: dayOf, enableDynamicPricing: true }],
317
- },
318
- roomTypeId: 'roomType1',
319
- companyId: 'comp1',
320
- getRoomTypesAvailability: mockGetRoomTypesAvailability(1, dayOf),
321
- getRoomsByCompanyId: mockGetRoomsByCompanyId(10),
322
- })];
323
- case 1:
324
- result = _b.sent();
325
- expect(result.updatedPricing[unrelated]).toBe(100);
326
- expect(result.updatedPricing[dayBefore]).toBeGreaterThan(100);
327
- expect(result.updatedPricing[dayOf]).toBeGreaterThan(100);
328
- expect(result.updatedPricing[dayAfter]).toBeGreaterThan(100);
329
- return [2 /*return*/];
330
- }
331
- });
332
- }); });
333
- });
1
+ // import moment from 'moment'
2
+ // import { calculateDynamicPricing } from '../../dynamicPricingService/dynamicPricingService'
3
+ // import { ICompany, IRoomTypePricePlanPricingInformation, IDynamicPricing, DYNAMIC_PRICING_TYPE } from '../../../interfaces'
4
+ // describe('calculateDynamicPricing', () => {
5
+ // const today = moment().startOf('day')
6
+ // const nearDate = today.clone().add(7, 'days').format('YYYY-MM-DD')
7
+ // const farDate = today.clone().add(60, 'days').format('YYYY-MM-DD')
8
+ // const basePrice = 100
9
+ // const baseDynamicPricing = (overrides: Partial<IDynamicPricing> = {}): IDynamicPricing => ({
10
+ // isActive: true,
11
+ // basePrice: {},
12
+ // startDate: today.format('YYYY-MM-DD'),
13
+ // endDate: farDate,
14
+ // type: DYNAMIC_PRICING_TYPE.INCREASE,
15
+ // amount: 20,
16
+ // ...overrides,
17
+ // })
18
+ // const mockCompany: ICompany = {
19
+ // id: 'comp1',
20
+ // holidays: [],
21
+ // } as any
22
+ // const mockGetRoomTypesAvailability = (available: number, date: string) =>
23
+ // jest.fn().mockResolvedValue({
24
+ // roomType1: {
25
+ // availability: {
26
+ // [date]: available,
27
+ // },
28
+ // },
29
+ // })
30
+ // const mockGetRoomsByCompanyId = (count: number) =>
31
+ // jest.fn().mockResolvedValue({
32
+ // list: Array(count).fill({ roomTypeId: 'roomType1' }),
33
+ // })
34
+ // it('applies holiday dynamic pricing if date is near holiday', async () => {
35
+ // const holidayDate = moment(today).add(1, 'day').format('YYYY-MM-DD')
36
+ // const companyWithHoliday: ICompany = {
37
+ // id: 'comp1',
38
+ // holidays: [{ date: holidayDate, enableDynamicPricing: true }],
39
+ // } as any
40
+ // const pricing: IRoomTypePricePlanPricingInformation = {
41
+ // [holidayDate]: 100,
42
+ // }
43
+ // const result = await calculateDynamicPricing({
44
+ // currentPricing: pricing,
45
+ // dynamicPricing: baseDynamicPricing(),
46
+ // existingBasePriceMap: {},
47
+ // company: companyWithHoliday,
48
+ // roomTypeId: 'roomType1',
49
+ // companyId: 'comp1',
50
+ // getRoomTypesAvailability: mockGetRoomTypesAvailability(1, holidayDate),
51
+ // getRoomsByCompanyId: mockGetRoomsByCompanyId(10),
52
+ // })
53
+ // expect(result.updatedPricing[holidayDate]).toBeGreaterThan(100)
54
+ // })
55
+ // it('keeps price near base when availability is 100% and date is far', async () => {
56
+ // const result = await calculateDynamicPricing({
57
+ // currentPricing: { [farDate]: basePrice },
58
+ // dynamicPricing: baseDynamicPricing(),
59
+ // existingBasePriceMap: {},
60
+ // company: mockCompany,
61
+ // roomTypeId: 'roomType1',
62
+ // companyId: 'comp1',
63
+ // getRoomTypesAvailability: mockGetRoomTypesAvailability(10, farDate),
64
+ // getRoomsByCompanyId: mockGetRoomsByCompanyId(10),
65
+ // })
66
+ // const price = result.updatedPricing[farDate]
67
+ // expect(price).toBeGreaterThanOrEqual(basePrice)
68
+ // expect(price).toBeLessThanOrEqual(Math.round(basePrice * 1.1))
69
+ // })
70
+ // it('increases price moderately with 50% availability and date is far', async () => {
71
+ // const result = await calculateDynamicPricing({
72
+ // currentPricing: { [farDate]: basePrice },
73
+ // dynamicPricing: baseDynamicPricing(),
74
+ // existingBasePriceMap: {},
75
+ // company: mockCompany,
76
+ // roomTypeId: 'roomType1',
77
+ // companyId: 'comp1',
78
+ // getRoomTypesAvailability: mockGetRoomTypesAvailability(5, farDate),
79
+ // getRoomsByCompanyId: mockGetRoomsByCompanyId(10),
80
+ // })
81
+ // const price = result.updatedPricing[farDate]
82
+ // expect(price).toBeGreaterThanOrEqual(basePrice)
83
+ // expect(price).toBeLessThanOrEqual(Math.round(basePrice * 1.4))
84
+ // })
85
+ // it('maximizes price with 1 room left and date is far', async () => {
86
+ // const result = await calculateDynamicPricing({
87
+ // currentPricing: { [farDate]: basePrice },
88
+ // dynamicPricing: baseDynamicPricing(),
89
+ // existingBasePriceMap: {},
90
+ // company: mockCompany,
91
+ // roomTypeId: 'roomType1',
92
+ // companyId: 'comp1',
93
+ // getRoomTypesAvailability: mockGetRoomTypesAvailability(1, farDate),
94
+ // getRoomsByCompanyId: mockGetRoomsByCompanyId(50),
95
+ // })
96
+ // const price = result.updatedPricing[farDate]
97
+ // expect(price).toBeGreaterThanOrEqual(basePrice)
98
+ // expect(price).toBeLessThanOrEqual(Math.round(basePrice * 1.5))
99
+ // })
100
+ // it('slightly increases price with 100% availability and date is near', async () => {
101
+ // const result = await calculateDynamicPricing({
102
+ // currentPricing: { [nearDate]: basePrice },
103
+ // dynamicPricing: baseDynamicPricing(),
104
+ // existingBasePriceMap: {},
105
+ // company: mockCompany,
106
+ // roomTypeId: 'roomType1',
107
+ // companyId: 'comp1',
108
+ // getRoomTypesAvailability: mockGetRoomTypesAvailability(10, nearDate),
109
+ // getRoomsByCompanyId: mockGetRoomsByCompanyId(10),
110
+ // })
111
+ // const price = result.updatedPricing[nearDate]
112
+ // expect(price).toBeGreaterThanOrEqual(basePrice)
113
+ // expect(price).toBeLessThanOrEqual(Math.round(133))
114
+ // })
115
+ // it('strongly increases price with 50% availability and date is near', async () => {
116
+ // const result = await calculateDynamicPricing({
117
+ // currentPricing: { [nearDate]: basePrice },
118
+ // dynamicPricing: baseDynamicPricing(),
119
+ // existingBasePriceMap: {},
120
+ // company: mockCompany,
121
+ // roomTypeId: 'roomType1',
122
+ // companyId: 'comp1',
123
+ // getRoomTypesAvailability: mockGetRoomTypesAvailability(5, nearDate),
124
+ // getRoomsByCompanyId: mockGetRoomsByCompanyId(10),
125
+ // })
126
+ // const price = result.updatedPricing[nearDate]
127
+ // expect(price).toBeGreaterThanOrEqual(basePrice)
128
+ // expect(price).toBeLessThanOrEqual(Math.round(basePrice * 1.4))
129
+ // })
130
+ // it('reverts to base price when dynamic pricing is turned off', async () => {
131
+ // const dateStr = today.clone().add(1, 'day').format('YYYY-MM-DD')
132
+ // const result = await calculateDynamicPricing({
133
+ // currentPricing: { [dateStr]: 130 },
134
+ // dynamicPricing: baseDynamicPricing({ isActive: false }),
135
+ // existingBasePriceMap: { [dateStr]: 100 },
136
+ // company: {
137
+ // id: 'comp1',
138
+ // holidays: [{ date: dateStr, enableDynamicPricing: true }],
139
+ // } as any,
140
+ // roomTypeId: 'roomType1',
141
+ // companyId: 'comp1',
142
+ // getRoomTypesAvailability: mockGetRoomTypesAvailability(3, dateStr),
143
+ // getRoomsByCompanyId: mockGetRoomsByCompanyId(10),
144
+ // })
145
+ // expect(result.updatedPricing[dateStr]).toBe(100)
146
+ // })
147
+ // it('does not apply dynamic pricing if holiday has enableDynamicPricing: false', async () => {
148
+ // const holidayDate = today.clone().add(1, 'day').format('YYYY-MM-DD')
149
+ // const companyWithHoliday: ICompany = {
150
+ // id: 'comp1',
151
+ // holidays: [{ date: holidayDate, enableDynamicPricing: false }],
152
+ // } as any
153
+ // const pricing: IRoomTypePricePlanPricingInformation = {
154
+ // [holidayDate]: 100,
155
+ // }
156
+ // const result = await calculateDynamicPricing({
157
+ // currentPricing: pricing,
158
+ // dynamicPricing: baseDynamicPricing(),
159
+ // existingBasePriceMap: {},
160
+ // company: companyWithHoliday,
161
+ // roomTypeId: 'roomType1',
162
+ // companyId: 'comp1',
163
+ // getRoomTypesAvailability: mockGetRoomTypesAvailability(1, holidayDate),
164
+ // getRoomsByCompanyId: mockGetRoomsByCompanyId(10),
165
+ // })
166
+ // expect(result.updatedPricing[holidayDate]).toBe(100)
167
+ // })
168
+ // it('only changes pricing for 3 days around enabled holiday', async () => {
169
+ // const holiday = today.clone().add(10, 'days')
170
+ // const dayBefore = holiday.clone().subtract(1, 'day').format('YYYY-MM-DD')
171
+ // const dayOf = holiday.format('YYYY-MM-DD')
172
+ // const dayAfter = holiday.clone().add(1, 'day').format('YYYY-MM-DD')
173
+ // const unrelated = today.clone().add(20, 'days').format('YYYY-MM-DD')
174
+ // const pricing: IRoomTypePricePlanPricingInformation = {
175
+ // [dayBefore]: 100,
176
+ // [dayOf]: 100,
177
+ // [dayAfter]: 100,
178
+ // [unrelated]: 100,
179
+ // }
180
+ // const result = await calculateDynamicPricing({
181
+ // currentPricing: pricing,
182
+ // dynamicPricing: baseDynamicPricing(),
183
+ // existingBasePriceMap: {},
184
+ // company: {
185
+ // id: 'comp1',
186
+ // holidays: [{ date: dayOf, enableDynamicPricing: true }],
187
+ // } as any,
188
+ // roomTypeId: 'roomType1',
189
+ // companyId: 'comp1',
190
+ // getRoomTypesAvailability: mockGetRoomTypesAvailability(1, dayOf),
191
+ // getRoomsByCompanyId: mockGetRoomsByCompanyId(10),
192
+ // })
193
+ // expect(result.updatedPricing[unrelated]).toBe(100)
194
+ // expect(result.updatedPricing[dayBefore]).toBeGreaterThan(100)
195
+ // expect(result.updatedPricing[dayOf]).toBeGreaterThan(100)
196
+ // expect(result.updatedPricing[dayAfter]).toBeGreaterThan(100)
197
+ // })
198
+ // })
334
199
  //# sourceMappingURL=bookingService.calculateDynamic.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bookingService.calculateDynamic.test.js","sourceRoot":"","sources":["../../../../src/services/bookingService/__tests__/bookingService.calculateDynamic.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bookingService.calculateDynamic.test.js","sourceRoot":"","sources":["../../../../src/services/bookingService/__tests__/bookingService.calculateDynamic.test.ts"],"names":[],"mappings":"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"}
@@ -16,3 +16,7 @@ export declare const calculateDynamicPricing: ({ currentPricing, dynamicPricing,
16
16
  updatedPricing: IRoomTypePricePlanPricingInformation;
17
17
  updatedBasePriceMap: Record<string, number>;
18
18
  }>;
19
+ export declare const getDynamicMultiplier: ({ availabilityRatio, isNearFuture, }: {
20
+ availabilityRatio: number;
21
+ isNearFuture: boolean;
22
+ }) => number;
@@ -50,80 +50,87 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
50
50
  return (mod && mod.__esModule) ? mod : { "default": mod };
51
51
  };
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
- exports.calculateDynamicPricing = void 0;
53
+ exports.getDynamicMultiplier = exports.calculateDynamicPricing = void 0;
54
54
  var moment_1 = __importDefault(require("moment"));
55
55
  var dateService_1 = require("../dateService/dateService");
56
56
  var calculateDynamicPricing = function (_a) { return __awaiter(void 0, [_a], void 0, function (_b) {
57
- var basePriceMap, resultPricing, dynamicHolidays, affectedDates, _i, dynamicHolidays_1, holiday, date, finalDates, _c, finalDates_1, dateStr, revertedPricing, _d, finalDates_2, dateStr, _e, availabilityResult, roomsResult, totalRooms, roomAvailabilityMap, _f, finalDates_3, dateStr, basePrice, date, price, availableRooms, occupancy, isNearDate;
58
- var _g, _h;
57
+ var basePriceMap, resultPricing, period, _c, roomTypesAvailability, roomsData, roomTypeAvailability, totalRooms, holidayDateSet, today, _i, period_1, dateStr, date, current, base, availableRooms, availabilityRatio, leadTimeDays, isNearHoliday, isNearFuture, isAffectedHoliday, baseForToday, occupancyMultiplier, leadTimeMultiplier, rawPrice, cappedPrice, expected;
58
+ var _d, _e, _f, _g, _h;
59
59
  var currentPricing = _b.currentPricing, dynamicPricing = _b.dynamicPricing, existingBasePriceMap = _b.existingBasePriceMap, company = _b.company, roomTypeId = _b.roomTypeId, companyId = _b.companyId, getRoomTypesAvailability = _b.getRoomTypesAvailability, getRoomsByCompanyId = _b.getRoomsByCompanyId;
60
60
  return __generator(this, function (_j) {
61
61
  switch (_j.label) {
62
62
  case 0:
63
- basePriceMap = __assign({}, existingBasePriceMap);
63
+ basePriceMap = __assign(__assign({}, dynamicPricing.basePrice), existingBasePriceMap);
64
64
  resultPricing = {};
65
- dynamicHolidays = (company.holidays || []).filter(function (h) { return h.enableDynamicPricing; });
66
- affectedDates = new Set();
67
- for (_i = 0, dynamicHolidays_1 = dynamicHolidays; _i < dynamicHolidays_1.length; _i++) {
68
- holiday = dynamicHolidays_1[_i];
69
- date = (0, moment_1.default)(holiday.date).startOf('day');
70
- affectedDates.add(date.clone().subtract(1, 'day').format('YYYY-MM-DD'));
71
- affectedDates.add(date.format('YYYY-MM-DD'));
72
- affectedDates.add(date.clone().add(1, 'day').format('YYYY-MM-DD'));
73
- }
74
- finalDates = Array.from(affectedDates).filter(function (date) { return date in currentPricing; });
75
- for (_c = 0, finalDates_1 = finalDates; _c < finalDates_1.length; _c++) {
76
- dateStr = finalDates_1[_c];
77
- if (!(dateStr in basePriceMap)) {
78
- basePriceMap[dateStr] = currentPricing[dateStr];
79
- }
80
- }
81
- if (!dynamicPricing.isActive) {
82
- revertedPricing = __assign({}, currentPricing);
83
- for (_d = 0, finalDates_2 = finalDates; _d < finalDates_2.length; _d++) {
84
- dateStr = finalDates_2[_d];
85
- revertedPricing[dateStr] = basePriceMap[dateStr];
86
- }
87
- return [2 /*return*/, {
88
- updatedPricing: revertedPricing,
89
- updatedBasePriceMap: basePriceMap,
90
- }];
91
- }
65
+ period = Object.keys(currentPricing);
92
66
  return [4 /*yield*/, Promise.all([
93
- getRoomTypesAvailability(companyId, [roomTypeId], { period: finalDates }),
67
+ getRoomTypesAvailability(companyId, [roomTypeId], { period: period }),
94
68
  getRoomsByCompanyId(companyId),
95
69
  ])];
96
70
  case 1:
97
- _e = _j.sent(), availabilityResult = _e[0], roomsResult = _e[1];
98
- totalRooms = roomsResult.list.filter(function (r) { return r.roomTypeId === roomTypeId; }).length;
99
- roomAvailabilityMap = ((_g = availabilityResult === null || availabilityResult === void 0 ? void 0 : availabilityResult[roomTypeId]) === null || _g === void 0 ? void 0 : _g.availability) || {};
100
- for (_f = 0, finalDates_3 = finalDates; _f < finalDates_3.length; _f++) {
101
- dateStr = finalDates_3[_f];
102
- basePrice = basePriceMap[dateStr];
71
+ _c = _j.sent(), roomTypesAvailability = _c[0], roomsData = _c[1];
72
+ roomTypeAvailability = (_e = (_d = roomTypesAvailability === null || roomTypesAvailability === void 0 ? void 0 : roomTypesAvailability[roomTypeId]) === null || _d === void 0 ? void 0 : _d.availability) !== null && _e !== void 0 ? _e : {};
73
+ totalRooms = ((_f = roomsData === null || roomsData === void 0 ? void 0 : roomsData.list) === null || _f === void 0 ? void 0 : _f.filter(function (r) { return (r === null || r === void 0 ? void 0 : r.roomTypeId) === roomTypeId; }).length) || 1;
74
+ holidayDateSet = new Set((company.holidays || [])
75
+ .filter(function (h) { return h.enableDynamicPricing; })
76
+ .flatMap(function (h) { return [
77
+ (0, moment_1.default)(h.date).subtract(1, 'day').format('YYYY-MM-DD'),
78
+ (0, moment_1.default)(h.date).format('YYYY-MM-DD'),
79
+ (0, moment_1.default)(h.date).add(1, 'day').format('YYYY-MM-DD'),
80
+ ]; }));
81
+ today = (0, moment_1.default)();
82
+ for (_i = 0, period_1 = period; _i < period_1.length; _i++) {
83
+ dateStr = period_1[_i];
103
84
  date = (0, moment_1.default)((0, dateService_1.normalizeDate)(dateStr));
104
85
  if (!date.isValid())
105
86
  continue;
106
- price = basePrice;
107
- availableRooms = (_h = roomAvailabilityMap[dateStr]) !== null && _h !== void 0 ? _h : totalRooms;
108
- occupancy = totalRooms > 0 ? 1 - availableRooms / totalRooms : 0;
109
- if (occupancy >= 0.95)
110
- price += Math.round(basePrice * 0.5);
111
- else if (occupancy >= 0.7)
112
- price += Math.round(basePrice * 0.3);
113
- else if (occupancy >= 0.4)
114
- price += Math.round(basePrice * 0.15);
115
- isNearDate = date.diff((0, moment_1.default)(), 'days') <= 14;
116
- if (isNearDate)
117
- price += Math.round(basePrice * 0.1);
118
- price = Math.min(price, basePrice + 70);
119
- resultPricing[dateStr] = Math.round(price);
87
+ current = currentPricing[dateStr];
88
+ base = (_g = basePriceMap[dateStr]) !== null && _g !== void 0 ? _g : current;
89
+ availableRooms = (_h = roomTypeAvailability[dateStr]) !== null && _h !== void 0 ? _h : 0;
90
+ availabilityRatio = availableRooms / totalRooms;
91
+ leadTimeDays = date.diff(today, 'days');
92
+ isNearHoliday = leadTimeDays <= 7;
93
+ isNearFuture = leadTimeDays < 30;
94
+ isAffectedHoliday = holidayDateSet.has(dateStr);
95
+ if (isAffectedHoliday) {
96
+ if (!(dateStr in basePriceMap)) {
97
+ basePriceMap[dateStr] = base;
98
+ }
99
+ baseForToday = basePriceMap[dateStr];
100
+ occupancyMultiplier = (0, exports.getDynamicMultiplier)({ availabilityRatio: availabilityRatio, isNearFuture: isNearFuture });
101
+ leadTimeMultiplier = leadTimeDays >= 60 ? 1.0 : 1 + (60 - leadTimeDays) * 0.005;
102
+ rawPrice = baseForToday * occupancyMultiplier * leadTimeMultiplier;
103
+ cappedPrice = isNearHoliday && availableRooms <= 1
104
+ ? Math.min(rawPrice, baseForToday + 70)
105
+ : Math.min(rawPrice, baseForToday * 1.45);
106
+ resultPricing[dateStr] = Math.round(cappedPrice);
107
+ }
108
+ else if (!dynamicPricing.isActive && base !== undefined) {
109
+ resultPricing[dateStr] = base;
110
+ }
111
+ else {
112
+ expected = base ? Math.round(base * (0, exports.getDynamicMultiplier)({ availabilityRatio: availabilityRatio, isNearFuture: isNearFuture })) : current;
113
+ resultPricing[dateStr] =
114
+ current === expected || current === Math.round((base !== null && base !== void 0 ? base : 0) * 1.2) ? (base !== null && base !== void 0 ? base : current) : current;
115
+ }
120
116
  }
121
117
  return [2 /*return*/, {
122
- updatedPricing: __assign(__assign({}, currentPricing), resultPricing),
118
+ updatedPricing: resultPricing,
123
119
  updatedBasePriceMap: basePriceMap,
124
120
  }];
125
121
  }
126
122
  });
127
123
  }); };
128
124
  exports.calculateDynamicPricing = calculateDynamicPricing;
125
+ var getDynamicMultiplier = function (_a) {
126
+ var availabilityRatio = _a.availabilityRatio, isNearFuture = _a.isNearFuture;
127
+ if (availabilityRatio <= 0.02)
128
+ return isNearFuture ? 1.5 : 1.4;
129
+ if (availabilityRatio <= 0.5)
130
+ return isNearFuture ? 1.4 : 1.2;
131
+ if (availabilityRatio < 1)
132
+ return isNearFuture ? 1.2 : 1.05;
133
+ return isNearFuture ? 1.1 : 1.0;
134
+ };
135
+ exports.getDynamicMultiplier = getDynamicMultiplier;
129
136
  //# sourceMappingURL=dynamicPricingService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamicPricingService.js","sourceRoot":"","sources":["../../../src/services/dynamicPricingService/dynamicPricingService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dynamicPricingService.js","sourceRoot":"","sources":["../../../src/services/dynamicPricingService/dynamicPricingService.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyper.software/common-helpers",
3
- "version": "2.2.57",
3
+ "version": "2.2.58",
4
4
  "author": "Raul Tomescu <tomescu.raul+hyper@gmail.com>",
5
5
  "description": "Hyper Software Common Javascript Helpers",
6
6
  "main": "lib/index.js",