Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 45 additions & 10 deletions mock-service/src/config/mock-config/TRV14/2.0.0/on_select/class.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,30 +28,65 @@ export class MockOnSelectClass extends MockAction {
generator(existingPayload: any, sessionData: SessionData): Promise<any> {
return onSelectDefaultGenerator(existingPayload, sessionData);
}
async validate(targetPayload: any): Promise<MockOutput> {
async validate(targetPayload: any, sessionData: SessionData): Promise<MockOutput> {
const order = targetPayload?.message?.order;
if (!order) return { valid: false, message: "Order not found in message", code: "MISSING_ORDER" };

const provider = order.provider;
if (!provider) return { valid: false, message: "Provider not found in order", code: "MISSING_PROVIDER" };

if (sessionData.selected_provider && provider.id !== sessionData.selected_provider.id)
return { valid: false, message: `Provider ID mismatch with selected provider: ${sessionData.selected_provider.id}`, code: "ID_MISMATCH" };

const fulfillments = order.fulfillments;
if (sessionData.selected_fulfillments && fulfillments) {
const validFulfillmentIds = new Set(sessionData.selected_fulfillments.map((f: any) => f.id));
const invalidFulfillmentIds = fulfillments.filter((f: any) => !validFulfillmentIds.has(f.id)).map((f: any) => f.id);
if (invalidFulfillmentIds.length) {
return { valid: false, message: `Fulfillment IDs [${invalidFulfillmentIds.join(", ")}] not found in selected fulfillments`, code: "FULFILLMENT_ID_MISMATCH" };
}
}

const items = order.items;
if (items) {
if (sessionData.selected_items) {
const selectedIds = sessionData.selected_items.map((i: any) => i.id);
const parentIds = (sessionData.items || [])
.filter((item: any) => selectedIds.includes(item.id) && item.parent_item_id)
.map((item: any) => item.parent_item_id);

const validItemIds = new Set([...selectedIds, ...parentIds]);
const invalidItemIds = items.filter((i: any) => !validItemIds.has(i.id)).map((i: any) => i.id);

if (invalidItemIds.length) {
return { valid: false, message: `Item IDs [${invalidItemIds.join(", ")}] not found in selected items or their parents`, code: "ITEM_ID_MISMATCH" };
}
}
}

return { valid: true };
}
async meetRequirements(sessionData: SessionData): Promise<MockOutput> {
// Validate required session data for on_select
if (!sessionData.items || !Array.isArray(sessionData.items)) {
return {
valid: false,
return {
valid: false,
message: "No items available in session data",
code: "MISSING_ITEMS"
};
}

if (!sessionData.selected_items || !Array.isArray(sessionData.selected_items)) {
return {
valid: false,
return {
valid: false,
message: "No selected_items available in session data",
code: "MISSING_SELECTED_ITEMS"
};
}

if (sessionData.selected_items.length === 0) {
return {
valid: false,
return {
valid: false,
message: "selected_items array is empty",
code: "EMPTY_SELECTED_ITEMS"
};
Expand All @@ -72,7 +107,7 @@ export class MockOnSelectClass extends MockAction {
code: "MISSING_SELECTED_FULFILLMENTS"
};
}

return { valid: true };
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,42 @@ export class MockOnSelectPurchaseCultFormClass extends MockAction {
generator(existingPayload: any, sessionData: SessionData): Promise<any> {
return onSelectDefaultGenerator(existingPayload, sessionData);
}
async validate(targetPayload: any): Promise<MockOutput> {
async validate(targetPayload: any, sessionData: SessionData): Promise<MockOutput> {
const order = targetPayload?.message?.order;
if (!order) return { valid: false, message: "Order not found in message", code: "MISSING_ORDER" };

const provider = order.provider;
if (!provider) return { valid: false, message: "Provider not found in order", code: "MISSING_PROVIDER" };

if (sessionData.selected_provider && provider.id !== sessionData.selected_provider.id)
return { valid: false, message: `Provider ID mismatch with selected provider: ${sessionData.selected_provider.id}`, code: "ID_MISMATCH" };

const fulfillments = order.fulfillments;
if (sessionData.selected_fulfillments && fulfillments) {
const validFulfillmentIds = new Set(sessionData.selected_fulfillments.map((f: any) => f.id));
const invalidFulfillmentIds = fulfillments.filter((f: any) => !validFulfillmentIds.has(f.id)).map((f: any) => f.id);
if (invalidFulfillmentIds.length) {
return { valid: false, message: `Fulfillment IDs [${invalidFulfillmentIds.join(", ")}] not found in selected fulfillments`, code: "FULFILLMENT_ID_MISMATCH" };
}
}

const items = order.items;
if (items) {
if (sessionData.selected_items) {
const selectedIds = sessionData.selected_items.map((i: any) => i.id);
const parentIds = (sessionData.items || [])
.filter((item: any) => selectedIds.includes(item.id) && item.parent_item_id)
.map((item: any) => item.parent_item_id);

const validItemIds = new Set([...selectedIds, ...parentIds]);
const invalidItemIds = items.filter((i: any) => !validItemIds.has(i.id)).map((i: any) => i.id);

if (invalidItemIds.length) {
return { valid: false, message: `Item IDs [${invalidItemIds.join(", ")}] not found in selected items or their parents`, code: "ITEM_ID_MISMATCH" };
}
}
}

return { valid: true };
}
async meetRequirements(sessionData: SessionData): Promise<MockOutput> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,42 @@ export class MockOnSelect2Class extends MockAction {
generator(existingPayload: any, sessionData: SessionData): Promise<any> {
return onSelect2Generator(existingPayload, sessionData);
}
async validate(targetPayload: any): Promise<MockOutput> {
async validate(targetPayload: any, sessionData: SessionData): Promise<MockOutput> {
const order = targetPayload?.message?.order;
if (!order) return { valid: false, message: "Order not found in message", code: "MISSING_ORDER" };

const provider = order.provider;
if (!provider) return { valid: false, message: "Provider not found in order", code: "MISSING_PROVIDER" };

if (sessionData.selected_provider && provider.id !== sessionData.selected_provider.id)
return { valid: false, message: `Provider ID mismatch with selected provider: ${sessionData.selected_provider.id}`, code: "ID_MISMATCH" };

const fulfillments = order.fulfillments;
if (sessionData.selected_fulfillments && fulfillments) {
const validFulfillmentIds = new Set(sessionData.selected_fulfillments.map((f: any) => f.id));
const invalidFulfillmentIds = fulfillments.filter((f: any) => !validFulfillmentIds.has(f.id)).map((f: any) => f.id);
if (invalidFulfillmentIds.length) {
return { valid: false, message: `Fulfillment IDs [${invalidFulfillmentIds.join(", ")}] not found in selected fulfillments`, code: "FULFILLMENT_ID_MISMATCH" };
}
}

const items = order.items;
if (items) {
if (sessionData.selected_items) {
const selectedIds = sessionData.selected_items.map((i: any) => i.id);
const parentIds = (sessionData.items || [])
.filter((item: any) => selectedIds.includes(item.id) && item.parent_item_id)
.map((item: any) => item.parent_item_id);

const validItemIds = new Set([...selectedIds, ...parentIds]);
const invalidItemIds = items.filter((i: any) => !validItemIds.has(i.id)).map((i: any) => i.id);

if (invalidItemIds.length) {
return { valid: false, message: `Item IDs [${invalidItemIds.join(", ")}] not found in selected items or their parents`, code: "ITEM_ID_MISMATCH" };
}
}
}

return { valid: true };
}
async meetRequirements(sessionData: SessionData): Promise<MockOutput> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,42 @@ export class MockOnSelectPurchaseCultureClass extends MockAction {
generator(existingPayload: any, sessionData: SessionData): Promise<any> {
return onSelect2Generator(existingPayload, sessionData);
}
async validate(targetPayload: any): Promise<MockOutput> {
async validate(targetPayload: any, sessionData: SessionData): Promise<MockOutput> {
const order = targetPayload?.message?.order;
if (!order) return { valid: false, message: "Order not found in message", code: "MISSING_ORDER" };

const provider = order.provider;
if (!provider) return { valid: false, message: "Provider not found in order", code: "MISSING_PROVIDER" };

if (sessionData.selected_provider && provider.id !== sessionData.selected_provider.id)
return { valid: false, message: `Provider ID mismatch with selected provider: ${sessionData.selected_provider.id}`, code: "ID_MISMATCH" };

const fulfillments = order.fulfillments;
if (sessionData.selected_fulfillments && fulfillments) {
const validFulfillmentIds = new Set(sessionData.selected_fulfillments.map((f: any) => f.id));
const invalidFulfillmentIds = fulfillments.filter((f: any) => !validFulfillmentIds.has(f.id)).map((f: any) => f.id);
if (invalidFulfillmentIds.length) {
return { valid: false, message: `Fulfillment IDs [${invalidFulfillmentIds.join(", ")}] not found in selected fulfillments`, code: "FULFILLMENT_ID_MISMATCH" };
}
}

const items = order.items;
if (items) {
if (sessionData.selected_items) {
const selectedIds = sessionData.selected_items.map((i: any) => i.id);
const parentIds = (sessionData.items || [])
.filter((item: any) => selectedIds.includes(item.id) && item.parent_item_id)
.map((item: any) => item.parent_item_id);

const validItemIds = new Set([...selectedIds, ...parentIds]);
const invalidItemIds = items.filter((i: any) => !validItemIds.has(i.id)).map((i: any) => i.id);

if (invalidItemIds.length) {
return { valid: false, message: `Item IDs [${invalidItemIds.join(", ")}] not found in selected items or their parents`, code: "ITEM_ID_MISMATCH" };
}
}
}

return { valid: true };
}
async meetRequirements(sessionData: SessionData): Promise<MockOutput> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,30 +28,67 @@ export class MockOnSelectWithoutFormClass extends MockAction {
generator(existingPayload: any, sessionData: SessionData): Promise<any> {
return onSelectWithoutFormGenerator(existingPayload, sessionData);
}
async validate(targetPayload: any): Promise<MockOutput> {
async validate(targetPayload: any, sessionData: SessionData): Promise<MockOutput> {
const order = targetPayload?.message?.order;
if (!order) return { valid: false, message: "Order not found in message", code: "MISSING_ORDER" };

const provider = order.provider;
if (!provider) return { valid: false, message: "Provider not found in order", code: "MISSING_PROVIDER" };

if (sessionData.selected_provider && provider.id !== sessionData.selected_provider.id)
return { valid: false, message: `Provider ID mismatch with selected provider: ${sessionData.selected_provider.id}`, code: "ID_MISMATCH" };

const fulfillments = order.fulfillments;
if (sessionData.selected_fulfillments && fulfillments) {
const validFulfillmentIds = new Set(sessionData.selected_fulfillments.map((f: any) => f.id));
const invalidFulfillmentIds = fulfillments.filter((f: any) => !validFulfillmentIds.has(f.id)).map((f: any) => f.id);
if (invalidFulfillmentIds.length) {
return { valid: false, message: `Fulfillment IDs [${invalidFulfillmentIds.join(", ")}] not found in selected fulfillments`, code: "FULFILLMENT_ID_MISMATCH" };
}
}

const items = order.items;
if (items) {


if (sessionData.selected_items) {
const selectedIds = sessionData.selected_items.map((i: any) => i.id);
const parentIds = (sessionData.items || [])
.filter((item: any) => selectedIds.includes(item.id) && item.parent_item_id)
.map((item: any) => item.parent_item_id);

const validItemIds = new Set([...selectedIds, ...parentIds]);
const invalidItemIds = items.filter((i: any) => !validItemIds.has(i.id)).map((i: any) => i.id);

if (invalidItemIds.length) {
return { valid: false, message: `Item IDs [${invalidItemIds.join(", ")}] not found in selected items or their parents`, code: "ITEM_ID_MISMATCH" };
}
}
}

return { valid: true };
}
async meetRequirements(sessionData: SessionData): Promise<MockOutput> {
// Validate required session data for on_select
if (!sessionData.items || !Array.isArray(sessionData.items)) {
return {
valid: false,
return {
valid: false,
message: "No items available in session data",
code: "MISSING_ITEMS"
};
}

if (!sessionData.selected_items || !Array.isArray(sessionData.selected_items)) {
return {
valid: false,
return {
valid: false,
message: "No selected_items available in session data",
code: "MISSING_SELECTED_ITEMS"
};
}

if (sessionData.selected_items.length === 0) {
return {
valid: false,
return {
valid: false,
message: "selected_items array is empty",
code: "EMPTY_SELECTED_ITEMS"
};
Expand All @@ -72,7 +109,7 @@ export class MockOnSelectWithoutFormClass extends MockAction {
code: "MISSING_SELECTED_FULFILLMENTS"
};
}

return { valid: true };
}
}
Loading