variables:
  CI: "true"
  RAILS_ENV: test

set_ruby_version:
  stage: build
  script:
    - echo "RUBY_VERSION=$(cat .ruby-version | sed 's/ruby-//g')" >> build.env
  artifacts:
    reports:
      dotenv: build.env
    expire_in: 1 week

rubocop:
  stage: test
  image: ruby:$RUBY_VERSION
  tags:
    - rails
  script:
    - wget --quiet "https://git-ce.rwth-aachen.de/noc-public/noc-netze-gitlab-cicd/-/raw/main/rails/rubocop.yml" -O ".rubocop.yml"
    - gem install rubocop:1.65.1 rubocop-capybara:2.21.0 rubocop-minitest:0.35.1 rubocop-performance:1.21.1 rubocop-rails:2.25.1 --silent
    - rubocop

erb_lint:
  stage: test
  image: ruby:$RUBY_VERSION
  tags:
    - rails
  script:
    - wget --quiet "https://git-ce.rwth-aachen.de/noc-public/noc-netze-gitlab-cicd/-/raw/main/rails/rubocop.yml" -O ".rubocop.yml"
    - wget --quiet "https://git-ce.rwth-aachen.de/noc-public/noc-netze-gitlab-cicd/-/raw/main/rails/erb-lint.yml" -O ".erb-lint.yml"
    - gem install rubocop:1.65.1 rubocop-capybara:2.21.0 rubocop-minitest:0.35.1 rubocop-performance:1.21.1 rubocop-rails:2.25.1 erb_lint:0.6.0 --silent
    - erblint --lint-all --allow-no-files true

haml_lint:
  stage: test
  image: ruby:$RUBY_VERSION
  tags:
    - rails
  script:
    - wget --quiet "https://git-ce.rwth-aachen.de/noc-public/noc-netze-gitlab-cicd/-/raw/main/rails/rubocop.yml" -O ".rubocop.yml"
    - wget --quiet "https://git-ce.rwth-aachen.de/noc-public/noc-netze-gitlab-cicd/-/raw/main/rails/haml-lint.yml" -O ".haml-lint.yml"
    - gem install rubocop:1.65.1 rubocop-capybara:2.21.0 rubocop-minitest:0.35.1 rubocop-performance:1.21.1 rubocop-rails:2.25.1 haml_lint:0.58.0 --silent
    - haml-lint

brakeman:
  stage: test
  image: ruby:$RUBY_VERSION
  tags:
    - rails
  script:
    - rm -f ./config/brakeman.yml ./config/brakeman.ignore
    - gem install brakeman:6.2.1 --silent
    - brakeman -A --except UnscopedFind

rails_test_all:
  stage: test
  image: ruby:$RUBY_VERSION
  tags:
    - rails
  services:
    - postgres:16.4
    - mariadb:10.1
    - name: selenium/standalone-chrome:latest
      alias: chrome
  variables:
    BUNDLE_PATH: vendor/bundle
    SELENIUM_URL: http://chrome:4444/wd/hub
    MYSQL_DATABASE: mysql
    MYSQL_USER: mysql
    MYSQL_PASSWORD: mysql
    MYSQL_ROOT_PASSWORD: mysql
    MYSQL_HOST: mariadb
    MYSQL_PORT: 3306
    POSTGRES_DB: postgres
    POSTGRES_USER: postgres
    POSTGRES_PASSWORD: postgres
    POSTGRES_URL: "postgresql://postgres:postgres@postgres:5432"
  cache:
    when: always
    paths:
      - vendor/bundle
  artifacts:
    when: always
    paths:
      - tmp/screenshots
      - log/test.log
    expire_in: 1 week
  script:
    - gem install bundler --silent
    - bundle install --jobs $(nproc) --quiet
    - bin/rails db:prepare test:all
