ScriptDeck.tests.ps1

#requires -Module ScriptDeck
#requires -Module Pester
describe ScriptDeck {
    context ProfileActions {
        it 'Creates actions that open a -URI' {
            $action = New-StreamDeckAction -Title GitHub -Uri https://github.com/
            $action.settings.path | should -Be https://github.com/
        }
        it 'Create actions that press a -HotKey' {
            $action = New-StreamDeckAction -HotKey "CTRL+V"
            $action.settings.hotkeys[0].KeyCtrl | should -Be $true
            $action.settings.hotkeys[0].VKeyCode | should -Be ([int][char]'V')
        }
    }
    context Plugins {
        it 'Can create and update plugins' {
            $tmpPath = if ($env:TEMP) { $env:TEMP } else { '/tmp' }
            $tmpPath = Join-Path $tmpPath (Get-Random)
            New-Item -ItemType Directory -Path $tmpPath
            Push-Location -Path $tmpPath
            $newPlugin = New-StreamDeckPlugin -Name MyTestPlugin -Author Me -Description "A brief description" -Icon NoIcon.png
            Update-StreamDeckPlugin -PluginPath MyTestPlugin.sdPlugin -AutoIncrement Patch
            Get-Content $newPlugin  -Raw | ConvertFrom-Json | Select-Object -ExpandProperty Version | Should -Be '0.1.1'
            Update-StreamDeckPlugin -PluginPath MyTestPlugin.sdPlugin -AutoIncrement Minor
            Get-Content $newPlugin  -Raw | ConvertFrom-Json | Select-Object -ExpandProperty Version | Should -Be '0.2'
            Update-StreamDeckPlugin -PluginPath MyTestPlugin.sdPlugin -AutoIncrement Major
            Get-Content $newPlugin  -Raw | ConvertFrom-Json | Select-Object -ExpandProperty Version | Should -Be '1.0'
            Pop-Location
            Remove-Item -Path $tmpPath -Recurse -Force
        }   
    }
}