#!/usr/bin/env elixir # Test script to verify transaction import functionality # Usage: mix run test_transaction_import.exs # Read the POS CSV IO.puts("\n=== Testing POS Transaction Import ===\n") pos_csv = File.read!("test_pos_transactions.csv") IO.puts("POS CSV Content (first 300 chars):") IO.puts(String.slice(pos_csv, 0, 300)) # Test POS template generation {pos_filename, pos_template} = RiskCore.TransactionImporter.generate_template("POS") IO.puts("\nPOS Template filename: #{pos_filename}") IO.puts("POS Template content:") IO.puts(pos_template) # Test POS import IO.puts("\n=== Testing POS Import and Evaluation ===") case RiskCore.TransactionImporter.import_and_evaluate(pos_csv, "POS") do {:ok, results} -> IO.puts("✓ POS Import successful!") IO.puts(" Total imported: #{results.total_imported}") IO.puts(" Successful: #{results.successful}") IO.puts(" Failed: #{results.failed}") # Show first 3 results results.results |> Enum.take(3) |> Enum.each(fn result -> IO.puts("\n Transaction: #{result.transaction_id}") IO.puts(" Success: #{result.success}") IO.puts(" Status: #{Map.get(result, :status, "N/A")}") IO.puts(" Rule hits: #{result.rule_hit_count}") end) {:error, reason} -> IO.puts("✗ POS Import failed: #{reason}") end # Read the QR CSV IO.puts("\n\n=== Testing QR Transaction Import ===\n") qr_csv = File.read!("test_qr_transactions.csv") IO.puts("QR CSV Content (first 300 chars):") IO.puts(String.slice(qr_csv, 0, 300)) # Test QR template generation {qr_filename, qr_template} = RiskCore.TransactionImporter.generate_template("QR") IO.puts("\nQR Template filename: #{qr_filename}") IO.puts("QR Template content:") IO.puts(qr_template) # Test QR import IO.puts("\n=== Testing QR Import and Evaluation ===") case RiskCore.TransactionImporter.import_and_evaluate(qr_csv, "QR") do {:ok, results} -> IO.puts("✓ QR Import successful!") IO.puts(" Total imported: #{results.total_imported}") IO.puts(" Successful: #{results.successful}") IO.puts(" Failed: #{results.failed}") # Show first 3 results results.results |> Enum.take(3) |> Enum.each(fn result -> IO.puts("\n Transaction: #{result.transaction_id}") IO.puts(" Success: #{result.success}") IO.puts(" Status: #{Map.get(result, :status, "N/A")}") IO.puts(" Rule hits: #{result.rule_hit_count}") end) {:error, reason} -> IO.puts("✗ QR Import failed: #{reason}") end IO.puts("\n=== Test Complete ===\n")