name: Tests
on: [push, pull_request]

env:
  RAILS_ENV: test

jobs:
  test:
    runs-on: ubuntu-latest

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

      memcached:
        image: memcached:alpine
        ports: ['11211:11211']

    steps:
    - uses: actions/checkout@v4

    - name: Install additional packages
      run: |
        sudo apt-get update
        sudo apt-get install imagemagick

    - uses: actions/setup-node@v4
      with:
        cache: npm

    - run: npm install

    - uses: ruby/setup-ruby@v1
      with:
        ruby-version: 3.3
        bundler-cache: true

    - name: Setup environment
      run: ./script/gh-action-prepare

    - name: Lint assets
      run: npm run lint

    - name: Build assets
      run: bundle exec rails assets:precompile

    - name: Run test
      run: bundle exec rails test
