diff --git a/private/Alias-Helper.ps1 b/private/Alias-Helper.ps1 index 661b2da..fa7a638 100644 --- a/private/Alias-Helper.ps1 +++ b/private/Alias-Helper.ps1 @@ -1,12 +1,18 @@ . $PSScriptRoot\..\classes\AliasPathMapping.ps1 function Get-Script-Path { - $moduleName = "quickpath" - $modulePath = (Get-Module -Name $moduleName -ListAvailable | Select-Object -First 1 -ExpandProperty Path) - $rootPath = Split-Path $modulePath -Parent - $rootPath = Split-Path $rootPath -Parent - - "$rootPath\aliases.json" + $appData = Join-Path $env:LOCALAPPDATA 'quickpath' + if (-not (Test-Path $appData)) { + New-Item -Path $appData -ItemType Directory -Force | Out-Null + } + + $file = Join-Path $appData 'aliases.json' + + if (-not (Test-Path $file)) { + '[]' | New-Item -Path $file -ItemType File -Force | Out-Null + } + + return $file } diff --git a/quickpath.psd1 b/quickpath.psd1 index 8045e98..35bffdf 100644 --- a/quickpath.psd1 +++ b/quickpath.psd1 @@ -12,7 +12,7 @@ RootModule = 'quickpath.psm1' # Version number of this module. - ModuleVersion = '0.0.0' + ModuleVersion = '0.0.3' # Supported PSEditions # CompatiblePSEditions = @() diff --git a/tests/Alias-Helper.Tests.ps1 b/tests/Alias-Helper.Tests.ps1 index 2a11819..e00ac56 100644 --- a/tests/Alias-Helper.Tests.ps1 +++ b/tests/Alias-Helper.Tests.ps1 @@ -11,6 +11,8 @@ Describe 'Alias-Helper' { $script:JSON_FILE_PATH = "$PSScriptRoot\aliases-test.json" $script:JSON_CONTENT = Get-Content -Path $script:JSON_FILE_PATH | ConvertFrom-Json + $env:LOCALAPPDATA = "localappdata" + Mock New-Item Mock Test-Path { return $true } } @@ -61,11 +63,26 @@ Describe 'Alias-Helper' { } } context 'Get-Script-Path' { - It 'Returns correct path' { - Mock Get-Module { @{Path = "moduleinstallfolder/moduleversion/modulepath" } } + It 'Creates directory and file if not exist' { + Mock Test-Path { return $false } + Mock New-Item Get-Script-Path - | Should -Be "moduleinstallfolder\aliases.json" + + Assert-MockCalled -CommandName New-Item -Times 2 -Exactly -Scope It + Assert-MockCalled -CommandName New-Item -Times 1 -Exactly -Scope It -ParameterFilter { + $Path -eq (Join-Path $env:LOCALAPPDATA 'quickpath') -and $ItemType -eq 'Directory' + } + Assert-MockCalled -CommandName New-Item -Times 1 -Exactly -Scope It -ParameterFilter { + $Path -eq (Join-Path (Join-Path $env:LOCALAPPDATA 'quickpath') 'aliases.json') -and $ItemType -eq 'File' + } + } + It 'Returns correct file path' { + $expectedPath = Join-Path (Join-Path $env:LOCALAPPDATA 'quickpath') 'aliases.json' + + $result = Get-Script-Path + + $result | Should -Be $expectedPath } } context 'Get-Alias' {