Exclude.Tests.ps1

. $PSScriptRoot\Exclude.ps1

Describe 'Exclude Unit Tests' -Tag 'Unit' {
    Context 'Get exclude patterns' {
        It 'Returns Thumbs.db, .DS_Store, .Spotlight-V100 and .Trashes by default' {
            $Patterns = Get-ExcludePatterns
            $Patterns | Should -Contain 'Thumbs.db'
            $Patterns | Should -Contain '.DS_Store'
            $Patterns | Should -Contain '.Spotlight-V100'
            $Patterns | Should -Contain '.Trashes'
        }

        It 'Appends extra patterns to default list' {
            $Patterns = Get-ExcludePatterns @('pattern1', 'pattern2')
            $Patterns | Should -Contain 'Thumbs.db'
            $Patterns | Should -Contain '.DS_Store'
            $Patterns | Should -Contain '.Spotlight-V100'
            $Patterns | Should -Contain '.Trashes'
            $Patterns | Should -Contain 'pattern1'
            $Patterns | Should -Contain 'pattern2'
        }

        It 'Returns no patterns if none passed and ClearDefaultExclude is True' {
            $Patterns = Get-ExcludePatterns -ClearDefaultExclude
            $Patterns | Should -BeNullOrEmpty
        }

        It 'Returns only extra patterns if ClearDefaultExclude is True' {
            $Patterns = Get-ExcludePatterns @('pattern1', 'pattern2') -ClearDefaultExclude
            $Patterns | Should -Not -Contain 'Thumbs.db'
            $Patterns | Should -Not -Contain '.DS_Store'
            $Patterns | Should -Not -Contain '.Spotlight-V100'
            $Patterns | Should -Not -Contain '.Trashes'
            $Patterns | Should -Contain 'pattern1'
            $Patterns | Should -Contain 'pattern2'
        }
    }
}