<?xml version="1.0" encoding="UTF-8"?>
<testsuite name="com.yorvana.ui.records.AddEditRecordViewModelTest" tests="33" skipped="0" failures="0" errors="0" timestamp="2026-05-26T04:44:21.667Z" hostname="home-pc" time="9.339">
  <properties/>
  <testcase name="save should call repository and navigate back on success" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="1.796"/>
  <testcase name="isSaveEnabled should reflect validation state" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.23"/>
  <testcase name="save should fail validation with invalid_cost_decimals if cost has more than 2 decimals" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.213"/>
  <testcase name="onEvent IsDiyChanged should clear performer and not unreachable sentinel" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.214"/>
  <testcase name="onEvent PerformerChanged should reject reserved sentinel value" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.212"/>
  <testcase name="onEvent CurrencyChanged should update state" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.227"/>
  <testcase name="onEvent NotesChanged should truncate to MAX_NOTES_LENGTH" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.212"/>
  <testcase name="init should restore both predefined and custom work items" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.568"/>
  <testcase name="save should be blocked when isReadOnly" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.213"/>
  <testcase name="save should show error on failure" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.215"/>
  <testcase name="onEvent CostChanged should update state" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.213"/>
  <testcase name="save should fail if performer is blank and not DIY" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.208"/>
  <testcase name="init should load defaults from preferences and vehicle" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.21"/>
  <testcase name="init should handle backward compatibility for old category-only records" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.215"/>
  <testcase name="save should fail validation with invalid_cost if cost is scientific notation" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.216"/>
  <testcase name="onEvent NotesChanged should update state" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.204"/>
  <testcase name="save should correctly serialize custom and predefined work items" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.233"/>
  <testcase name="onEvent DateChanged should update state" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.225"/>
  <testcase name="onEvent RemoveActiveItem should update state" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.229"/>
  <testcase name="save should fail validation if date is empty" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.224"/>
  <testcase name="save state should recover after failure" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.237"/>
  <testcase name="onEvent DismissDeleteAttachmentConfirm should clear state" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.225"/>
  <testcase name="onEvent TogglePredefinedItem should update activeWorkItems" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.224"/>
  <testcase name="attachment upload should show error on failure" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.413"/>
  <testcase name="onEvent RequestDeleteAttachment should update state" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.21"/>
  <testcase name="save should fail validation with invalid_cost if cost is completely non-numeric" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.207"/>
  <testcase name="save is blocked after isReadOnly flips true post-construction" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.217"/>
  <testcase name="dialog visibility events should update state" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.208"/>
  <testcase name="save should fail validation if odometer exceeds MAX_ODOMETER" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.204"/>
  <testcase name="save should succeed if DIY is true even if performer text is blank" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.219"/>
  <testcase name="init should load existing record when recordId is provided" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.222"/>
  <testcase name="save should fail validation if odometer is invalid" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.216"/>
  <testcase name="onEvent ConfirmDeleteAttachment should delete attachment" classname="com.yorvana.ui.records.AddEditRecordViewModelTest" time="0.255"/>
  <system-out><![CDATA[]]></system-out>
  <system-err><![CDATA[]]></system-err>
</testsuite>
