#!/usr/bin/env elixir # Test the terminal_id field access fix Code.prepend_path("lib") require Logger Logger.configure(level: :info) # Create a mock AcquirerTerminal struct to verify field access defmodule MockAcquirerTerminal do defstruct [ :id, :tid, :mid, :acquirer_id, :terminal_name, :terminal_type, :terminal_location, :currency_code, :country_code, :mcc_code, :nii, :fiid, :application_type, :current_batch_no, :batch_date, :batch_time, :max_batch_size, :auto_settlement, :settlement_time, :key_set_id, :pin_key, :mac_key, :data_key, :max_transaction_amount, :daily_limit_amount, :daily_transaction_count, :max_daily_transactions, :status, :last_settlement_date, :last_settlement_time, :last_logon_date, :last_logon_time, :supports_emv, :supports_contactless, :supports_pin, :supports_signature, :supports_cash_back, :supports_tip, :supports_partial_auth, :network_config, :metadata, :created_by, :updated_by, :inserted_at, :updated_at ] end IO.puts("=== Testing Terminal Field Access Fix ===") # Create mock terminal config matching the error structure terminal_config = %MockAcquirerTerminal{ id: 1, tid: "12345671", # This is the correct field name mid: "123456789012345", # This is the correct field name acquirer_id: 1, terminal_name: "YSP Test Terminal", terminal_type: "POS", terminal_location: "Test Location", currency_code: "840", country_code: "840", mcc_code: "5999", nii: "000", fiid: "12345678901", application_type: "01", current_batch_no: "000001", batch_date: "20250924", batch_time: "120000", max_batch_size: 1000, auto_settlement: true, settlement_time: "2359", key_set_id: "KEY_SET_01", status: "ACTIVE" } IO.puts("\n1. Testing correct field access:") IO.puts("terminal_config.tid: #{inspect(terminal_config.tid)}") IO.puts("terminal_config.mid: #{inspect(terminal_config.mid)}") IO.puts("\n2. Testing if incorrect field access would fail:") try do _ = terminal_config.terminal_id IO.puts("❌ ERROR: terminal_config.terminal_id should not exist!") rescue KeyError -> IO.puts("✅ CORRECT: terminal_config.terminal_id raises KeyError as expected") end try do _ = terminal_config.merchant_id IO.puts("❌ ERROR: terminal_config.merchant_id should not exist!") rescue KeyError -> IO.puts("✅ CORRECT: terminal_config.merchant_id raises KeyError as expected") end IO.puts("\n3. Testing transaction parameter creation:") temp_txn_params = %{ "terminal_id" => terminal_config.tid, # Fixed: using 'tid' instead of 'terminal_id' "merchant_id" => terminal_config.mid # Fixed: using 'mid' instead of 'merchant_id' } IO.puts("✅ Transaction params created successfully: #{inspect(temp_txn_params)}") IO.puts("\n4. Field mapping summary:") IO.puts("AcquirerTerminal.tid → temp_txn_params[\"terminal_id\"]") IO.puts("AcquirerTerminal.mid → temp_txn_params[\"merchant_id\"]") IO.puts("\n=== Fix Verification Complete ===") IO.puts("The KeyError should now be resolved!")