# PostgreSQL Unit Testing

name: PostgreSQL

on: ["push", "pull_request"]

jobs:
  
  test:
    runs-on: ubuntu-latest

    env:
      # Database backend configuration
      INVENTREE_DB_ENGINE: django.db.backends.postgresql
      INVENTREE_DB_NAME: inventree
      INVENTREE_DB_USER: inventree
      INVENTREE_DB_PASSWORD: password
      INVENTREE_DB_HOST: '127.0.0.1'
      INVENTREE_DB_PORT: 5432
      INVENTREE_DEBUG: info
      INVENTREE_MEDIA_ROOT: ./media
      INVENTREE_STATIC_ROOT: ./static

    services:
      postgres:
        image: postgres
        env:
          POSTGRES_USER: inventree
          POSTGRES_PASSWORD: password
        ports:
          - 5432:5432

    steps:
      - name: Checkout Code
        uses: actions/checkout@v2
      - name: Setup Python
        uses: actions/setup-python@v2
        with:
          python-version: 3.7
      - name: Install Dependencies
        run: |
          sudo apt-get install libpq-dev
          pip3 install invoke
          pip3 install psycopg2
          invoke install
      - name: Run Tests
        run: invoke test
      - name: Data Import Export
        run: |
          invoke migrate
          python3 ./InvenTree/manage.py flush --noinput
          invoke import-fixtures
          invoke export-records -f data.json
          python3 ./InvenTree/manage.py flush --noinput
          invoke import-records -f data.json
          invoke import-records -f data.json