PSVirtualEnv.Tests.ps1

# ===========================================================================
# PSVirtualEnv.Tests.ps1 -----------------------------------------------------
# ===========================================================================
# dependencies ---------------------------------------------------------------
# ---------------------------------------------------------------------------

# settings -------------------------------------------------------------------
# ---------------------------------------------------------------------------
    
    # get module name and directory
    $Script:moduleName = "PSVirtualEnv"
    $Script:Dir = Split-Path -Path $MyInvocation.MyCommand.Path -Parent
    
    # set test flag
    $Env:PSVirtualEnv = 1

    # execute file with the specific module settings
    . (Join-Path -Path $Script:Dir -ChildPath ($Script:moduleName + ".Module.ps1"))

    # load essential functions
    . $Module.FunctionsFile

# test environment -----------------------------------------------------------
# ---------------------------------------------------------------------------

# module test ----------------------------------------------------------------
# ---------------------------------------------------------------------------

    # test general settings of module
    Describe -Tags 'ModuleSettings' "$Script:moduleName manifest" {
        It "has a valid module name" {
            Test-Path -Path $Module.Name | Should Not BeNullOrEmpty
        }
        
        It "has a valid directory" {
            {
                Test-Path -Path $Module.Dir 
            } | Should Not Throw
        }

        It "has a valid function directory" {
            {
                Test-Path -Path $Module.FunctionsDir
            } | Should Not Throw
        }

        It "has a valid test directory" {
            {
                Test-Path -Path $Module.TestsDir
            } | Should Not Throw
        }

        It "has a valid configuration file" {
            {
                Test-Path -Path $Module.Config 
            } | Should Not Throw
        }

        It "has a valid module scrip" {
            {
                Test-Path -Path $Module.ModuleFile 
            } | Should Not Throw
        }

        It "has a valid functions script" {
            {
                Test-Path -Path $Module.FunctionsFile 
            } | Should Not Throw
        }

    }

# tests ----------------------------------------------------------------------
# ---------------------------------------------------------------------------

    # invoke all scripts below listed with pester
    Get-ChildItem -Path $Module.TestsDir -Filter "*.ps1" | ForEach-Object {
        Invoke-Pester -Script  $_.FullName
    }

# end of tests ---------------------------------------------------------------
# ---------------------------------------------------------------------------
    $Env:PSVirtualEnv = $Null