pipeline{
    agent any

    environment {
        DJANGO_SECRET_KEY = 'test-secret-key-for-ci'
        DJANGO_SETTINGS_MODULE = "expenses_manager.settings"
        PYTHONUNBUFFERED = "1"
    }

    stages {
        stage('Checkout') {
            steps {
                checkout scm
            }
        }

        stage('Setup Python') {
            steps {
                sh '''
                    cd expenses_manager
                    python --version
                    python -m venv venv
                    . venv/bin/activate
                    pip install --upgrade pip
                    pip install -r requirements.txt
                '''
            }            
        }

        stage('Run tests') {
            steps {
                sh '''
                    cd expenses_manager

                    . venv/bin/activate
                    export SECRET_KEY=$DJANGO_SECRET_KEY
                    venv/bin/pytest --cov
                '''
            }
        }
    }

    post {
        always {
            echo 'Pipeline finished.'
        }
        failure {
            echo 'Tests failed.'
        }
    }
}