name: "Tests"

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

on: [pull_request]
jobs:
  tests:
    name: Unit & E2E
    runs-on: ubuntu-latest

    steps:
    - name: Checkout repository
      uses: actions/checkout@v3
      with:
        # We must fetch at least the immediate parents so that if this is
        # a pull request then we can checkout the head.
        fetch-depth: 2
        # Fetch submodules
        submodules: recursive

    # If this run was triggered by a pull request event, then checkout
    # the head of the pull request instead of the merge commit.
    - run: git checkout HEAD^2
      if: ${{ github.event_name == 'pull_request' }}

    # This is a separate action that sets up buildx runner
    - name: Set up Docker Buildx
      uses: docker/setup-buildx-action@v2

    - name: Build Appwrite
      uses: docker/build-push-action@v3
      with:
        context: .
        push: false
        tags: appwrite-dev
        load: true
        cache-from: type=gha
        cache-to: type=gha,mode=max
        build-args: |
          DEBUG=false
          TESTING=true
          VERSION=dev

    - name: Start Appwrite
      run:  |
        docker compose up -d
        sleep 30

    - name: Doctor
      run: docker compose exec -T appwrite doctor

    - name: Environment Variables
      run:  docker compose exec -T appwrite vars

    - name: Run Tests
      run: docker compose exec -T appwrite test --debug