name: Continuous Integration Testing

on: push

jobs:
  unit-tests:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [16.x]
        test: [truthy-cms]

    steps:
      - uses: actions/checkout@v2
      - name: Use NodeJS ${{ matrix.node-version }}
        uses: actions/setup-node@v2
        with:
          node-version: ${{ matrix.node-version }}

      - name: Setup yarn
        run: npm install -g yarn

      - name: Setup Nodejs with yarn caching
        uses: actions/setup-node@v2
        with:
          node-version: ${{ matrix.node-version }}
          cache: yarn

      - name: Install dependencies
        run: yarn

      - name: Run unit test
        run: yarn test:unit

  e2e-test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: [16.x]
    needs: [unit-tests]
    steps:
      - uses: actions/checkout@v1
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v2
        with:
          node-version: ${{ matrix.node-version }}
      - name: Setup yarn
        run: npm install -g yarn

      - name: Setup Nodejs with yarn caching
        uses: actions/setup-node@v2
        with:
          node-version: ${{ matrix.node-version }}
          cache: yarn
      - name: Set Environment Variables
        uses: ./.github/actions/setvars
        with:
          varFilePath: ./.github/variables/myvars.env
      - name: Start Docker-Compose
        run: docker-compose -f docker-compose-test.yml up -d
      - name: Install dependencies
        run: yarn
      - name: Run tests
        run: yarn test:e2e
      - name: Stop Docker-Compose
        run: docker-compose -f docker-compose-test.yml down
