tests/content.tests.ps1

Get-Module Qlik-Cli | Remove-Module -Force
Import-Module (Resolve-Path "$PSScriptRoot\..\Qlik-Cli.psm1").Path
. (Resolve-Path "$PSScriptRoot\..\resources\content.ps1").Path
. (Resolve-Path "$PSScriptRoot\..\functions\helper.ps1").Path
. (Resolve-Path "$PSScriptRoot\..\resources\tag.ps1").Path
. (Resolve-Path "$PSScriptRoot\..\resources\customproperty.ps1").Path

Describe "New-QlikContentLibrary" {
  Mock Invoke-QlikPost -Verifiable {
    return ConvertFrom-Json $body
  }

  Context 'tag' {
    Mock Get-QlikTag -ParameterFilter {
      $filter -eq 'name eq ''Tag1'''
    } {
      return @{
        id = '0959aa45-92df-4fc7-b0e1-f316db3a2f42'
      }
    }

    Mock Get-QlikTag -ParameterFilter {
      $filter -eq 'name eq ''Tag2'''
    } {
      return @{
        id = '203b324e-c47d-4ffd-8510-68434d7f731e'
      }
    }

    It 'should be possible to assign a tag' {
      $lib = New-QlikContentLibrary `
        -name 'Test Library' `
        -tags 'Tag1'

      $lib.tags | Should -HaveCount 1

      Assert-VerifiableMock
    }

    It 'should be possible to assign multiple tags' {
      $lib = New-QlikContentLibrary `
        -name 'Test Library' `
        -tags 'Tag1', 'Tag2'

      $lib.tags | Should -HaveCount 2

      Assert-VerifiableMock
    }
  }

  Context 'custom property' {
    Mock Get-QlikCustomProperty {
      return @{
        id = '0959aa45-92df-4fc7-b0e1-f316db3a2f42'
      }
    }

    It 'should be possible to assign a custom property value' {
      $lib = New-QlikContentLibrary `
        -name 'Test Library' `
        -customProperties 'Test=Yes'

      $lib.customProperties | Should -HaveCount 1

      Assert-VerifiableMock
    }

    It 'should be possible to assign multiple custom properties' {
      $lib = New-QlikContentLibrary `
        -name 'Test Library' `
        -customProperties 'Test=Yes', 'Test=it works', 'Multi=Yes'

      $lib.customProperties | Should -HaveCount 3

      Assert-VerifiableMock
    }
  }
}