name: Unit Tests

on:
   push:
      branches: [ master ]
      
jobs:
   build:
      name: Unit Tests
      runs-on: ubuntu-latest
      steps:
      -  uses: actions/checkout@v3
         with:
            fetch-depth: 0
            
      -  name: Set up JDK 11
         uses: actions/setup-java@v3
         with:
            distribution: temurin
            java-version: 11
            cache: gradle
            
      -  name: Make gradlew executable
         run: chmod +x ./gradlew
      -  name: Build and Test
         run: |
           ./gradlew generateTestSource test jacocoTestReport --info -Dfull_test_suite=true
           ./gradlew --stop
         
      -  name: Publish Test Result
         uses: EnricoMi/publish-unit-test-result-action@v2
         id: test-results
         if: always()
         with:
            junit_files: build/test-results/**/*.xml
            fail_on: nothing
            ignore_runs: true
            json_thousands_separator: .
            time_unit: milliseconds
            
      -  name: Create Badge Color
         shell: bash
         run: |
            case ${{ fromJSON( steps.test-results.outputs.json ).conclusion }} in
              success)
                echo "BADGE_COLOR=31c653" >> $GITHUB_ENV
                ;;
              failure)
                echo "BADGE_COLOR=800000" >> $GITHUB_ENV
                ;;
              neutral)
                echo "BADGE_COLOR=696969" >> $GITHUB_ENV
                ;;
            esac

      -  name: Create Test Badge
         uses: emibcn/badge-action@v1.2.4
         with:
            label: Tests
            status: '${{ fromJSON( steps.test-results.outputs.json ).conclusion }}, Passed: ${{ fromJSON( steps.test-results.outputs.json ).formatted.stats.tests_succ }}, Skipped: ${{ fromJSON( steps.test-results.outputs.json ).formatted.stats.tests_skip }}, Failed: ${{ fromJSON( steps.test-results.outputs.json ).formatted.stats.tests_fail }}'
            color: ${{ env.BADGE_COLOR }}
            path: tests.svg

      -  name: Create Coverage Badge
         id: jacoco
         uses: cicirello/jacoco-badge-generator@v2
         with:
            jacoco-csv-file: build/reports/jacoco/test/jacocoTestReport.csv
            badges-directory: null
            intervals: 95 80 70 60 50 0
      
      -  name: Upload Test Badge
         uses: exuanbo/actions-deploy-gist@v1
         with:
            token: ${{ secrets.GIST_TOKEN }}
            gist_id: 280257cd19cbe1dda3789bebd4ff65cf
            file_path: tests.svg
            
      -  name: Upload Coverage Badge
         uses: exuanbo/actions-deploy-gist@v1
         with:
            token: ${{ secrets.GIST_TOKEN }}
            gist_id: 280257cd19cbe1dda3789bebd4ff65cf
            file_path: jacoco.svg