name: Test
on:
  pull_request:
  push:
    branches:
      - main
jobs:
  main:
    runs-on: ubuntu-latest
    env:
      MIX_ENV: test
    steps:
      - uses: actions/checkout@v2
      - name: Install Erlang & Elixir
        uses: erlef/setup-beam@v1
        with:
          otp-version: '24.0'
          elixir-version: '1.13.0'
      - name: Cache Mix
        uses: actions/cache@v2
        with:
          path: |
            deps
            _build
          key: ${{ runner.os }}-mix-${{ hashFiles('**/mix.lock') }}
          restore-keys: |
            ${{ runner.os }}-mix-
      - name: Install mix dependencies
        run: mix deps.get
      - name: Check formatting
        run: mix format --check-formatted
      - name: Check warnings
        run: mix compile --warnings-as-errors
      - name: Run tests
        run: elixir --cookie "COOKIEFORTESTS" -S mix test
      - name: Install Node
        uses: actions/setup-node@v2
        with:
          node-version: '14.x'
      - name: Cache npm dependencies
        uses: actions/cache@v2
        with:
          path: ~/.npm
          key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
          restore-keys: |
            ${{ runner.os }}-node-
      - name: Install npm dependencies
        run: npm ci --prefix assets
      - name: Check assets formatting
        run: npm run format-check --prefix assets
      - name: Run assets tests
        run: npm test --prefix assets
