@tellescope/sdk 1.255.8 → 1.255.10
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.
- package/lib/cjs/enduser.d.ts +1 -0
- package/lib/cjs/enduser.d.ts.map +1 -1
- package/lib/cjs/sdk.d.ts +3 -2
- package/lib/cjs/sdk.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/calendar_event_limits.test.js +1 -1
- package/lib/cjs/tests/api_tests/calendar_event_limits.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/dont_sync_to_elation_form_submission.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/dont_sync_to_elation_form_submission.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/dont_sync_to_elation_form_submission.test.js +166 -0
- package/lib/cjs/tests/api_tests/dont_sync_to_elation_form_submission.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/enduser_cross_access_isolation.test.js +8 -8
- package/lib/cjs/tests/api_tests/enduser_cross_access_isolation.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/nutrition_tracking.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/nutrition_tracking.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/nutrition_tracking.test.js +483 -0
- package/lib/cjs/tests/api_tests/nutrition_tracking.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/webhook_error_handling.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/webhook_error_handling.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/webhook_error_handling.test.js +324 -0
- package/lib/cjs/tests/api_tests/webhook_error_handling.test.js.map +1 -0
- package/lib/cjs/tests/setup.d.ts +11 -1
- package/lib/cjs/tests/setup.d.ts.map +1 -1
- package/lib/cjs/tests/setup.js +19 -1
- package/lib/cjs/tests/setup.js.map +1 -1
- package/lib/cjs/tests/tests.d.ts.map +1 -1
- package/lib/cjs/tests/tests.js +207 -192
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/esm/sdk.d.ts +2 -2
- package/lib/esm/tests/api_tests/calendar_event_limits.test.js +2 -2
- package/lib/esm/tests/api_tests/calendar_event_limits.test.js.map +1 -1
- package/lib/esm/tests/api_tests/custom_dashboards.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/custom_dashboards.test.js +259 -33
- package/lib/esm/tests/api_tests/custom_dashboards.test.js.map +1 -1
- package/lib/esm/tests/api_tests/dont_sync_to_elation_form_submission.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/dont_sync_to_elation_form_submission.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/dont_sync_to_elation_form_submission.test.js +162 -0
- package/lib/esm/tests/api_tests/dont_sync_to_elation_form_submission.test.js.map +1 -0
- package/lib/esm/tests/api_tests/enduser_cross_access_isolation.test.js +9 -9
- package/lib/esm/tests/api_tests/enduser_cross_access_isolation.test.js.map +1 -1
- package/lib/esm/tests/api_tests/medication_added_trigger.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/medication_added_trigger.test.js +206 -136
- package/lib/esm/tests/api_tests/medication_added_trigger.test.js.map +1 -1
- package/lib/esm/tests/api_tests/nutrition_tracking.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/nutrition_tracking.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/nutrition_tracking.test.js +479 -0
- package/lib/esm/tests/api_tests/nutrition_tracking.test.js.map +1 -0
- package/lib/esm/tests/api_tests/security/F-0005-ai-conversations-rbac.test.d.ts +10 -0
- package/lib/esm/tests/api_tests/security/F-0005-ai-conversations-rbac.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/F-0005-ai-conversations-rbac.test.js +184 -41
- package/lib/esm/tests/api_tests/security/F-0005-ai-conversations-rbac.test.js.map +1 -1
- package/lib/esm/tests/api_tests/webhook_error_handling.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/webhook_error_handling.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/webhook_error_handling.test.js +317 -0
- package/lib/esm/tests/api_tests/webhook_error_handling.test.js.map +1 -0
- package/lib/esm/tests/setup.d.ts +11 -1
- package/lib/esm/tests/setup.d.ts.map +1 -1
- package/lib/esm/tests/setup.js +17 -0
- package/lib/esm/tests/setup.js.map +1 -1
- package/lib/esm/tests/tests.d.ts.map +1 -1
- package/lib/esm/tests/tests.js +233 -206
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
- package/src/tests/api_tests/calendar_event_limits.test.ts +2 -2
- package/src/tests/api_tests/dont_sync_to_elation_form_submission.test.ts +91 -0
- package/src/tests/api_tests/enduser_cross_access_isolation.test.ts +6 -6
- package/src/tests/api_tests/nutrition_tracking.test.ts +425 -0
- package/src/tests/api_tests/webhook_error_handling.test.ts +190 -0
- package/src/tests/setup.ts +13 -0
- package/src/tests/tests.ts +29 -18
- package/test_generated.pdf +0 -0
|
@@ -0,0 +1,483 @@
|
|
|
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;
|
|
24
|
+
return g = { next: verb(0), "throw": verb(1), "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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
exports.nutrition_tracking_tests = void 0;
|
|
51
|
+
require('source-map-support').install();
|
|
52
|
+
var sdk_1 = require("../../sdk");
|
|
53
|
+
var testing_1 = require("@tellescope/testing");
|
|
54
|
+
var setup_1 = require("../setup");
|
|
55
|
+
var host = process.env.API_URL || 'http://localhost:8080';
|
|
56
|
+
var businessId = '60398b1131a295e64f084ff6';
|
|
57
|
+
var ENDUSER_PASSWORD = 'NutritionTestPassword!123';
|
|
58
|
+
var NUTRITION_TARGETS = {
|
|
59
|
+
dailyCalorieTarget: 2200,
|
|
60
|
+
dailyProteinTarget: 150,
|
|
61
|
+
dailyCarbTarget: 250,
|
|
62
|
+
dailyFatTarget: 70,
|
|
63
|
+
dailyFiberTarget: 30,
|
|
64
|
+
dailyWaterTarget: 2500,
|
|
65
|
+
};
|
|
66
|
+
var MACRO_COMPONENTS = [
|
|
67
|
+
{ code: { text: 'Calories' }, valueQuantity: { value: 450, unit: 'kcal' } },
|
|
68
|
+
{ code: { text: 'Protein' }, valueQuantity: { value: 42, unit: 'g' } },
|
|
69
|
+
{ code: { text: 'Carbohydrates' }, valueQuantity: { value: 30, unit: 'g' } },
|
|
70
|
+
{ code: { text: 'Fat' }, valueQuantity: { value: 18, unit: 'g' } },
|
|
71
|
+
{
|
|
72
|
+
code: {
|
|
73
|
+
text: 'Cheddar cheese',
|
|
74
|
+
coding: [{ system: 'https://fdc.nal.usda.gov', code: '328637', display: 'Cheese, cheddar' }],
|
|
75
|
+
},
|
|
76
|
+
valueQuantity: { value: 100, unit: 'g' },
|
|
77
|
+
},
|
|
78
|
+
];
|
|
79
|
+
var USDA_NOT_CONFIGURED_MESSAGE = 'USDA food search is not configured';
|
|
80
|
+
// contract shape returned by the USDA proxy — nothing else may leak through
|
|
81
|
+
var EXPECTED_FOOD_KEYS = ['fdcId', 'description', 'calories', 'protein', 'carbs', 'fat', 'fiber'];
|
|
82
|
+
var MACRO_KEYS = ['calories', 'protein', 'carbs', 'fat', 'fiber'];
|
|
83
|
+
var is_valid_food_summary = function (f) { return (typeof (f === null || f === void 0 ? void 0 : f.fdcId) === 'number' && Number.isInteger(f.fdcId) && f.fdcId > 0
|
|
84
|
+
&& typeof (f === null || f === void 0 ? void 0 : f.description) === 'string' && f.description.length > 0
|
|
85
|
+
&& Object.keys(f).every(function (k) { return EXPECTED_FOOD_KEYS.includes(k); })
|
|
86
|
+
&& MACRO_KEYS.every(function (m) { return f[m] === undefined || (typeof f[m] === 'number' && isFinite(f[m]) && f[m] >= 0); })); };
|
|
87
|
+
// values are per 100g: grams of a macro can't exceed 100, energy tops out near pure fat (~900 kcal)
|
|
88
|
+
var is_plausible_per_100g = function (f) { return ((f.calories === undefined || f.calories <= 950)
|
|
89
|
+
&& ['protein', 'carbs', 'fat', 'fiber'].every(function (m) { return f[m] === undefined || f[m] <= 100; })); };
|
|
90
|
+
// same food fetched via different USDA response shapes should yield the same numbers
|
|
91
|
+
var approx_equal = function (a, b) { return ((a === undefined && b === undefined)
|
|
92
|
+
|| (typeof a === 'number' && typeof b === 'number' && Math.abs(a - b) <= Math.max(1, 0.1 * Math.max(a, b)))); };
|
|
93
|
+
var usda_proxy_tests = function (_a) {
|
|
94
|
+
var sdk = _a.sdk, enduserSDK = _a.enduserSDK;
|
|
95
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
96
|
+
var searchResult, err_1, firstFood, fullFatCheddar;
|
|
97
|
+
var _b, _c;
|
|
98
|
+
return __generator(this, function (_d) {
|
|
99
|
+
switch (_d.label) {
|
|
100
|
+
case 0:
|
|
101
|
+
(0, testing_1.log_header)("USDA Food Search Proxy");
|
|
102
|
+
_d.label = 1;
|
|
103
|
+
case 1:
|
|
104
|
+
_d.trys.push([1, 3, , 4]);
|
|
105
|
+
return [4 /*yield*/, enduserSDK.api.integrations.proxy_read({
|
|
106
|
+
integration: 'USDA',
|
|
107
|
+
type: 'search',
|
|
108
|
+
query: JSON.stringify({ keywords: 'cheddar cheese' }),
|
|
109
|
+
})];
|
|
110
|
+
case 2:
|
|
111
|
+
searchResult = _d.sent();
|
|
112
|
+
return [3 /*break*/, 4];
|
|
113
|
+
case 3:
|
|
114
|
+
err_1 = _d.sent();
|
|
115
|
+
if ((_c = (_b = err_1 === null || err_1 === void 0 ? void 0 : err_1.message) === null || _b === void 0 ? void 0 : _b.includes) === null || _c === void 0 ? void 0 : _c.call(_b, USDA_NOT_CONFIGURED_MESSAGE)) {
|
|
116
|
+
console.log("⏭️ Skipping USDA proxy tests (no { type: 'usda' } zz_secrets doc configured)");
|
|
117
|
+
return [2 /*return*/];
|
|
118
|
+
}
|
|
119
|
+
throw err_1;
|
|
120
|
+
case 4: return [4 /*yield*/, (0, testing_1.async_test)('USDA search (enduser): non-empty foods with fdcId/description, totalHits > 0', function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
121
|
+
return [2 /*return*/, searchResult];
|
|
122
|
+
}); }); }, { onResult: function (r) {
|
|
123
|
+
var _a;
|
|
124
|
+
return (Array.isArray((_a = r === null || r === void 0 ? void 0 : r.data) === null || _a === void 0 ? void 0 : _a.foods)
|
|
125
|
+
&& r.data.foods.length > 0
|
|
126
|
+
&& r.data.foods.every(function (f) { return typeof f.fdcId === 'number' && typeof f.description === 'string'; })
|
|
127
|
+
&& r.data.foods.every(function (f) { return ['calories', 'protein', 'carbs', 'fat', 'fiber'].every(function (macro) { return f[macro] === undefined || typeof f[macro] === 'number'; }); })
|
|
128
|
+
&& r.data.totalHits > 0);
|
|
129
|
+
} })];
|
|
130
|
+
case 5:
|
|
131
|
+
_d.sent();
|
|
132
|
+
firstFood = searchResult.data.foods[0];
|
|
133
|
+
return [4 /*yield*/, (0, testing_1.async_test)('USDA food detail (enduser): matching single food by fdcId', function () { return enduserSDK.api.integrations.proxy_read({
|
|
134
|
+
integration: 'USDA',
|
|
135
|
+
type: 'food',
|
|
136
|
+
id: String(firstFood.fdcId),
|
|
137
|
+
}); }, { onResult: function (r) {
|
|
138
|
+
var _a;
|
|
139
|
+
return (((_a = r === null || r === void 0 ? void 0 : r.data) === null || _a === void 0 ? void 0 : _a.fdcId) === firstFood.fdcId
|
|
140
|
+
&& typeof r.data.description === 'string');
|
|
141
|
+
} })];
|
|
142
|
+
case 6:
|
|
143
|
+
_d.sent();
|
|
144
|
+
return [4 /*yield*/, (0, testing_1.async_test)('USDA search (staff session) also succeeds', function () { return sdk.api.integrations.proxy_read({
|
|
145
|
+
integration: 'USDA',
|
|
146
|
+
type: 'search',
|
|
147
|
+
query: JSON.stringify({ keywords: 'cheddar cheese' }),
|
|
148
|
+
}); }, { onResult: function (r) { var _a; return Array.isArray((_a = r === null || r === void 0 ? void 0 : r.data) === null || _a === void 0 ? void 0 : _a.foods) && r.data.foods.length > 0; } })];
|
|
149
|
+
case 7:
|
|
150
|
+
_d.sent();
|
|
151
|
+
return [4 /*yield*/, (0, testing_1.async_test)('USDA search: missing keywords rejected', function () { return enduserSDK.api.integrations.proxy_read({
|
|
152
|
+
integration: 'USDA',
|
|
153
|
+
type: 'search',
|
|
154
|
+
query: JSON.stringify({}),
|
|
155
|
+
}); }, { shouldError: true, onError: function () { return true; } })];
|
|
156
|
+
case 8:
|
|
157
|
+
_d.sent();
|
|
158
|
+
return [4 /*yield*/, (0, testing_1.async_test)('USDA search: 1-char keywords rejected', function () { return enduserSDK.api.integrations.proxy_read({
|
|
159
|
+
integration: 'USDA',
|
|
160
|
+
type: 'search',
|
|
161
|
+
query: JSON.stringify({ keywords: 'c' }),
|
|
162
|
+
}); }, { shouldError: true, onError: function () { return true; } })
|
|
163
|
+
// ---- rigorous output-format validation ----
|
|
164
|
+
];
|
|
165
|
+
case 9:
|
|
166
|
+
_d.sent();
|
|
167
|
+
// ---- rigorous output-format validation ----
|
|
168
|
+
return [4 /*yield*/, (0, testing_1.async_test)('USDA format: every search result matches the contract shape exactly (no extra fields)', function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
169
|
+
return [2 /*return*/, searchResult];
|
|
170
|
+
}); }); }, { onResult: function (r) { return r.data.foods.every(function (f) { return is_valid_food_summary(f) && is_plausible_per_100g(f); }); } })];
|
|
171
|
+
case 10:
|
|
172
|
+
// ---- rigorous output-format validation ----
|
|
173
|
+
_d.sent();
|
|
174
|
+
return [4 /*yield*/, (0, testing_1.async_test)('USDA format: no api_key or raw USDA payload fields leak into the response', function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
175
|
+
return [2 /*return*/, searchResult];
|
|
176
|
+
}); }); }, { onResult: function (r) {
|
|
177
|
+
var serialized = JSON.stringify(r.data);
|
|
178
|
+
return !serialized.includes('api_key') && !serialized.includes('foodNutrients') && !serialized.includes('nutrientNumber');
|
|
179
|
+
} })
|
|
180
|
+
// extraction must actually populate macros across the result set (catches a broken
|
|
181
|
+
// nutrient-number mapping, which the undefined-tolerant shape checks above would miss)
|
|
182
|
+
];
|
|
183
|
+
case 11:
|
|
184
|
+
_d.sent();
|
|
185
|
+
// extraction must actually populate macros across the result set (catches a broken
|
|
186
|
+
// nutrient-number mapping, which the undefined-tolerant shape checks above would miss)
|
|
187
|
+
return [4 /*yield*/, (0, testing_1.async_test)('USDA format: macro extraction populated for nearly all results', function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
188
|
+
return [2 /*return*/, searchResult];
|
|
189
|
+
}); }); }, { onResult: function (r) {
|
|
190
|
+
var foods = r.data.foods;
|
|
191
|
+
var fullyPopulated = foods.filter(function (f) { return MACRO_KEYS.every(function (m) { return typeof f[m] === 'number'; }); });
|
|
192
|
+
return foods.length > 0 && fullyPopulated.length >= foods.length * 0.8;
|
|
193
|
+
} })
|
|
194
|
+
// at least one result must match full-fat cheddar's real per-100g profile
|
|
195
|
+
// (search includes reduced-fat branded variants, so assert existence rather than checking an arbitrary pick)
|
|
196
|
+
];
|
|
197
|
+
case 12:
|
|
198
|
+
// extraction must actually populate macros across the result set (catches a broken
|
|
199
|
+
// nutrient-number mapping, which the undefined-tolerant shape checks above would miss)
|
|
200
|
+
_d.sent();
|
|
201
|
+
fullFatCheddar = searchResult.data.foods.find(function (f) {
|
|
202
|
+
var _a;
|
|
203
|
+
return (((_a = f.description) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes('cheddar'))
|
|
204
|
+
&& f.calories >= 300 && f.calories <= 500
|
|
205
|
+
&& f.protein >= 15 && f.protein <= 35
|
|
206
|
+
&& f.fat >= 25 && f.fat <= 45
|
|
207
|
+
&& f.carbs >= 0 && f.carbs <= 15
|
|
208
|
+
&& (f.fiber === undefined || (f.fiber >= 0 && f.fiber <= 5)));
|
|
209
|
+
});
|
|
210
|
+
return [4 /*yield*/, (0, testing_1.async_test)('USDA format: a result matches full-fat cheddar\'s realistic per-100g values', function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
211
|
+
return [2 /*return*/, fullFatCheddar];
|
|
212
|
+
}); }); }, { onResult: function (f) { return !!f; } })];
|
|
213
|
+
case 13:
|
|
214
|
+
_d.sent();
|
|
215
|
+
return [4 /*yield*/, (0, testing_1.async_test)('USDA format: food detail (abridged shape) yields same values as search (search shape) for same fdcId', function () { return enduserSDK.api.integrations.proxy_read({
|
|
216
|
+
integration: 'USDA',
|
|
217
|
+
type: 'food',
|
|
218
|
+
id: String(fullFatCheddar === null || fullFatCheddar === void 0 ? void 0 : fullFatCheddar.fdcId),
|
|
219
|
+
}); }, { onResult: function (r) { return (is_valid_food_summary(r === null || r === void 0 ? void 0 : r.data)
|
|
220
|
+
&& r.data.fdcId === (fullFatCheddar === null || fullFatCheddar === void 0 ? void 0 : fullFatCheddar.fdcId)
|
|
221
|
+
&& MACRO_KEYS.every(function (m) { return approx_equal(r.data[m], fullFatCheddar === null || fullFatCheddar === void 0 ? void 0 : fullFatCheddar[m]); })); } })];
|
|
222
|
+
case 14:
|
|
223
|
+
_d.sent();
|
|
224
|
+
return [4 /*yield*/, (0, testing_1.async_test)('USDA format: pageSize honored (5 -> exactly 5 valid foods)', function () { return enduserSDK.api.integrations.proxy_read({
|
|
225
|
+
integration: 'USDA',
|
|
226
|
+
type: 'search',
|
|
227
|
+
query: JSON.stringify({ keywords: 'apple', pageSize: 5 }),
|
|
228
|
+
}); }, { onResult: function (r) {
|
|
229
|
+
var _a, _b;
|
|
230
|
+
return (((_b = (_a = r === null || r === void 0 ? void 0 : r.data) === null || _a === void 0 ? void 0 : _a.foods) === null || _b === void 0 ? void 0 : _b.length) === 5
|
|
231
|
+
&& r.data.totalHits >= 5
|
|
232
|
+
&& r.data.foods.every(function (f) { return is_valid_food_summary(f) && is_plausible_per_100g(f); }));
|
|
233
|
+
} })];
|
|
234
|
+
case 15:
|
|
235
|
+
_d.sent();
|
|
236
|
+
return [4 /*yield*/, (0, testing_1.async_test)('USDA format: oversized pageSize clamped to at most 50', function () { return enduserSDK.api.integrations.proxy_read({
|
|
237
|
+
integration: 'USDA',
|
|
238
|
+
type: 'search',
|
|
239
|
+
query: JSON.stringify({ keywords: 'banana', pageSize: 10000 }),
|
|
240
|
+
}); }, { onResult: function (r) { var _a, _b; return ((_b = (_a = r === null || r === void 0 ? void 0 : r.data) === null || _a === void 0 ? void 0 : _a.foods) === null || _b === void 0 ? void 0 : _b.length) > 0 && r.data.foods.length <= 50; } })];
|
|
241
|
+
case 16:
|
|
242
|
+
_d.sent();
|
|
243
|
+
return [4 /*yield*/, (0, testing_1.async_test)('USDA format: non-numeric food id rejected', function () { return enduserSDK.api.integrations.proxy_read({
|
|
244
|
+
integration: 'USDA',
|
|
245
|
+
type: 'food',
|
|
246
|
+
id: '../foods/search',
|
|
247
|
+
}); }, { shouldError: true, onError: function () { return true; } })];
|
|
248
|
+
case 17:
|
|
249
|
+
_d.sent();
|
|
250
|
+
return [2 /*return*/];
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
});
|
|
254
|
+
};
|
|
255
|
+
var nutrition_tracking_tests = function (_a) {
|
|
256
|
+
var sdk = _a.sdk;
|
|
257
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
258
|
+
var enduserAId, enduserBId, ts, enduserAEmail, enduserBEmail, enduserA_1, enduserB, enduserSDK_1, enduserSDKB_1, withComponents_1, withoutComponents_1, staffCreated_1, enduserACreated_1, _b, _c;
|
|
259
|
+
return __generator(this, function (_d) {
|
|
260
|
+
switch (_d.label) {
|
|
261
|
+
case 0:
|
|
262
|
+
(0, testing_1.log_header)("Nutrition Tracking (weight & macro backend support)");
|
|
263
|
+
_d.label = 1;
|
|
264
|
+
case 1:
|
|
265
|
+
_d.trys.push([1, , 30, 39]);
|
|
266
|
+
ts = Date.now();
|
|
267
|
+
enduserAEmail = "nutrition-a-".concat(ts, "@test.tellescope.com");
|
|
268
|
+
enduserBEmail = "nutrition-b-".concat(ts, "@test.tellescope.com");
|
|
269
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({ email: enduserAEmail, fname: 'Nutrition', lname: 'TesterA' })];
|
|
270
|
+
case 2:
|
|
271
|
+
enduserA_1 = _d.sent();
|
|
272
|
+
enduserAId = enduserA_1.id;
|
|
273
|
+
return [4 /*yield*/, sdk.api.endusers.set_password({ id: enduserA_1.id, password: ENDUSER_PASSWORD })];
|
|
274
|
+
case 3:
|
|
275
|
+
_d.sent();
|
|
276
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({ email: enduserBEmail, fname: 'Nutrition', lname: 'TesterB' })];
|
|
277
|
+
case 4:
|
|
278
|
+
enduserB = _d.sent();
|
|
279
|
+
enduserBId = enduserB.id;
|
|
280
|
+
return [4 /*yield*/, sdk.api.endusers.set_password({ id: enduserB.id, password: ENDUSER_PASSWORD })];
|
|
281
|
+
case 5:
|
|
282
|
+
_d.sent();
|
|
283
|
+
enduserSDK_1 = new sdk_1.EnduserSession({ host: host, businessId: businessId });
|
|
284
|
+
return [4 /*yield*/, (0, setup_1.authenticate_enduser_via_token)(sdk, enduserSDK_1, { email: enduserAEmail })];
|
|
285
|
+
case 6:
|
|
286
|
+
_d.sent();
|
|
287
|
+
enduserSDKB_1 = new sdk_1.EnduserSession({ host: host, businessId: businessId });
|
|
288
|
+
return [4 /*yield*/, (0, setup_1.authenticate_enduser_via_token)(sdk, enduserSDKB_1, { email: enduserBEmail })
|
|
289
|
+
// ---- Requirement 3: daily nutrition targets (enduser-readable and -writable) ----
|
|
290
|
+
];
|
|
291
|
+
case 7:
|
|
292
|
+
_d.sent();
|
|
293
|
+
// ---- Requirement 3: daily nutrition targets (enduser-readable and -writable) ----
|
|
294
|
+
return [4 /*yield*/, (0, testing_1.async_test)('targets: enduser sets all six daily nutrition targets on own record', function () { return enduserSDK_1.api.endusers.updateOne(enduserA_1.id, __assign({}, NUTRITION_TARGETS)); }, { onResult: function (e) { return Object.entries(NUTRITION_TARGETS).every(function (_a) {
|
|
295
|
+
var field = _a[0], value = _a[1];
|
|
296
|
+
return e[field] === value;
|
|
297
|
+
}); } })];
|
|
298
|
+
case 8:
|
|
299
|
+
// ---- Requirement 3: daily nutrition targets (enduser-readable and -writable) ----
|
|
300
|
+
_d.sent();
|
|
301
|
+
return [4 /*yield*/, (0, testing_1.async_test)('targets: enduser reads all six targets back (no redaction)', function () { return enduserSDK_1.api.endusers.getOne(enduserA_1.id); }, { onResult: function (e) { return Object.entries(NUTRITION_TARGETS).every(function (_a) {
|
|
302
|
+
var field = _a[0], value = _a[1];
|
|
303
|
+
return e[field] === value;
|
|
304
|
+
}); } })];
|
|
305
|
+
case 9:
|
|
306
|
+
_d.sent();
|
|
307
|
+
return [4 /*yield*/, (0, testing_1.async_test)('targets: staff can read targets', function () { return sdk.api.endusers.getOne(enduserA_1.id); }, { onResult: function (e) { return Object.entries(NUTRITION_TARGETS).every(function (_a) {
|
|
308
|
+
var field = _a[0], value = _a[1];
|
|
309
|
+
return e[field] === value;
|
|
310
|
+
}); } })];
|
|
311
|
+
case 10:
|
|
312
|
+
_d.sent();
|
|
313
|
+
return [4 /*yield*/, (0, testing_1.async_test)('targets: staff can write targets', function () { return sdk.api.endusers.updateOne(enduserA_1.id, { dailyCalorieTarget: 2000, dailyWaterTarget: 3000 }); }, { onResult: function (e) { return e.dailyCalorieTarget === 2000 && e.dailyWaterTarget === 3000; } })];
|
|
314
|
+
case 11:
|
|
315
|
+
_d.sent();
|
|
316
|
+
return [4 /*yield*/, (0, testing_1.async_test)('targets: negative values rejected', function () { return enduserSDK_1.api.endusers.updateOne(enduserA_1.id, { dailyProteinTarget: -10 }); }, { shouldError: true, onError: function () { return true; } })
|
|
317
|
+
// ---- Requirement 2: EnduserObservation.components round-trip ----
|
|
318
|
+
];
|
|
319
|
+
case 12:
|
|
320
|
+
_d.sent();
|
|
321
|
+
return [4 /*yield*/, enduserSDK_1.api.enduser_observations.createOne({
|
|
322
|
+
enduserId: enduserA_1.id,
|
|
323
|
+
status: 'final',
|
|
324
|
+
category: 'vital-signs',
|
|
325
|
+
type: 'food',
|
|
326
|
+
measurement: { value: 450, unit: 'kcal' },
|
|
327
|
+
components: MACRO_COMPONENTS,
|
|
328
|
+
})];
|
|
329
|
+
case 13:
|
|
330
|
+
withComponents_1 = _d.sent();
|
|
331
|
+
return [4 /*yield*/, (0, testing_1.async_test)('components: enduser round-trips observation with macros + coded food item', function () { return enduserSDK_1.api.enduser_observations.getOne(withComponents_1.id); }, { onResult: function (o) {
|
|
332
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
333
|
+
return (((_a = o.components) === null || _a === void 0 ? void 0 : _a.length) === MACRO_COMPONENTS.length
|
|
334
|
+
&& o.components[1].code.text === 'Protein'
|
|
335
|
+
&& o.components[1].valueQuantity.value === 42
|
|
336
|
+
&& o.components[1].valueQuantity.unit === 'g'
|
|
337
|
+
&& ((_c = (_b = o.components[4].code.coding) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.system) === 'https://fdc.nal.usda.gov'
|
|
338
|
+
&& ((_e = (_d = o.components[4].code.coding) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.code) === '328637'
|
|
339
|
+
&& ((_g = (_f = o.components[4].code.coding) === null || _f === void 0 ? void 0 : _f[0]) === null || _g === void 0 ? void 0 : _g.display) === 'Cheese, cheddar'
|
|
340
|
+
&& o.measurement.value === 450);
|
|
341
|
+
} })];
|
|
342
|
+
case 14:
|
|
343
|
+
_d.sent();
|
|
344
|
+
return [4 /*yield*/, enduserSDK_1.api.enduser_observations.createOne({
|
|
345
|
+
enduserId: enduserA_1.id,
|
|
346
|
+
status: 'final',
|
|
347
|
+
category: 'vital-signs',
|
|
348
|
+
type: 'weight',
|
|
349
|
+
measurement: { value: 180, unit: 'lbs' },
|
|
350
|
+
})];
|
|
351
|
+
case 15:
|
|
352
|
+
withoutComponents_1 = _d.sent();
|
|
353
|
+
return [4 /*yield*/, (0, testing_1.async_test)('components: observation without components still works (back-compat)', function () { return enduserSDK_1.api.enduser_observations.getOne(withoutComponents_1.id); }, { onResult: function (o) { return o.components === undefined && o.measurement.value === 180; } })
|
|
354
|
+
// ---- Requirement 4: creatorOnly update/delete ----
|
|
355
|
+
];
|
|
356
|
+
case 16:
|
|
357
|
+
_d.sent();
|
|
358
|
+
// ---- Requirement 4: creatorOnly update/delete ----
|
|
359
|
+
return [4 /*yield*/, (0, testing_1.async_test)('creatorOnly: enduser updates own observation', function () { return enduserSDK_1.api.enduser_observations.updateOne(withoutComponents_1.id, { measurement: { value: 178, unit: 'lbs' } }); }, { onResult: function (o) { return o.measurement.value === 178; } })];
|
|
360
|
+
case 17:
|
|
361
|
+
// ---- Requirement 4: creatorOnly update/delete ----
|
|
362
|
+
_d.sent();
|
|
363
|
+
return [4 /*yield*/, (0, testing_1.async_test)('creatorOnly: enduser deletes own observation', function () { return enduserSDK_1.api.enduser_observations.deleteOne(withoutComponents_1.id); }, { shouldError: false, onResult: function () { return true; } })
|
|
364
|
+
// Negative: staff-created observation for the enduser remains locked
|
|
365
|
+
];
|
|
366
|
+
case 18:
|
|
367
|
+
_d.sent();
|
|
368
|
+
return [4 /*yield*/, sdk.api.enduser_observations.createOne({
|
|
369
|
+
enduserId: enduserA_1.id,
|
|
370
|
+
status: 'final',
|
|
371
|
+
category: 'vital-signs',
|
|
372
|
+
type: 'weight',
|
|
373
|
+
measurement: { value: 182, unit: 'lbs' },
|
|
374
|
+
})];
|
|
375
|
+
case 19:
|
|
376
|
+
staffCreated_1 = _d.sent();
|
|
377
|
+
return [4 /*yield*/, (0, testing_1.async_test)('creatorOnly: enduser cannot update staff-created observation', function () { return enduserSDK_1.api.enduser_observations.updateOne(staffCreated_1.id, { measurement: { value: 1, unit: 'lbs' } }); }, { shouldError: true, onError: function () { return true; } })];
|
|
378
|
+
case 20:
|
|
379
|
+
_d.sent();
|
|
380
|
+
return [4 /*yield*/, (0, testing_1.async_test)('creatorOnly: enduser cannot delete staff-created observation', function () { return enduserSDK_1.api.enduser_observations.deleteOne(staffCreated_1.id); }, { shouldError: true, onError: function () { return true; } })];
|
|
381
|
+
case 21:
|
|
382
|
+
_d.sent();
|
|
383
|
+
return [4 /*yield*/, (0, testing_1.async_test)('creatorOnly: enduser can still read staff-created observation', function () { return enduserSDK_1.api.enduser_observations.getOne(staffCreated_1.id); }, { onResult: function (o) { return o.id === staffCreated_1.id && o.measurement.value === 182; } })
|
|
384
|
+
// Staff sessions unaffected by creatorOnly (applies to enduser sessions only)
|
|
385
|
+
];
|
|
386
|
+
case 22:
|
|
387
|
+
_d.sent();
|
|
388
|
+
// Staff sessions unaffected by creatorOnly (applies to enduser sessions only)
|
|
389
|
+
return [4 /*yield*/, (0, testing_1.async_test)('staff unchanged: staff updates enduser-created observation', function () { return sdk.api.enduser_observations.updateOne(withComponents_1.id, { measurement: { value: 500, unit: 'kcal' } }); }, { onResult: function (o) { return o.measurement.value === 500; } })];
|
|
390
|
+
case 23:
|
|
391
|
+
// Staff sessions unaffected by creatorOnly (applies to enduser sessions only)
|
|
392
|
+
_d.sent();
|
|
393
|
+
return [4 /*yield*/, (0, testing_1.async_test)('staff unchanged: staff deletes enduser-created observation', function () { return sdk.api.enduser_observations.deleteOne(withComponents_1.id); }, { shouldError: false, onResult: function () { return true; } })
|
|
394
|
+
// Cross-enduser: B cannot update/delete A's observation
|
|
395
|
+
];
|
|
396
|
+
case 24:
|
|
397
|
+
_d.sent();
|
|
398
|
+
return [4 /*yield*/, enduserSDK_1.api.enduser_observations.createOne({
|
|
399
|
+
enduserId: enduserA_1.id,
|
|
400
|
+
status: 'final',
|
|
401
|
+
category: 'vital-signs',
|
|
402
|
+
type: 'weight',
|
|
403
|
+
measurement: { value: 179, unit: 'lbs' },
|
|
404
|
+
})];
|
|
405
|
+
case 25:
|
|
406
|
+
enduserACreated_1 = _d.sent();
|
|
407
|
+
return [4 /*yield*/, (0, testing_1.async_test)("cross-enduser: enduser B cannot update enduser A's observation", function () { return enduserSDKB_1.api.enduser_observations.updateOne(enduserACreated_1.id, { measurement: { value: 1, unit: 'lbs' } }); }, { shouldError: true, onError: function () { return true; } })];
|
|
408
|
+
case 26:
|
|
409
|
+
_d.sent();
|
|
410
|
+
return [4 /*yield*/, (0, testing_1.async_test)("cross-enduser: enduser B cannot delete enduser A's observation", function () { return enduserSDKB_1.api.enduser_observations.deleteOne(enduserACreated_1.id); }, { shouldError: true, onError: function () { return true; } })];
|
|
411
|
+
case 27:
|
|
412
|
+
_d.sent();
|
|
413
|
+
return [4 /*yield*/, (0, testing_1.async_test)("cross-enduser: enduser A's observation still exists (admin verify)", function () { return sdk.api.enduser_observations.getOne(enduserACreated_1.id); }, { onResult: function (o) { return o.id === enduserACreated_1.id && o.measurement.value === 179; } })
|
|
414
|
+
// ---- Requirement 1: USDA food search proxy (behavioral skip when not configured) ----
|
|
415
|
+
];
|
|
416
|
+
case 28:
|
|
417
|
+
_d.sent();
|
|
418
|
+
// ---- Requirement 1: USDA food search proxy (behavioral skip when not configured) ----
|
|
419
|
+
return [4 /*yield*/, usda_proxy_tests({ sdk: sdk, enduserSDK: enduserSDK_1 })];
|
|
420
|
+
case 29:
|
|
421
|
+
// ---- Requirement 1: USDA food search proxy (behavioral skip when not configured) ----
|
|
422
|
+
_d.sent();
|
|
423
|
+
return [3 /*break*/, 39];
|
|
424
|
+
case 30:
|
|
425
|
+
if (!enduserAId) return [3 /*break*/, 34];
|
|
426
|
+
_d.label = 31;
|
|
427
|
+
case 31:
|
|
428
|
+
_d.trys.push([31, 33, , 34]);
|
|
429
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(enduserAId)];
|
|
430
|
+
case 32:
|
|
431
|
+
_d.sent();
|
|
432
|
+
return [3 /*break*/, 34];
|
|
433
|
+
case 33:
|
|
434
|
+
_b = _d.sent();
|
|
435
|
+
return [3 /*break*/, 34];
|
|
436
|
+
case 34:
|
|
437
|
+
if (!enduserBId) return [3 /*break*/, 38];
|
|
438
|
+
_d.label = 35;
|
|
439
|
+
case 35:
|
|
440
|
+
_d.trys.push([35, 37, , 38]);
|
|
441
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(enduserBId)];
|
|
442
|
+
case 36:
|
|
443
|
+
_d.sent();
|
|
444
|
+
return [3 /*break*/, 38];
|
|
445
|
+
case 37:
|
|
446
|
+
_c = _d.sent();
|
|
447
|
+
return [3 /*break*/, 38];
|
|
448
|
+
case 38: return [7 /*endfinally*/];
|
|
449
|
+
case 39: return [2 /*return*/];
|
|
450
|
+
}
|
|
451
|
+
});
|
|
452
|
+
});
|
|
453
|
+
};
|
|
454
|
+
exports.nutrition_tracking_tests = nutrition_tracking_tests;
|
|
455
|
+
// Allow running this test file independently
|
|
456
|
+
if (require.main === module) {
|
|
457
|
+
console.log("\uD83C\uDF10 Using API URL: ".concat(host));
|
|
458
|
+
var sdk_2 = new sdk_1.Session({ host: host });
|
|
459
|
+
var sdkNonAdmin_1 = new sdk_1.Session({ host: host });
|
|
460
|
+
var runTests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
461
|
+
return __generator(this, function (_a) {
|
|
462
|
+
switch (_a.label) {
|
|
463
|
+
case 0: return [4 /*yield*/, (0, setup_1.setup_tests)(sdk_2, sdkNonAdmin_1)];
|
|
464
|
+
case 1:
|
|
465
|
+
_a.sent();
|
|
466
|
+
return [4 /*yield*/, (0, exports.nutrition_tracking_tests)({ sdk: sdk_2, sdkNonAdmin: sdkNonAdmin_1 })];
|
|
467
|
+
case 2:
|
|
468
|
+
_a.sent();
|
|
469
|
+
return [2 /*return*/];
|
|
470
|
+
}
|
|
471
|
+
});
|
|
472
|
+
}); };
|
|
473
|
+
runTests()
|
|
474
|
+
.then(function () {
|
|
475
|
+
console.log("✅ Nutrition tracking test suite completed successfully");
|
|
476
|
+
process.exit(0);
|
|
477
|
+
})
|
|
478
|
+
.catch(function (error) {
|
|
479
|
+
console.error("❌ Nutrition tracking test suite failed:", error);
|
|
480
|
+
process.exit(1);
|
|
481
|
+
});
|
|
482
|
+
}
|
|
483
|
+
//# sourceMappingURL=nutrition_tracking.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nutrition_tracking.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/nutrition_tracking.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook_error_handling.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/webhook_error_handling.test.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAiDnC,eAAO,MAAM,4BAA4B;SAAwC,OAAO;iBAAe,OAAO;mBA+G7G,CAAA"}
|