mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2024-11-14 14:45:52 -06:00
1a5f4c4591
* Update Branch in script * Feature/tweaks (#320) * update tweaks * Update Branch in script Co-authored-by: DeveloperDurp <DeveloperDurp@users.noreply.github.com> * Update Branch in script * Feature/applications (#326) * Update Branch in script * Feature/pester (#321) * Update Branch in script * pester for configs * Update Branch in script * update describe * github action * test pipeline * test pipeline * test pipeline * test pipeline * test pipeline * test windows container * gui tests * Updated applications.json to stop failing test * test pipeline * test pipeline * test pipeline * add test for original values if tweak is configured * test pipeline * test pipeline * remove merge request * added test to ensure main script functions Co-authored-by: ChrisTitusTech <ChrisTitusTech@users.noreply.github.com> Co-authored-by: DeveloperDurp <DeveloperDurp@users.noreply.github.com> * Update Branch in script * update pipeline * Update Branch in script * update pipeline * update pipeline * update pipeline * testing psmodule * Update Branch in script * update applications to use json Co-authored-by: DeveloperDurp <DeveloperDurp@users.noreply.github.com> Co-authored-by: ChrisTitusTech <ChrisTitusTech@users.noreply.github.com> * Update Branch in script * Feature/update runspace (#327) * Update Branch in script * update runspace * fix wording * update logic Co-authored-by: DeveloperDurp <DeveloperDurp@users.noreply.github.com> * Update Branch in script * Feature/Change-dns (#334) * Added option for change dns * Update Branch in script Co-authored-by: padsalatushal <padsalatushal@users.noreply.github.com> * Update Branch in script * Update test from hotfixes (#349) * Feature/pester (#321) * Update Branch in script * pester for configs * Update Branch in script * update describe * github action * test pipeline * test pipeline * test pipeline * test pipeline * test pipeline * test windows container * gui tests * Updated applications.json to stop failing test * test pipeline * test pipeline * test pipeline * add test for original values if tweak is configured * test pipeline * test pipeline * remove merge request * added test to ensure main script functions Co-authored-by: ChrisTitusTech <ChrisTitusTech@users.noreply.github.com> Co-authored-by: DeveloperDurp <DeveloperDurp@users.noreply.github.com> * Update Branch in script * Hotfix/fixapplications (#329) * Update Branch in script * fix typo Co-authored-by: DeveloperDurp <DeveloperDurp@users.noreply.github.com> * spelling (#332) * Update Branch in script * Update Branch in script Co-authored-by: DeveloperDurp <developerdurp@durp.info> Co-authored-by: ChrisTitusTech <ChrisTitusTech@users.noreply.github.com> Co-authored-by: DeveloperDurp <DeveloperDurp@users.noreply.github.com> Co-authored-by: Archead <55419973+archead@users.noreply.github.com> * Update Branch in script * fix install spam * Add Toggle for System Dark Mode (#358) * Add Dark Mode System Toggles * Add Dark Mode System Buttons * Try to combine Dark Mode Toggles * Remove Dark Mode System Button test * Fix text i forgot to change between tests. * Add Disable and Enable Mouse Acceleration Tweaks (#362) Co-authored-by: Chris Titus <contact@christitus.com> * New Apps and winget install * Change mouse hover time * Add Ultimate Performance add/remove buttons (#367) * Add Dark Mode System Toggles * Add Dark Mode System Buttons * Try to combine Dark Mode Toggles * Remove Dark Mode System Button test * Fix text i forgot to change between tests. * Add Ultimate Performance * Add ultimate performance button * setting correct username for mainwindow for testing (revert before pull) * fix typo * Update MainWindow.xaml * add ult perf buttons * add remove button for ult perf plan * remove setactive command for powercfg due to incompatibility * Update winutil.ps1 * set back to christitus github for mainwin download * remove thing i added that isnt needed * Autologin fix - curl addition * remove powerrun * fix uneven buttons * fix gui uniformity * Update winutil.ps1 * Update Branch in script * Update runspace.ps1 * Update Branch in script Co-authored-by: ChrisTitusTech <ChrisTitusTech@users.noreply.github.com> Co-authored-by: DeveloperDurp <developerdurp@durp.info> Co-authored-by: DeveloperDurp <DeveloperDurp@users.noreply.github.com> Co-authored-by: Padsala Tushal <57517785+padsalatushal@users.noreply.github.com> Co-authored-by: padsalatushal <padsalatushal@users.noreply.github.com> Co-authored-by: Archead <55419973+archead@users.noreply.github.com> Co-authored-by: lavavex <27239435+lavavex@users.noreply.github.com> Co-authored-by: sidibu <55976675+sidibu@users.noreply.github.com>
200 lines
8.1 KiB
PowerShell
200 lines
8.1 KiB
PowerShell
#region Configurable Variables
|
|
|
|
<#
|
|
.NOTES
|
|
Use this section to configure testing variables. IE if the number of tabs change in the GUI update that variable here.
|
|
All variables need to be global to be passed between contexts
|
|
|
|
#>
|
|
|
|
$global:FormName = "Chris Titus Tech's Windows Utility"
|
|
|
|
#endregion Configurable Variables
|
|
|
|
#region Load Variables needed for testing
|
|
|
|
#Config Files
|
|
$global:configs = @{}
|
|
|
|
(
|
|
"applications",
|
|
"tweaks",
|
|
"preset",
|
|
"feature"
|
|
) | ForEach-Object {
|
|
$global:configs["$PSItem"] = Get-Content .\config\$PSItem.json | ConvertFrom-Json
|
|
}
|
|
|
|
#GUI
|
|
$global:inputXML = get-content MainWindow.xaml
|
|
$global:inputXML = $global:inputXML -replace 'mc:Ignorable="d"', '' -replace "x:N", 'N' -replace '^<Win.*', '<Window'
|
|
[xml]$global:XAML = $global:inputXML
|
|
[void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework')
|
|
$global:reader = (New-Object System.Xml.XmlNodeReader $global:xaml)
|
|
$global:Form = [Windows.Markup.XamlReader]::Load( $global:reader )
|
|
$global:xaml.SelectNodes("//*[@Name]") | ForEach-Object { Set-Variable -Name "Global:WPF$($_.Name)" -Value $global:Form.FindName($_.Name) -Scope global }
|
|
|
|
#Variables to compare GUI to config files
|
|
$Global:GUIFeatureCount = ( $global:configs.feature.psobject.members | Where-Object {$psitem.MemberType -eq "NoteProperty"}).count
|
|
$Global:GUIApplicationCount = ($global:configs.applications.install.psobject.members | Where-Object {$psitem.MemberType -eq "NoteProperty"}).count
|
|
$Global:GUITweaksCount = ($global:configs.tweaks.psobject.members | Where-Object {$psitem.MemberType -eq "NoteProperty"}).count
|
|
|
|
#dotsource original script to pull in all variables and ensure no errors
|
|
$script = Get-Content .\winutil.ps1
|
|
$output = $script[0..($script.count - 3)] | Out-File .\pester.ps1
|
|
|
|
#endregion Load Variables needed for testing
|
|
|
|
#===========================================================================
|
|
# Tests - Config Files
|
|
#===========================================================================
|
|
|
|
Describe "Config Files" {
|
|
Context "Application installs" {
|
|
It "Imports with no errors" {
|
|
$global:configs.Applications | should -Not -BeNullOrEmpty
|
|
}
|
|
It "Json should be in correct format" {
|
|
$winget = $global:configs.applications.install.psobject.members | Where-Object {$psitem.MemberType -eq "NoteProperty"} | Select-Object Name,Value
|
|
$winget.name | should -BeLike "*Install*"
|
|
$winget.winget | should -Not -BeNullOrEmpty
|
|
}
|
|
}
|
|
|
|
Context "Preset" {
|
|
It "Imports with no errors" {
|
|
$global:configs.preset | should -Not -BeNullOrEmpty
|
|
}
|
|
It "Json should be in correct format" {
|
|
$preset = $global:configs.preset.psobject.members | Where-Object {$psitem.MemberType -eq "NoteProperty"} | Select-Object Name,Value
|
|
$preset.name | should -Not -BeNullOrEmpty
|
|
$preset.Value | should -BeLike "*Tweaks*"
|
|
}
|
|
}
|
|
|
|
Context "feature" {
|
|
It "Imports with no errors" {
|
|
$global:configs.feature | should -Not -BeNullOrEmpty
|
|
}
|
|
It "Json should be in correct format" {
|
|
$feature = $global:configs.feature.psobject.members | Where-Object {$psitem.MemberType -eq "NoteProperty"} | Select-Object Name,Value
|
|
$feature.name | should -BeLike "*Feature*"
|
|
$feature.Value | should -Not -BeNullOrEmpty
|
|
}
|
|
}
|
|
|
|
Context "tweaks" {
|
|
It "Imports with no errors" {
|
|
$global:configs.tweaks | should -Not -BeNullOrEmpty
|
|
}
|
|
It "Json should be in correct format" {
|
|
$tweaks = $global:configs.tweaks.psobject.members | Where-Object {$psitem.MemberType -eq "NoteProperty"} | Select-Object Name,Value
|
|
$tweaks.name | should -BeLike "*Tweaks*"
|
|
$tweaks.Value.registry | should -Not -BeNullOrEmpty
|
|
$tweaks.Value.Service | should -Not -BeNullOrEmpty
|
|
$tweaks.Value.ScheduledTask | should -Not -BeNullOrEmpty
|
|
$tweaks.Value.Appx | should -Not -BeNullOrEmpty
|
|
$tweaks.Value.InvokeScript | should -Not -BeNullOrEmpty
|
|
}
|
|
It "Original Values should be set" {
|
|
$tweaks = $global:configs.tweaks.psobject.members | Where-Object {$psitem.MemberType -eq "NoteProperty"} | Select-Object Name,Value
|
|
|
|
Foreach($tweak in $tweaks){
|
|
if($tweak.value.registry){
|
|
|
|
$values = $tweak.value | Select-Object -ExpandProperty registry
|
|
|
|
Foreach ($value in $values){
|
|
$value.OriginalValue | should -Not -BeNullOrEmpty
|
|
}
|
|
}
|
|
if($tweak.value.Service){
|
|
|
|
$values = $tweak.value | Select-Object -ExpandProperty Service
|
|
|
|
Foreach ($value in $values){
|
|
$value.OriginalType | should -Not -BeNullOrEmpty
|
|
}
|
|
}
|
|
if($tweak.value.ScheduledTask){
|
|
|
|
$values = $tweak.value | Select-Object -ExpandProperty ScheduledTask
|
|
|
|
Foreach ($value in $values){
|
|
$value.OriginalState | should -Not -BeNullOrEmpty
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#===========================================================================
|
|
# Tests - GUI
|
|
#===========================================================================
|
|
|
|
Describe "GUI" {
|
|
Context "XML" {
|
|
It "Imports with no errors" {
|
|
$global:XAML | should -Not -BeNullOrEmpty
|
|
}
|
|
It "Title should be $global:FormName" {
|
|
$global:XAML.window.Title | should -Be $global:FormName
|
|
}
|
|
}
|
|
|
|
Context "Form" {
|
|
It "Imports with no errors" {
|
|
$global:Form | should -Not -BeNullOrEmpty
|
|
}
|
|
It "Title should match XML" {
|
|
$global:Form.title | should -Be $global:XAML.window.Title
|
|
}
|
|
It "Features should be $Global:GUIFeatureCount" {
|
|
(get-variable | Where-Object {$psitem.name -like "*feature*" -and $psitem.value.GetType().name -eq "CheckBox"}).count | should -Be $Global:GUIFeatureCount
|
|
}
|
|
It "Applications should be $Global:GUIApplicationCount" {
|
|
(get-variable | Where-Object {$psitem.name -like "*install*" -and $psitem.value.GetType().name -eq "CheckBox"}).count | should -Be $Global:GUIApplicationCount
|
|
}
|
|
It "Tweaks should be $Global:GUITweaksCount" {
|
|
(get-variable | Where-Object {$psitem.name -like "*tweaks*" -and $psitem.value.GetType().name -eq "CheckBox"}).count | should -Be $Global:GUITweaksCount
|
|
}
|
|
}
|
|
}
|
|
|
|
#===========================================================================
|
|
# Tests - GUI
|
|
#===========================================================================
|
|
|
|
Describe "GUI Functions" {
|
|
|
|
It "GUI should load with no errors" {
|
|
. .\pester.ps1
|
|
$WPFTab1BT | should -Not -BeNullOrEmpty
|
|
$WPFundoall | should -Not -BeNullOrEmpty
|
|
$WPFPanelDISM | should -Not -BeNullOrEmpty
|
|
$WPFPanelAutologin | should -Not -BeNullOrEmpty
|
|
$WPFUpdatesdefault | should -Not -BeNullOrEmpty
|
|
$WPFFixesUpdate | should -Not -BeNullOrEmpty
|
|
$WPFUpdatesdisable | should -Not -BeNullOrEmpty
|
|
$WPFUpdatessecurity | should -Not -BeNullOrEmpty
|
|
$WPFFeatureInstall | should -Not -BeNullOrEmpty
|
|
$WPFundoall | should -Not -BeNullOrEmpty
|
|
$WPFDisableDarkMode | should -Not -BeNullOrEmpty
|
|
$WPFEnableDarkMode | should -Not -BeNullOrEmpty
|
|
$WPFtweaksbutton | should -Not -BeNullOrEmpty
|
|
$WPFminimal | should -Not -BeNullOrEmpty
|
|
$WPFlaptop | should -Not -BeNullOrEmpty
|
|
$WPFdesktop | should -Not -BeNullOrEmpty
|
|
$WPFInstallUpgrade | should -Not -BeNullOrEmpty
|
|
$WPFinstall | should -Not -BeNullOrEmpty
|
|
}
|
|
|
|
It "Get-CheckBoxes Install should return data" {
|
|
. .\pester.ps1
|
|
|
|
$WPFInstallvc2015_32.ischecked = $true
|
|
(Get-CheckBoxes -Group WPFInstall) | should -Not -BeNullOrEmpty
|
|
$WPFInstallvc2015_32.ischecked | should -be $false
|
|
}
|
|
} |