name: Unit Tests

on:
  workflow_dispatch:
  
  push:
    branches: [ develop ]
  
  pull_request:

jobs:
  tests:
    name: Tests
    runs-on: macos-12

    concurrency:
      # When running on develop, use the sha to allow all runs of this workflow to run concurrently.
      # Otherwise only allow a single run of this workflow on each branch, automatically cancelling older runs.
      group: ${{ github.ref == 'refs/heads/develop' && format('unit-tests-develop-{0}', github.sha) || format('unit-tests-{0}', github.ref) }}
      cancel-in-progress: true

    steps:
      - uses: actions/checkout@v3

      - name: Brew bundle
        run:
          brew update && brew bundle && brew upgrade swiftformat

      - uses: actions/cache@v3
        with:
          path: vendor/bundle
          key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
          restore-keys: |
            ${{ runner.os }}-gems-

      - name: Bundle install
        run: |
          bundle config path vendor/bundle
          bundle install --jobs 4 --retry 3
      
      - name: Run tests
        run: bundle exec fastlane unit_tests
      
      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v3