defmodule TestXmlParsing do
def run do
IO.puts("๐งช Testing XML Parser")
xml = """
"""
IO.puts("๐ Input XML:")
IO.puts(xml)
IO.puts("\n๐ Testing SweetXml directly...")
try do
doc = SweetXml.parse(xml)
root = SweetXml.xpath(doc, ~x"/*"e)
IO.puts("Root element: #{inspect(root)}")
case root do
{element_name, _, _} ->
IO.puts("Element name: #{element_name}")
element_name when is_atom(element_name) ->
IO.puts("Atom element: #{element_name}")
_ ->
IO.puts("Unknown root format: #{inspect(root)}")
end
rescue
e -> IO.puts("SweetXml error: #{inspect(e)}")
end
IO.puts("\n๐ Testing UPI Parser...")
case DaProductApp.QRValidation.Parser.UpiXmlParser.parse_upi_xml(xml) do
{:ok, result} ->
IO.puts("โ
Success!")
IO.puts("Message type: #{result.message_type}")
IO.puts("Header: #{inspect(result.header)}")
IO.puts("QR: #{inspect(result.qr)}")
{:error, reason} ->
IO.puts("โ Error:")
IO.puts(inspect(reason))
end
IO.puts("\n๐ Testing QR Service...")
case DaProductApp.QRValidation.Service.ingest_valqr_xml(xml) do
{:ok, qr_validation} ->
IO.puts("โ
Service Success!")
IO.puts("QR Validation ID: #{qr_validation.id}")
IO.puts("Status: #{qr_validation.status}")
{:error, reason} ->
IO.puts("โ Service Error:")
IO.puts(inspect(reason))
end
end
end
# Run the test
TestXmlParsing.run()