Files
raven-test-integration/memory/MEMORY.md
2026-02-28 19:53:34 -08:00

2.3 KiB

raven-test-integration memory

Project purpose

Integration test project for AyaNova v8 API. Target: net8.0. Run with: dotnet test raven-integration.csproj

Key constants / config

  • API base: http://localhost:7575/api/v8/ (util.cs line 31)
  • Seeded logins: superuser (password: l3tm3in), BizAdmin, SubContractorRestricted
  • Seeded customer id=1 is always safe to reference in payloads
  • Time zone adjustment for date filters: -7 (util.cs TIME_ZONE_ADJUSTMENT)

Known good enum values used in tests

  • ContractOverrideType: PriceDiscount=1, CostMarkup=2
  • PMTimeUnit: Minutes=2, Hours=3, Days=4, Months=6, Years=7
  • AyaDaysOfWeek (flags): Mon=1,Tue=2,Wed=4,Thu=8,Fri=16,Sat=32,Sun=64 — 96 = Saturday|Sunday (used in PM tests)

DataList key names

Class names in AyaNova.DataList namespace ARE the list keys. Examples: WorkOrderDataList, CustomerDataList, QuoteDataList, PMDataList, ContractDataList

API response conventions

  • POST: 201, {data: full object}
  • GET: 200, {data: full object}
  • DELETE: 204, no body
  • Customer/QuoteItem/PMItem PUT: 200, {data: {Concurrency: N}} (just concurrency)
  • Quote/PM/Contract/WorkOrder header PUT: 200, {data: full object}
  • Concurrency conflict: 409
  • Referential integrity violation: 400, error.code = 2200
  • Not found: 404, error.code = 2010

Files written (Feb 2026 session)

  • Customer/CustomerCrud.cs — CRUD + concurrency + alert + referential integrity (2 tests)
  • Quote/QuoteCrud.cs — header CRUD + QuoteItem + QuoteItemLabor + concurrency + id-from-number
  • Contract/ContractCrud.cs — CRUD + concurrency (contract PUT returns full object)
  • PM/PMCrud.cs — header CRUD + PMItem + concurrency + id-from-number
  • DataList/DataListOperations.cs — SavedFilterCRUD (live) + filter/sort stubs (skipped)

DataList saved filter route

POST/GET/PUT/DELETE: /data-list-filter (NOT data-list-view — that was old) List endpoint: GET /data-list-filter/list?ListKey=WorkOrderDataList userId=0 in payload is fine; server assigns from auth token

Todo.md coverage status

Tier 1: DataList saved filter CRUD done; filter/sort stubs need browser payload capture Tier 1: Quote CRUD done Tier 1: Customer CRUD done Tier 2: Contract CRUD done Tier 2: PM CRUD done Tier 2: Auth roles, Schedule, Part — not yet started Tier 3: All not yet started