# MySQL Unit Testing

name: MySQL

on:
  push:
    branches-ignore:
      - l10*

  pull_request:
    branches-ignore:
      - l10*

jobs:

  test:
    runs-on: ubuntu-latest

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

    services:
      mysql:
        image: mysql:latest
        env:
          MYSQL_ALLOW_EMPTY_PASSWORD: yes
          MYSQL_DATABASE: inventree
          MYSQL_USER: inventree
          MYSQL_PASSWORD: password
          MYSQL_ROOT_PASSWORD: password
        options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3
        ports:
          - 3306:3306

    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 mysql-server libmysqlclient-dev
          pip3 install invoke
          pip3 install mysqlclient
          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