name: NocoBase Test Lite

on:
  push:
    branches:
      - main
      - develop
    paths:
      - 'packages/**'
      - '!packages/core/acl/**'
      - '!packages/core/actions/**'
      - '!packages/core/database/**'
      - '!packages/core/server/**'
      - '!packages/plugins/**/src/server/**'
  pull_request:
    paths:
      - 'packages/**'
      - '!packages/core/acl/**'
      - '!packages/core/actions/**'
      - '!packages/core/database/**'
      - '!packages/core/server/**'
      - '!packages/plugins/**/src/server/**'

jobs:
  build-test:
    strategy:
      matrix:
        node_version: ['18']
    runs-on: ubuntu-latest
    container: node:${{ matrix.node_version }}
    steps:
      - uses: actions/checkout@v2
      - name: Use Node.js ${{ matrix.node_version }}
        uses: actions/setup-node@v2
        with:
          node-version: ${{ matrix.node_version }}
          cache: 'yarn'
      - run: yarn install
      - run: yarn build
    timeout-minutes: 15

  postgres-test:
    strategy:
      matrix:
        node_version: ['18']
    runs-on: ubuntu-latest
    container: node:${{ matrix.node_version }}
    services:
      # Label used to access the service container
      postgres:
        # Docker Hub image
        image: postgres:10
        # Provide the password for postgres
        env:
          POSTGRES_USER: nocobase
          POSTGRES_PASSWORD: password
        # Set health checks to wait until postgres has started
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
    steps:
      - uses: actions/checkout@v2
      - name: Use Node.js ${{ matrix.node_version }}
        uses: actions/setup-node@v2
        with:
          node-version: ${{ matrix.node_version }}
          cache: 'yarn'
      - run: yarn install
      - name: Test with postgres
        run: yarn nocobase install -f && yarn test && yarn test:client
        env:
          DB_DIALECT: postgres
          DB_HOST: postgres
          DB_PORT: 5432
          DB_USER: nocobase
          DB_PASSWORD: password
          DB_DATABASE: nocobase
          DB_UNDERSCORED: true
          DB_SCHEMA: nocobase
          COLLECTION_MANAGER_SCHEMA: user_schema
    timeout-minutes: 30