1+ import { readFileSync } from "fs" ;
2+ import yaml from "js-yaml" ;
3+ import path from "path" ;
4+ import { MockAction , MockOutput , saveType } from "../../classes/mock-action" ;
5+ import { SessionData } from "../../session-types" ;
6+ import { onSelectDefaultGenerator } from "./generator" ;
7+
8+ export class MockOnSelectPurchaseCultFormClass extends MockAction {
9+ get saveData ( ) : saveType {
10+ return yaml . load (
11+ readFileSync ( path . resolve ( __dirname , "./save-data.yaml" ) , "utf8" )
12+ ) as saveType ;
13+ }
14+ get defaultData ( ) : any {
15+ return yaml . load (
16+ readFileSync ( path . resolve ( __dirname , "./default.yaml" ) , "utf8" )
17+ ) ;
18+ }
19+ get inputs ( ) : any {
20+ return { } ;
21+ }
22+ name ( ) : string {
23+ return "on_select_default" ;
24+ }
25+ get description ( ) : string {
26+ return "Mock for on_select_default" ;
27+ }
28+ generator ( existingPayload : any , sessionData : SessionData ) : Promise < any > {
29+ return onSelectDefaultGenerator ( existingPayload , sessionData ) ;
30+ }
31+ async validate ( targetPayload : any ) : Promise < MockOutput > {
32+ return { valid : true } ;
33+ }
34+ async meetRequirements ( sessionData : SessionData ) : Promise < MockOutput > {
35+ // Validate required session data for on_select
36+ if ( ! sessionData . items || ! Array . isArray ( sessionData . items ) ) {
37+ return {
38+ valid : false ,
39+ message : "No items available in session data" ,
40+ code : "MISSING_ITEMS"
41+ } ;
42+ }
43+
44+ if ( ! sessionData . selected_items || ! Array . isArray ( sessionData . selected_items ) ) {
45+ return {
46+ valid : false ,
47+ message : "No selected_items available in session data" ,
48+ code : "MISSING_SELECTED_ITEMS"
49+ } ;
50+ }
51+
52+ if ( sessionData . selected_items . length === 0 ) {
53+ return {
54+ valid : false ,
55+ message : "selected_items array is empty" ,
56+ code : "EMPTY_SELECTED_ITEMS"
57+ } ;
58+ }
59+
60+ if ( ! sessionData . fulfillments || ! Array . isArray ( sessionData . fulfillments ) ) {
61+ return {
62+ valid : false ,
63+ message : "No fulfillments available in session data" ,
64+ code : "MISSING_FULFILLMENTS"
65+ } ;
66+ }
67+
68+ if ( ! sessionData . selected_fulfillments || ! Array . isArray ( sessionData . selected_fulfillments ) ) {
69+ return {
70+ valid : false ,
71+ message : "No selected_fulfillments available in session data" ,
72+ code : "MISSING_SELECTED_FULFILLMENTS"
73+ } ;
74+ }
75+
76+ return { valid : true } ;
77+ }
78+ }
0 commit comments