if (-not (Get-command Import-Excel -ErrorAction SilentlyContinue)) { Import-Module $PSScriptRoot\..\ImportExcel.psd1 } Describe "Test getting the schema of an Excel file" -Tag GetExcelFileSchema { BeforeAll { $script:excelFile = "TestDrive:\test.xlsx" $data = ConvertFrom-Csv @" Region,State,Units,Price West,Texas,927,923.71 North,Tennessee,466,770.67 East,Florida,520,458.68 East,Maine,828,661.24 West,Virginia,465,053.58 North,Missouri,436,235.67 South,Kansas,214,992.47 North,North Dakota,789,640.72 South,Delaware,712,508.55 "@ $data | Export-Excel $excelFile } It "Test Get-ExcelFileSchema function exists" { $function = Get-Command Get-ExcelFileSchema -ErrorAction SilentlyContinue $function | Should -Not -Be $null } It "Test Get-ExcelFileSchema returns json" { $actual = Get-ExcelFileSchema -Path $excelFile $actual | Should -Not -Be $null $actual | Should -BeOfType [string] } It "Test Get-ExcelFileSchema correct json" { $actual = Get-ExcelFileSchema -Path $excelFile $actual = $actual | ConvertFrom-Json $actual.ExcelFile | Should -BeExactly "test.xlsx" $actual.WorksheetName | Should -BeExactly "Sheet1" $actual.Visible | Should -Be $true $actual.Rows | Should -Be 10 $actual.Columns | Should -Be 4 $actual.Address | Should -BeExactly "A1:D10" $actual.Path | Should -BeExactly ("TestDrive:" + [System.IO.Path]::DirectorySeparatorChar) $actual.PropertyNames.Count | Should -Be 4 $actual.PropertyNames[0] | Should -BeExactly "Region" $actual.PropertyNames[1] | Should -BeExactly "State" $actual.PropertyNames[2] | Should -BeExactly "Units" $actual.PropertyNames[3] | Should -BeExactly "Price" } }