name: CI

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:

  scan_ruby:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v5

      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          bundler-cache: true

      - name: Scan for security vulnerabilities in Ruby dependencies
        run: |
          bundle exec bundler-audit --update
          bin/brakeman -q -w2 --no-pager

  lint:
    runs-on: ubuntu-latest

    env:
      DISABLE_BOOTSNAP: true
      DISABLE_BOOTSNAP_LOAD_PATH_CACHE: true

    steps:
      - uses: actions/checkout@v5

      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          bundler-cache: true

      - name: Run linters
        run: bin/rubocop --parallel

  test:
    runs-on: ubuntu-latest

    env:
      RAILS_ENV: test
      DATABASE_URL: postgres://postgres:postgres@localhost:5432
      DISABLE_BOOTSNAP: true
      DISABLE_BOOTSNAP_LOAD_PATH_CACHE: true

    services:
      postgres:
        image: postgres:17
        env:
          POSTGRES_PASSWORD: postgres
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
        ports:
          - 5432:5432

    steps:
      - uses: actions/checkout@v5

      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          bundler-cache: true

      - name: Create database
        run: |
          bin/rails db:test:prepare

      - name: Run tests
        run: bundle exec rake
