name: vona-test-pg
on:
  push:
    branches:
      - main
jobs:
  test:
    strategy:
      fail-fast: false
      matrix:
        node-version: [24]
    runs-on: ubuntu-latest
    env:
      PNPM_CONFIG_MINIMUM_RELEASE_AGE: 0
    services:
      redis:
        image: redis:latest
        ports:
          - 6379:6379
      pg:
        image: postgres:17
        ports:
          - 5432:5432
        env:
          POSTGRES_PASSWORD: ''
          POSTGRES_HOST_AUTH_METHOD: trust
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-node@v6
        with:
          node-version: ${{ matrix.node-version }}
      - uses: pnpm/action-setup@v5
        with:
          version: 11.5.2
      - name: init
        run: npm run init
      - name: run A-Pay focused gate
        run: DATABASE_DEFAULT_CLIENT=pg npm run vona :bin:test -- test-pay/test/paymentSession.test.ts test-pay/test/payMock.test.ts test-pay/test/paypalProvider.test.ts test-pay/test/paypalLifecycle.test.ts test-pay/test/stripeProvider.test.ts test-pay/test/stripeLifecycle.test.ts test-pay/test/outbox.test.ts test-pay/test/webhook.test.ts --flavor=normal
        working-directory: vona
      - name: run Commerce stock contention gate
        run: |
          DATABASE_DEFAULT_CLIENT=pg npm run vona :bin:test -- commerce-trade/test/stockBalance.test.ts commerce-trade/test/stockReservation.test.ts commerce-trade/test/stockAudit.test.ts --flavor=normal
          DATABASE_DEFAULT_CLIENT=pg npm run vona :bin:test -- commerce-promotion/test/couponReservation.test.ts commerce-payment/test/paymentAttempt.test.ts --flavor=normal
          DATABASE_DEFAULT_CLIENT=pg npm run vona :bin:test -- commerce-trade/test/checkoutReservation.test.ts commerce-trade/test/checkoutTransaction.test.ts --flavor=normal
          DATABASE_DEFAULT_CLIENT=pg npm run vona :bin:test -- commerce-trade/test/orderSnapshot.test.ts --flavor=normal
          DATABASE_DEFAULT_CLIENT=pg npm run vona :bin:test -- commerce-trade/test/reservationExpiry.test.ts --flavor=normal
        working-directory: vona
      - name: run Commerce payment, shipment, and refund lifecycle gate
        run: DATABASE_DEFAULT_CLIENT=pg npm run vona :bin:test -- commerce-trade/test/paymentOutcome.test.ts commerce-trade/test/reservationExpiry.test.ts commerce-trade/test/shipment.test.ts commerce-trade/test/refundLifecycle.test.ts commerce-trade/test/shipmentRefundRace.test.ts --flavor=normal
        working-directory: vona
      - run: DATABASE_DEFAULT_CLIENT=pg npm run test
        working-directory: vona
      - run: DATABASE_DEFAULT_CLIENT=pg npm run build -- --flavor=ci
        working-directory: vona
      - run: pnpm -C ./dist/ci install
        working-directory: vona
      - run: DATABASE_DEFAULT_CLIENT=pg npm run play -- --mode=prod --flavor=ci
        working-directory: vona
