Private/Generator/Tests/Split-OpenApiGenWord.Tests.ps1

BeforeAll {
    $env:TCS_CONFIG_ROOT = Join-Path -Path $TestDrive -ChildPath 'config'
    $env:TCS_SKIP_UPDATE_CHECK = '1'
    $env:TCS_TELEMETRY_OPTOUT = '1'
    $ModuleRoot = Split-Path -Path (Split-Path -Path (Split-Path -Path $PSScriptRoot -Parent) -Parent) -Parent
    Import-Module -Name (Join-Path -Path $ModuleRoot -ChildPath 'tcs.openapi.psd1') -Force
    $RepoRoot = Split-Path -Path (Split-Path -Path $ModuleRoot -Parent) -Parent
    . (Join-Path -Path $RepoRoot -ChildPath 'tests/Helpers/New-TestOpenApiModel.ps1')
}

Describe 'Split-OpenApiGenWord' {
    It 'splits <Value>' -TestCases @(
        @{ Value = 'getPetById'; Expected = @('get', 'Pet', 'By', 'Id') }
        @{ Value = 'GetPetByID'; Expected = @('Get', 'Pet', 'By', 'ID') }
        @{ Value = 'list_all-pets'; Expected = @('list', 'all', 'pets') }
        @{ Value = 'XMLHttpRequest'; Expected = @('XML', 'Http', 'Request') }
        @{ Value = 'X-Request-Id'; Expected = @('X', 'Request', 'Id') }
        @{ Value = '$filter'; Expected = @('filter') }
        @{ Value = 'page[size]'; Expected = @('page', 'size') }
        @{ Value = 'v2Beta'; Expected = @('v2', 'Beta') }
        @{ Value = 'pets.find by tag'; Expected = @('pets', 'find', 'by', 'tag') }
    ) {
        param($Value, $Expected)
        $words = InModuleScope tcs.openapi -Parameters @{ Value = $Value } { param($Value) @(Split-OpenApiGenWord -Value $Value) }
        $words | Should -Be $Expected
    }

    It 'returns nothing for text without letters or digits' {
        InModuleScope tcs.openapi { @(Split-OpenApiGenWord -Value '$-_').Count } | Should -Be 0
        InModuleScope tcs.openapi { @(Split-OpenApiGenWord -Value '').Count } | Should -Be 0
    }
}