diff --git a/build/scripts/NewBcContainer.ps1 b/build/scripts/NewBcContainer.ps1
index d6e98d84794..1426435eb65 100644
--- a/build/scripts/NewBcContainer.ps1
+++ b/build/scripts/NewBcContainer.ps1
@@ -24,6 +24,64 @@ if ($platformVersion) {
New-BcContainer @parameters
+if ($parameters.auth -in @('UserPassword', 'NavUserPassword')) {
+ if (-not $parameters.credential) {
+ throw "The BCApps UserPassword test container requires a credential."
+ }
+
+ $apiTestPasswordFile = 'C:\Run\my\ApiTestPassword'
+ $apiTestPassword = $parameters.credential.GetNetworkCredential().Password
+ $hostPasswordFile = Join-Path ([System.IO.Path]::GetTempPath()) "BCAppsApiTestPassword-$([Guid]::NewGuid().ToString('N'))"
+ try {
+ [System.IO.File]::WriteAllText($hostPasswordFile, $apiTestPassword)
+
+ try {
+ Copy-FileToBcContainer -containerName $parameters.ContainerName -localPath $hostPasswordFile -containerPath $apiTestPasswordFile
+ Invoke-ScriptInBcContainer -containerName $parameters.ContainerName -argumentList $apiTestPasswordFile -scriptblock {
+ param(
+ [string]$FilePath
+ )
+
+ $fileSecurity = [System.Security.AccessControl.FileSecurity]::new()
+ $fileSecurity.SetAccessRuleProtection($true, $false)
+ foreach ($accessEntry in @(
+ @{ Sid = 'S-1-5-18'; Rights = [System.Security.AccessControl.FileSystemRights]::FullControl },
+ @{ Sid = 'S-1-5-20'; Rights = [System.Security.AccessControl.FileSystemRights]::Read },
+ @{ Sid = 'S-1-5-32-544'; Rights = [System.Security.AccessControl.FileSystemRights]::FullControl }
+ )) {
+ $identity = [System.Security.Principal.SecurityIdentifier]::new($accessEntry.Sid)
+ $accessRule = [System.Security.AccessControl.FileSystemAccessRule]::new(
+ $identity,
+ $accessEntry.Rights,
+ [System.Security.AccessControl.AccessControlType]::Allow)
+ $fileSecurity.AddAccessRule($accessRule)
+ }
+ Set-Acl -LiteralPath $FilePath -AclObject $fileSecurity
+ }
+ }
+ catch {
+ $originalError = $_
+ try {
+ Invoke-ScriptInBcContainer -containerName $parameters.ContainerName -argumentList $apiTestPasswordFile -scriptblock {
+ param(
+ [string]$FilePath
+ )
+
+ Remove-Item -LiteralPath $FilePath -Force -ErrorAction SilentlyContinue
+ }
+ }
+ catch {
+ Write-Warning "Could not remove the API test credential file after setup failed."
+ }
+ throw $originalError
+ }
+ }
+ finally {
+ Remove-Item -LiteralPath $hostPasswordFile -Force -ErrorAction SilentlyContinue
+ Clear-Variable apiTestPassword -ErrorAction SilentlyContinue
+ }
+}
+
Set-BcContainerServerConfiguration -containerName $parameters.ContainerName -keyName "EnforceUserPathForAlFileOperations" -keyValue "false"
Set-BcContainerServerConfiguration -containerName $parameters.ContainerName -keyName "UsePermissionSetsFromExtensions" -keyValue "true"
Restart-BcContainer -containerName $parameters.ContainerName
diff --git a/build/scripts/ParallelTestExecution.psm1 b/build/scripts/ParallelTestExecution.psm1
index 2d6e2b669e7..3c95789e0fe 100644
--- a/build/scripts/ParallelTestExecution.psm1
+++ b/build/scripts/ParallelTestExecution.psm1
@@ -14,6 +14,148 @@ if (-not (Get-Command Write-Log -ErrorAction SilentlyContinue)) {
}
Import-Module (Join-Path $PSScriptRoot "ALAppBuild.psm1" -Resolve)
+<#
+.SYNOPSIS
+ Determines whether a disabled-test entry applies to the current country.
+#>
+function Test-DisabledTestAppliesToCountry {
+ param(
+ $DisabledTest,
+ [string]$Country
+ )
+
+ if (-not $DisabledTest.PSObject.Properties['countries']) {
+ return $true
+ }
+
+ return $Country -in @($DisabledTest.countries)
+}
+
+<#
+.SYNOPSIS
+ Gets disabled test entries for an app and filters country-scoped entries.
+.PARAMETER AppName
+ Application name used to locate its DisabledTests folder.
+#>
+function Get-DisabledTestsForApp {
+ param(
+ [Parameter(Mandatory=$true)]
+ [string]$AppName
+ )
+
+ $appFolderName = $AppName -replace ' ', '_'
+ $disabledTests = @()
+ $country = Get-ALGoSetting -Key "country"
+
+ $disabledTestsFolders = Get-ChildItem -Path (Get-BaseFolder) -Filter "DisabledTests" -Recurse -Directory
+ foreach ($disabledTestsFolder in $disabledTestsFolders) {
+ $appFolder = Join-Path $disabledTestsFolder.FullName $appFolderName
+ if (-not (Test-Path $appFolder)) {
+ continue
+ }
+
+ foreach ($jsonFile in (Get-ChildItem -Path $appFolder -Filter "*.json")) {
+ $disabledTests += @(
+ Get-Content -Raw -Path $jsonFile.FullName |
+ ConvertFrom-Json |
+ Where-Object { Test-DisabledTestAppliesToCountry -DisabledTest $_ -Country $country }
+ )
+ }
+ }
+
+ return @($disabledTests)
+}
+
+function Get-ParametersForCommand {
+ param(
+ [Parameter(Mandatory=$true)]
+ [Hashtable]$Parameters,
+ [Parameter(Mandatory=$true)]
+ [string]$CommandName
+ )
+
+ $command = Get-Command $CommandName -ErrorAction Stop
+ $filtered = @{}
+ foreach ($key in $Parameters.Keys) {
+ if ($command.Parameters.ContainsKey($key)) {
+ $filtered[$key] = $Parameters[$key]
+ }
+ }
+ return $filtered
+}
+
+function ConvertTo-RequiredDisabledWorkItems {
+ param(
+ [array]$DiscoveredTests,
+ [string]$AppName,
+ [string]$AppId
+ )
+
+ $codeunits = @()
+ foreach ($entry in @($DiscoveredTests)) {
+ if ($entry.PSObject.Properties.Name -contains "Codeunits") {
+ $codeunits += @($entry.Codeunits)
+ } else {
+ $codeunits += $entry
+ }
+ }
+
+ return @(
+ $codeunits |
+ Where-Object { $_ -and $_.Id -and @($_.Tests).Count -gt 0 } |
+ ForEach-Object {
+ [PSCustomObject]@{
+ Key = "${AppName}::$($_.Id)"
+ AppName = $AppName
+ AppId = $AppId
+ CodeunitId = [string]$_.Id
+ CodeunitName = [string]$_.Name
+ TestCount = @($_.Tests).Count
+ }
+ }
+ )
+}
+
+function Get-RequiredDisabledWorkItems {
+ param(
+ [Parameter(Mandatory=$true)]
+ [Hashtable]$Parameters,
+ [Parameter(Mandatory=$true)]
+ [string]$TestType,
+ [string[]]$AppNamesToTest,
+ [Parameter(Mandatory=$true)]
+ [Hashtable]$AppIdByName
+ )
+
+ $workItems = @()
+ foreach ($appName in $AppNamesToTest) {
+ $appId = $AppIdByName[$appName]
+ if (-not $appId) {
+ continue
+ }
+
+ $discoveryParameters = Get-ParametersForCommand -Parameters $Parameters -CommandName "Get-TestsFromBcContainer"
+ $discoveryParameters["extensionId"] = $appId
+ $discoveryParameters["requiredTestIsolation"] = "Disabled"
+ $discoveryParameters["disabledTests"] = @(Get-DisabledTestsForApp -AppName $appName)
+ if ($TestType -eq "Legacy") {
+ $discoveryParameters.Remove("testType") | Out-Null
+ } else {
+ $discoveryParameters["testType"] = $TestType
+ }
+
+ Write-Host "Discovering RequiredTestIsolation=Disabled codeunits in '$appName'..."
+ $discoveredTests = @(Get-TestsFromBcContainer @discoveryParameters)
+ $appWorkItems = @(ConvertTo-RequiredDisabledWorkItems -DiscoveredTests $discoveredTests -AppName $appName -AppId $appId)
+ if ($appWorkItems.Count -gt 0) {
+ Write-Host " Found $($appWorkItems.Count) codeunit(s), $((($appWorkItems | Measure-Object TestCount -Sum).Sum)) test method(s)."
+ $workItems += $appWorkItems
+ }
+ }
+
+ return @($workItems)
+}
+
<#
.SYNOPSIS
Returns the rerun budget for the current build.
@@ -196,6 +338,16 @@ function Get-AppNamesForBucket {
return @($InstalledTestAppNames | Where-Object { $_ -notin $allLegacyTestApps })
}
+function Get-CleanTenantTestAppNames {
+ $testConfigPath = Join-Path (Get-BaseFolder) "build\scripts\TestConfiguration.json"
+ if (-not (Test-Path $testConfigPath)) {
+ return @()
+ }
+
+ $testConfig = Get-Content $testConfigPath -Raw | ConvertFrom-Json
+ return @($testConfig.CleanTenantRequiredDisabled)
+}
+
<#
.SYNOPSIS
Gets the list of operational tenants in a BC container.
@@ -204,18 +356,211 @@ function Get-AppNamesForBucket {
.OUTPUTS
[string[]] Array of tenant IDs that are in Operational state.
#>
-function Get-AvailableBcTenants {
+function Get-AvailableBcTenantInfo {
param(
[Parameter(Mandatory=$true)]
[string]$containerName
)
$tenants = Invoke-ScriptInBcContainer -containerName $containerName -scriptblock {
- Get-NavTenant $ServerInstance | Where-Object { $_.State -eq "Operational" } | ForEach-Object { $_.Id }
+ Get-NavTenant $ServerInstance |
+ Where-Object { $_.State -eq "Operational" } |
+ ForEach-Object {
+ [PSCustomObject]@{
+ Id = $_.Id
+ DatabaseName = $_.DatabaseName
+ }
+ }
}
return @($tenants)
}
+<#
+.SYNOPSIS
+ Gets the IDs of operational tenants in a BC container.
+.PARAMETER containerName
+ Name of the BC container.
+#>
+function Get-AvailableBcTenants {
+ param(
+ [Parameter(Mandatory=$true)]
+ [string]$containerName
+ )
+
+ return @(
+ Get-AvailableBcTenantInfo -containerName $containerName |
+ ForEach-Object { $_.Id }
+ )
+}
+
+function New-BcTestTenantTemplate {
+ param(
+ [Parameter(Mandatory=$true)]
+ [string]$ContainerName,
+ [Parameter(Mandatory=$true)]
+ [string]$SourceDatabaseName
+ )
+
+ $result = @(Invoke-ScriptInBcContainer -containerName $ContainerName -useSession $false -scriptblock { Param($sourceDatabaseName)
+ $templateDatabaseName = "$sourceDatabaseName-test-template"
+ $maxAttempts = 3
+ $retryDelaySeconds = 5
+ for ($attempt = 1; $attempt -le $maxAttempts; $attempt++) {
+ try {
+ if (Test-NAVDatabase -DatabaseName $templateDatabaseName) {
+ Remove-NAVDatabase -DatabaseName $templateDatabaseName | Out-Null
+ }
+
+ Write-Host "Creating immutable test tenant template '$templateDatabaseName' from '$sourceDatabaseName' (attempt $attempt/$maxAttempts)..."
+ Copy-NAVDatabase -SourceDatabaseName $sourceDatabaseName -DestinationDatabaseName $templateDatabaseName -DatabaseServer "." | Out-Null
+ break
+ } catch {
+ Write-Host "WARNING: Template database copy failed on attempt $attempt/${maxAttempts}: $($_.Exception.Message)"
+ if ($attempt -eq $maxAttempts) {
+ throw "Failed to create a test tenant template from '$sourceDatabaseName' after $maxAttempts attempts. Last error: $($_.Exception.Message)"
+ }
+ Start-Sleep -Seconds $retryDelaySeconds
+ }
+ }
+ $templateDatabaseName
+ } -argumentList $SourceDatabaseName)
+
+ if ($result.Count -eq 0) {
+ throw "Creating the clean test tenant template returned no database name."
+ }
+ return [string]$result[-1]
+}
+
+<#
+.SYNOPSIS
+ Replaces a tenant database with a copy of the immutable test template.
+.PARAMETER ContainerName
+ Name of the BC container.
+.PARAMETER Tenant
+ Tenant ID to refresh.
+.PARAMETER TenantDatabaseName
+ Database currently mounted for the tenant.
+.PARAMETER TemplateDatabaseName
+ Immutable source database copied before the next test codeunit.
+#>
+function Reset-BcTestTenant {
+ param(
+ [Parameter(Mandatory=$true)]
+ [string]$ContainerName,
+ [Parameter(Mandatory=$true)]
+ [string]$Tenant,
+ [Parameter(Mandatory=$true)]
+ [string]$TenantDatabaseName,
+ [Parameter(Mandatory=$true)]
+ [string]$TemplateDatabaseName
+ )
+
+ Invoke-ScriptInBcContainer -containerName $ContainerName -useSession $false -scriptblock {
+ Param($tenant, $tenantDatabaseName, $templateDatabaseName)
+
+ $stopwatch = [System.Diagnostics.Stopwatch]::StartNew()
+ $mountedTenant = Get-NAVTenant -ServerInstance $ServerInstance -Tenant $tenant -ErrorAction SilentlyContinue
+ if ($mountedTenant) {
+ Dismount-NAVTenant -ServerInstance $ServerInstance -Tenant $tenant -Force | Out-Null
+ }
+
+ $maxAttempts = 3
+ $retryDelaySeconds = 5
+ for ($attempt = 1; $attempt -le $maxAttempts; $attempt++) {
+ try {
+ if (Test-NAVDatabase -DatabaseName $tenantDatabaseName) {
+ Remove-NAVDatabase -DatabaseName $tenantDatabaseName | Out-Null
+ }
+
+ Copy-NAVDatabase -SourceDatabaseName $templateDatabaseName -DestinationDatabaseName $tenantDatabaseName -DatabaseServer "." | Out-Null
+ break
+ } catch {
+ Write-Host "WARNING: Tenant database refresh failed on attempt $attempt/${maxAttempts}: $($_.Exception.Message)"
+ if ($attempt -eq $maxAttempts) {
+ throw "Failed to refresh tenant database '$tenantDatabaseName' after $maxAttempts attempts. Last error: $($_.Exception.Message)"
+ }
+ Start-Sleep -Seconds $retryDelaySeconds
+ }
+ }
+ Mount-NAVTenant -ServerInstance $ServerInstance -Id $tenant -DatabaseServer "." -DatabaseName $tenantDatabaseName -OverwriteTenantIdInDatabase -Force | Out-Null
+
+ $maxWaitSeconds = 300
+ while ((Get-NAVTenant -ServerInstance $ServerInstance -Tenant $tenant).State -eq "Mounting") {
+ if ($stopwatch.Elapsed.TotalSeconds -ge $maxWaitSeconds) {
+ throw "Tenant '$tenant' did not finish mounting within $maxWaitSeconds seconds."
+ }
+ Start-Sleep -Milliseconds 250
+ }
+
+ $state = (Get-NAVTenant -ServerInstance $ServerInstance -Tenant $tenant).State
+ if ($state -notin @("Operational", "OperationalWithWarnings")) {
+ throw "Tenant '$tenant' is '$state' after refresh; expected an operational state."
+ }
+
+ $stopwatch.Stop()
+ Write-Host "Refreshed tenant '$tenant' from '$templateDatabaseName' in $([math]::Round($stopwatch.Elapsed.TotalSeconds, 2)) seconds."
+ } -argumentList $Tenant, $TenantDatabaseName, $TemplateDatabaseName
+}
+
+function Remove-BcTestTenantTemplate {
+ param(
+ [Parameter(Mandatory=$true)]
+ [string]$ContainerName,
+ [Parameter(Mandatory=$true)]
+ [string]$TemplateDatabaseName
+ )
+
+ Invoke-ScriptInBcContainer -containerName $ContainerName -scriptblock { Param($templateDatabaseName)
+ if (Test-NAVDatabase -DatabaseName $templateDatabaseName) {
+ Remove-NAVDatabase -DatabaseName $templateDatabaseName | Out-Null
+ }
+ } -argumentList $TemplateDatabaseName
+}
+
+function Set-BcTestTaskScheduler {
+ param(
+ [Parameter(Mandatory=$true)]
+ [string]$ContainerName,
+ [Parameter(Mandatory=$true)]
+ [bool]$Enabled
+ )
+
+ Invoke-ScriptInBcContainer -containerName $ContainerName -scriptblock { Param($enabled)
+ $state = if ($enabled) { "Enabling" } else { "Disabling" }
+ $value = if ($enabled) { "true" } else { "false" }
+ Write-Host "$state Task Scheduler for clean RequiredTestIsolation=Disabled execution..."
+ Set-NAVServerConfiguration -ServerInstance $ServerInstance -KeyName "EnableTaskScheduler" -KeyValue $value -WarningAction SilentlyContinue
+ Set-NAVServerInstance -ServerInstance $ServerInstance -Restart
+
+ $maxWaitSeconds = 300
+ $stopwatch = [System.Diagnostics.Stopwatch]::StartNew()
+ while (Get-NAVTenant $ServerInstance | Where-Object { $_.State -eq "Mounting" }) {
+ if ($stopwatch.Elapsed.TotalSeconds -ge $maxWaitSeconds) {
+ throw "Tenants did not finish mounting within $maxWaitSeconds seconds after changing Task Scheduler state."
+ }
+ Start-Sleep -Milliseconds 250
+ }
+ } -argumentList $Enabled
+}
+
+function Enable-BcTestTaskScheduler {
+ param(
+ [Parameter(Mandatory=$true)]
+ [string]$ContainerName
+ )
+
+ Set-BcTestTaskScheduler -ContainerName $ContainerName -Enabled $true
+}
+
+function Disable-BcTestTaskScheduler {
+ param(
+ [Parameter(Mandatory=$true)]
+ [string]$ContainerName
+ )
+
+ Set-BcTestTaskScheduler -ContainerName $ContainerName -Enabled $false
+}
+
<#
.SYNOPSIS
Merges multiple test result XML files into a single file.
@@ -297,7 +642,9 @@ function Merge-TestResultFiles {
Any of these fingerprints is sufficient evidence: "Cannot open page 130455",
"InvokeInteractions failed with status code 500", or a stack frame referencing
"InteractionManager.cs:line N" (line number not pinned, so platform refactors do not
- silently invalidate the match).
+ silently invalidate the match). The platform can also fail while page 130455 resolves an
+ extension's codeunit metadata; the known variants surface from ExtensionId_a45_OnValidate
+ as an invalid metadata BLOB range or a missing nullable metadata value.
.PARAMETER Output
The combined output (stdout + stderr + verbose) captured from a finished background
job. Null or empty returns $false.
@@ -308,7 +655,13 @@ function Test-TransientTestFailure {
)
if ([string]::IsNullOrEmpty($Output)) { return $false }
- return [bool]($Output -match 'Cannot open page 130455|InvokeInteractions failed with status code 500|InteractionManager\.cs:line \d+')
+ return [bool](
+ ($Output -match 'TRANSIENT TEST PLATFORM RACE') -or
+ ($Output -match 'ClientSession State is InError') -or
+ ($Output -match 'Cannot open page 130455|InvokeInteractions failed with status code 500|InteractionManager\.cs:line \d+') -or
+ ($Output -match '(?s)ObjName:Command Line Test Tool.*MethodName:ExtensionId_a45_OnValidate.*(?:Offset and length were out of bounds|Nullable object must have a value)') -or
+ ($Output -match '(?s)GET request failed\..*Response code is 500.*Object reference not set to an instance of an object')
+ )
}
<#
@@ -403,6 +756,7 @@ function Start-TestAppDispatch {
[string]$ScriptPath,
[string]$TestType,
$State,
+ [switch]$SkipAutomaticDisabledPass,
[string]$Verb = 'Dispatching',
[string]$FileSuffix
)
@@ -414,12 +768,149 @@ function Start-TestAppDispatch {
$appParams['extensionId'] = $AppId
$appParams.Remove('ReRun') | Out-Null
- $job = Start-TestJob -parameters $appParams -tenant $Tenant -scriptPath $ScriptPath -testType $TestType -fileSuffix $FileSuffix
+ $job = Start-TestJob -parameters $appParams -tenant $Tenant -scriptPath $ScriptPath -testType $TestType `
+ -skipAutomaticDisabledPass:$SkipAutomaticDisabledPass -fileSuffix $FileSuffix
$State.jobs = @($State.jobs) + @([PSCustomObject]@{ jobId = $job.Id; tenant = $Tenant; appName = $AppName })
Start-Sleep -Seconds 5
}
+function Start-RequiredDisabledDispatch {
+ param(
+ [Hashtable]$Parameters,
+ $WorkItem,
+ $TenantInfo,
+ [string]$ScriptPath,
+ [string]$TestType,
+ $State,
+ [string]$Verb = "Dispatching"
+ )
+
+ Write-Host "$Verb RequiredTestIsolation=Disabled codeunit $($WorkItem.CodeunitId) '$($WorkItem.CodeunitName)' from '$($WorkItem.AppName)' on tenant '$($TenantInfo.Id)'"
+
+ $codeunitParameters = $Parameters.Clone()
+ $codeunitParameters["appName"] = $WorkItem.AppName
+ $codeunitParameters["extensionId"] = $WorkItem.AppId
+ $codeunitParameters["testCodeunit"] = $WorkItem.CodeunitId
+ $codeunitParameters["requiredTestIsolation"] = "Disabled"
+ $codeunitParameters["testRunnerCodeunitId"] = "130451"
+ $codeunitParameters["disabledTests"] = @(Get-DisabledTestsForApp -AppName $WorkItem.AppName)
+ $codeunitParameters.Remove("ReRun") | Out-Null
+ if ($Verb -eq "Re-dispatching") {
+ $codeunitParameters["ReRun"] = $true
+ }
+
+ $appendKeys = @{
+ XUnitResultFileName = "AppendToXUnitResultFile"
+ JUnitResultFileName = "AppendToJUnitResultFile"
+ }
+ foreach ($resultKey in $appendKeys.Keys) {
+ if ($codeunitParameters.ContainsKey($resultKey) -and $codeunitParameters[$resultKey]) {
+ $codeunitParameters[$appendKeys[$resultKey]] = $true
+ }
+ }
+
+ $job = Start-TestJob -parameters $codeunitParameters -tenant $TenantInfo.Id -scriptPath $ScriptPath `
+ -testType $TestType -skipAutomaticDisabledPass
+ $State.jobs = @($State.jobs) + @(
+ [PSCustomObject]@{
+ jobId = $job.Id
+ tenant = $TenantInfo.Id
+ appName = $WorkItem.Key
+ }
+ )
+ Start-Sleep -Seconds 1
+}
+
+function Invoke-RequiredDisabledTestExecution {
+ param(
+ [Parameter(Mandatory=$true)]
+ [Hashtable]$Parameters,
+ [Parameter(Mandatory=$true)]
+ [array]$WorkItems,
+ [Parameter(Mandatory=$true)]
+ [array]$TenantInfo,
+ [Parameter(Mandatory=$true)]
+ [string]$TemplateDatabaseName,
+ [Parameter(Mandatory=$true)]
+ [string]$ScriptPath,
+ [Parameter(Mandatory=$true)]
+ [string]$TestType
+ )
+
+ if ($WorkItems.Count -eq 0) {
+ return $true
+ }
+
+ $workItemByKey = @{}
+ foreach ($workItem in $WorkItems) {
+ $workItemByKey[$workItem.Key] = $workItem
+ }
+
+ $state = [PSCustomObject]@{
+ jobs = @()
+ hasFailures = $false
+ transient = @()
+ retried = @{}
+ retryTenant = @{}
+ }
+ $pending = @($WorkItems)
+
+ while ($pending.Count -gt 0 -or $state.transient.Count -gt 0) {
+ if ($state.transient.Count -gt 0) {
+ $retryItems = @()
+ foreach ($transient in @($state.transient)) {
+ $key = $transient.Key
+ $state.retried[$key] = $true
+ $state.retryTenant[$key] = $transient.Tenant
+ $retryItems += $workItemByKey[$key]
+ }
+ $state.transient = @()
+ $pending = @($retryItems) + @($pending)
+ }
+
+ $availableTenantInfo = @($TenantInfo)
+ $batch = @()
+ while ($pending.Count -gt 0 -and $availableTenantInfo.Count -gt 0) {
+ $workItem = $pending[0]
+ $pending = @($pending | Select-Object -Skip 1)
+ $selectedTenantInfo = if ($state.retryTenant.ContainsKey($workItem.Key)) {
+ $availableTenantInfo |
+ Where-Object { $_.Id -eq $state.retryTenant[$workItem.Key] } |
+ Select-Object -First 1
+ } else {
+ $availableTenantInfo | Select-Object -First 1
+ }
+ if (-not $selectedTenantInfo) {
+ throw "Could not reserve tenant for clean codeunit '$($workItem.Key)'."
+ }
+ $availableTenantInfo = @($availableTenantInfo | Where-Object { $_.Id -ne $selectedTenantInfo.Id })
+ $verb = if ($state.retried.ContainsKey($workItem.Key)) { "Re-dispatching" } else { "Dispatching" }
+
+ $batch += [PSCustomObject]@{
+ WorkItem = $workItem
+ TenantInfo = $selectedTenantInfo
+ Verb = $verb
+ }
+ }
+
+ # Finish every restore in the batch before any test starts. This keeps SQL backup/restore
+ # activity from overlapping page 130455 metadata enumeration and API cold starts.
+ foreach ($dispatch in $batch) {
+ Reset-BcTestTenant -ContainerName $Parameters.containerName -Tenant $dispatch.TenantInfo.Id `
+ -TenantDatabaseName $dispatch.TenantInfo.DatabaseName -TemplateDatabaseName $TemplateDatabaseName
+ }
+ foreach ($dispatch in $batch) {
+ Start-RequiredDisabledDispatch -Parameters $Parameters -WorkItem $dispatch.WorkItem `
+ -TenantInfo $dispatch.TenantInfo `
+ -ScriptPath $ScriptPath -TestType $TestType -State $state -Verb $dispatch.Verb
+ }
+ $null = Wait-ForAllTestJobs -state $state
+ }
+
+ return (-not $state.hasFailures)
+}
+
<#
.SYNOPSIS
Records a finished job's outcome on the state object, queueing a rerun when one is warranted.
@@ -442,10 +933,17 @@ function Register-TestJobOutcome {
switch ($Result.Outcome) {
'Transient' {
Write-Host "Transient platform race for '$($Result.AppName)' on '$($Result.Tenant)'. Queued for one retry."
- $State.transient = @($State.transient) + @($Result.AppName)
+ $State.transient = @($State.transient) + @(
+ [PSCustomObject]@{
+ Key = $Result.AppName
+ Tenant = $Result.Tenant
+ }
+ )
}
'Failed' {
- $canRerun = ($State.rerunBudget -gt 0) -and
+ $supportsAppReruns = $null -ne $State.PSObject.Properties['rerunBudget']
+ $canRerun = $supportsAppReruns -and
+ ($State.rerunBudget -gt 0) -and
($State.tenantCount -gt 1) -and
(-not $State.rerunDone.ContainsKey($Result.AppName))
@@ -542,6 +1040,28 @@ function Wait-ForFreeTenant {
throw "Wait-ForFreeTenant: timed out after $timeoutSeconds seconds waiting for a free tenant. Running jobs: $($state.jobs | ForEach-Object { "$($_.appName) on $($_.tenant)" } | Out-String)"
}
+function Wait-ForSpecificTenant {
+ param(
+ $state,
+ $tenants,
+ [string]$tenant,
+ [int]$timeoutSeconds = 7200,
+ [int]$pollIntervalSeconds = 10
+ )
+
+ $waited = 0
+ while ($waited -lt $timeoutSeconds) {
+ $available = @(Get-FreeTenants -state $state -tenants $tenants)
+ if ($tenant -in $available) {
+ return $tenant
+ }
+ Start-Sleep -Seconds $pollIntervalSeconds
+ $waited += $pollIntervalSeconds
+ }
+
+ throw "Wait-ForSpecificTenant: timed out after $timeoutSeconds seconds waiting for tenant '$tenant'."
+}
+
<#
.SYNOPSIS
Starts a background job to run tests for a single app on a specific tenant.
@@ -564,6 +1084,7 @@ function Start-TestJob {
[string]$tenant,
[string]$scriptPath,
[string]$testType,
+ [switch]$skipAutomaticDisabledPass,
[string]$fileSuffix
)
@@ -587,15 +1108,19 @@ function Start-TestJob {
$bchModule = Get-Module BcContainerHelper | Select-Object -First 1
$bchModulePath = if ($bchModule) { $bchModule.Path } else { "BcContainerHelper" }
- return Start-Job -ScriptBlock {
- param($params, $scriptPath, $testType, $bchPath)
+ $jobScript = {
+ param($params, $scriptPath, $testType, $bchPath, $skipDisabledPass)
Import-Module $bchPath
# Background jobs run a single app sequentially. Pass an empty $AppNamesToTest so the
# shared script skips the parallel dispatch branch and falls through to running this
# one app's tests directly.
- $passed = . $scriptPath -parameters $params -TestType $testType -AppNamesToTest @()
+ $passed = . $scriptPath -parameters $params -TestType $testType -AppNamesToTest @() `
+ -SkipAutomaticDisabledPass:$skipDisabledPass
if (-not $passed) { throw "Test execution failed" }
- } -ArgumentList $jobParams, $scriptPath, $testType, $bchModulePath
+ }
+
+ return Start-Job -ScriptBlock $jobScript -ArgumentList $jobParams, $scriptPath, $testType, $bchModulePath, `
+ $skipAutomaticDisabledPass.IsPresent
}
<#
@@ -627,6 +1152,59 @@ function Wait-ForAllTestJobs {
$state.jobs = @()
}
+function Add-MissingJUnitTestProperties {
+ param(
+ [Parameter(Mandatory=$true)]
+ [string]$ResultFile,
+ [array]$WorkItems = @()
+ )
+
+ if (-not (Test-Path $ResultFile) -or $WorkItems.Count -eq 0) {
+ return
+ }
+
+ $workItemByCodeunitId = @{}
+ foreach ($workItem in $WorkItems) {
+ $workItemByCodeunitId[[string]$workItem.CodeunitId] = $workItem
+ }
+
+ $xml = [xml](Get-Content $ResultFile -Raw)
+ $changed = $false
+ foreach ($suite in @($xml.testsuites.testsuite)) {
+ if ($suite.properties) {
+ continue
+ }
+
+ $codeunitId = ([string]$suite.name -split ' ', 2)[0]
+ $workItem = $workItemByCodeunitId[$codeunitId]
+ if (-not $workItem) {
+ continue
+ }
+
+ $properties = $xml.CreateElement("properties")
+ foreach ($propertyValue in @{
+ extensionid = $workItem.AppId
+ appName = $workItem.AppName
+ }.GetEnumerator()) {
+ $property = $xml.CreateElement("property")
+ $property.SetAttribute("name", $propertyValue.Key)
+ $property.SetAttribute("value", [string]$propertyValue.Value)
+ $properties.AppendChild($property) | Out-Null
+ }
+
+ if ($suite.FirstChild) {
+ $suite.InsertBefore($properties, $suite.FirstChild) | Out-Null
+ } else {
+ $suite.AppendChild($properties) | Out-Null
+ }
+ $changed = $true
+ }
+
+ if ($changed) {
+ $xml.Save($ResultFile)
+ }
+}
+
<#
.SYNOPSIS
Merges per-job test result files into the single file expected by Run-AlPipeline.
@@ -642,6 +1220,7 @@ function Merge-TenantTestResults {
param(
[Hashtable]$parameters,
[string[]]$tenants,
+ [array]$workItems = @(),
[string[]]$rerunSuffixes = @()
)
@@ -655,6 +1234,11 @@ function Merge-TenantTestResults {
$ext = [System.IO.Path]::GetExtension($origFile)
$tenantFiles = @($suffixes | ForEach-Object { Join-Path $dir "$name-$_$ext" })
+ if ($resultKey -eq "JUnitResultFileName") {
+ foreach ($tenantFile in $tenantFiles) {
+ Add-MissingJUnitTestProperties -ResultFile $tenantFile -WorkItems $workItems
+ }
+ }
Merge-TestResultFiles -targetFile $origFile -sourceFiles $tenantFiles
# Clean up per-job files
@@ -680,6 +1264,8 @@ function Merge-TenantTestResults {
All available tenant ids. Warmup dispatches onto the first one.
.PARAMETER State
The parallel execution state object; mutated (jobs/hasFailures/transient) as the warmup runs.
+.PARAMETER CleanTenantAppNames
+ Apps whose automatic Disabled-isolation pass must be deferred to clean-codeunit execution.
.OUTPUTS
[string[]] The remaining app names to dispatch (first app removed if it was warmed up).
#>
@@ -691,7 +1277,8 @@ function Invoke-WarmupDispatch {
[Parameter(Mandatory=$true)][AllowEmptyCollection()][string[]]$Tenants,
[Parameter(Mandatory=$true)][string]$ScriptPath,
[string]$TestType,
- [Parameter(Mandatory=$true)]$State
+ [Parameter(Mandatory=$true)]$State,
+ [string[]]$CleanTenantAppNames = @()
)
# Only serialize when there is a fan-out to protect: >1 app AND >1 tenant.
@@ -708,7 +1295,8 @@ function Invoke-WarmupDispatch {
Write-Host "Warming up: dispatching first app '$warmupApp' on '$($Tenants[0])' alone and awaiting completion before parallel fan-out."
Start-TestAppDispatch -Parameters $Parameters -AppName $warmupApp -AppId $warmupAppId -Tenant $Tenants[0] `
- -ScriptPath $ScriptPath -TestType $TestType -State $State -Verb 'Dispatching'
+ -ScriptPath $ScriptPath -TestType $TestType -State $State -Verb 'Dispatching' `
+ -SkipAutomaticDisabledPass:($warmupApp -in $CleanTenantAppNames)
# Await the single job so the process is warm before anything runs in parallel. A transient
# failure here lands in $State.transient and the caller's loop re-queues it; a hard failure is
@@ -808,7 +1396,8 @@ function Invoke-ParallelTestExecution {
}
}
- $tenants = @(Get-AvailableBcTenants -containerName $parameters.containerName)
+ $tenantInfo = @(Get-AvailableBcTenantInfo -containerName $parameters.containerName)
+ $tenants = @($tenantInfo | ForEach-Object { $_.Id })
Write-Host "Available tenants: $($tenants -join ', ')"
# Build a name -> appId map so we can set extensionId per dispatch. Run-TestsInBcContainer
@@ -820,15 +1409,64 @@ function Invoke-ParallelTestExecution {
Where-Object { $_.IsInstalled } |
ForEach-Object { $appIdByName[$_.Name] = $_.AppId }
+ $cleanTenantAppNames = @(
+ Get-CleanTenantTestAppNames |
+ Where-Object { $_ -in $appNamesToTest }
+ )
+ $requiredDisabledWorkItems = @(
+ Get-RequiredDisabledWorkItems -Parameters $parameters -TestType $testType `
+ -AppNamesToTest $cleanTenantAppNames -AppIdByName $appIdByName
+ )
+ $cleanTenantInfo = @(
+ $tenantInfo |
+ Where-Object { $_.Id -ne $parameters.tenant }
+ )
+ $templateDatabaseName = ""
+ try {
+ if ($requiredDisabledWorkItems.Count -gt 0) {
+ if ($cleanTenantInfo.Count -eq 0) {
+ throw "Clean RequiredTestIsolation=Disabled execution requires at least one secondary tenant."
+ }
+ Write-Host "Preparing clean-tenant execution for $($requiredDisabledWorkItems.Count) RequiredTestIsolation=Disabled codeunit(s)."
+ $sourceTenantInfo = @($tenantInfo | Where-Object { $_.Id -eq $parameters.tenant }) | Select-Object -First 1
+ if (-not $sourceTenantInfo -or [string]::IsNullOrEmpty($sourceTenantInfo.DatabaseName)) {
+ throw "Could not determine the database name for source tenant '$($parameters.tenant)'."
+ }
+ $templateDatabaseName = New-BcTestTenantTemplate -ContainerName $parameters.containerName -SourceDatabaseName $sourceTenantInfo.DatabaseName
+ }
+
# dispatched=true marks "we started the foreach" - lets concurrent reads notice an in-flight
# run. completed=false stays false until wait+merge finish; only then is finalResult valid.
$state = [PSCustomObject]@{
jobs = @(); dispatched = $true; completed = $false; finalResult = $false; hasFailures = $false
- transient = @(); retried = @{}
+ transient = @(); retried = @{}; retryTenant = @{}
rerun = @(); rerunDone = @{}; rerunBudget = (Get-AppRerunBudget); tenantCount = $tenants.Count
}
$state | ConvertTo-Json -Depth 5 | Set-Content $stateFile -Force
+ if ($requiredDisabledWorkItems.Count -gt 0) {
+ Enable-BcTestTaskScheduler -ContainerName $parameters.containerName
+ try {
+ $requiredDisabledPassed = Invoke-RequiredDisabledTestExecution -Parameters $parameters `
+ -WorkItems $requiredDisabledWorkItems -TenantInfo $cleanTenantInfo `
+ -TemplateDatabaseName $templateDatabaseName -ScriptPath $scriptPath -TestType $testType
+ if (-not $requiredDisabledPassed) {
+ $state.hasFailures = $true
+ }
+ }
+ finally {
+ try {
+ Disable-BcTestTaskScheduler -ContainerName $parameters.containerName
+ }
+ finally {
+ foreach ($cleanTenant in $cleanTenantInfo) {
+ Reset-BcTestTenant -ContainerName $parameters.containerName -Tenant $cleanTenant.Id `
+ -TenantDatabaseName $cleanTenant.DatabaseName -TemplateDatabaseName $templateDatabaseName
+ }
+ }
+ }
+ }
+
# Single dispatch loop, FIFO. TestConfiguration.json lists the smallest app first (a cheap
# serial warmup) and the rest longest-first (LPT, keeps the tail short). The retry cap lives in
# Receive-TestJobResult: an app already in $state.retried is classified as Failed on a re-fail.
@@ -837,7 +1475,8 @@ function Invoke-ParallelTestExecution {
# Run the first app alone and await it to warm the container before parallelizing the rest.
# No-op for single-app/single-tenant.
$pending = @(Invoke-WarmupDispatch -Parameters $parameters -Pending $pending -AppIdByName $appIdByName `
- -Tenants $tenants -ScriptPath $scriptPath -TestType $testType -State $state)
+ -Tenants $tenants -ScriptPath $scriptPath -TestType $testType -State $state `
+ -CleanTenantAppNames $cleanTenantAppNames)
$rerunSuffixes = @()
@@ -850,9 +1489,12 @@ function Invoke-ParallelTestExecution {
if ($state.transient.Count -gt 0) {
$toRetry = @($state.transient)
$state.transient = @()
- Write-Host "Re-queueing $($toRetry.Count) app(s) after transient platform race: $($toRetry -join ', ')"
- foreach ($appName in $toRetry) {
+ $retryAppNames = @($toRetry | ForEach-Object { $_.Key })
+ Write-Host "Re-queueing $($toRetry.Count) app(s) after transient platform race: $($retryAppNames -join ', ')"
+ foreach ($transient in $toRetry) {
+ $appName = $transient.Key
$state.retried[$appName] = $true
+ $state.retryTenant[$appName] = $transient.Tenant
# A transient retry goes out through the normal queue and so writes to a TENANT
# result file. Tenant files are merged before rerun files, so any rerun file this
# app already produced would overwrite the newer result - drop it.
@@ -860,7 +1502,7 @@ function Invoke-ParallelTestExecution {
Remove-RerunResultFile -parameters $parameters -suffix $state.rerunDone[$appName]
}
}
- $pending = @($toRetry) + @($pending)
+ $pending = @($retryAppNames) + @($pending)
}
# Reruns take priority over the normal queue, for the same tail-latency reason as above:
@@ -875,7 +1517,8 @@ function Invoke-ParallelTestExecution {
$tenant = Wait-ForFreeTenant -state $state -tenants $tenants -excludeTenant $rerunItem.excludeTenant
Start-TestAppDispatch -Parameters $parameters -AppName $rerunItem.appName -AppId $appIdByName[$rerunItem.appName] `
-Tenant $tenant -ScriptPath $scriptPath -TestType $testType -State $state `
- -Verb 'Re-running' -FileSuffix $rerunItem.suffix
+ -Verb 'Re-running' -FileSuffix $rerunItem.suffix `
+ -SkipAutomaticDisabledPass:($rerunItem.appName -in $cleanTenantAppNames)
continue
}
@@ -890,9 +1533,14 @@ function Invoke-ParallelTestExecution {
}
$verb = if ($state.retried.ContainsKey($appName)) { 'Re-dispatching' } else { 'Dispatching' }
- $tenant = Wait-ForFreeTenant -state $state -tenants $tenants
+ $tenant = if ($state.retryTenant.ContainsKey($appName)) {
+ Wait-ForSpecificTenant -state $state -tenants $tenants -tenant $state.retryTenant[$appName]
+ } else {
+ Wait-ForFreeTenant -state $state -tenants $tenants
+ }
Start-TestAppDispatch -Parameters $parameters -AppName $appName -AppId $appId -Tenant $tenant `
- -ScriptPath $scriptPath -TestType $testType -State $state -Verb $verb
+ -ScriptPath $scriptPath -TestType $testType -State $state `
+ -SkipAutomaticDisabledPass:($appName -in $cleanTenantAppNames) -Verb $verb
} else {
# Nothing left to dispatch; drain any still-running jobs. New transient failures and
# reruns discovered here are picked up at the top of the next loop iteration.
@@ -902,17 +1550,25 @@ function Invoke-ParallelTestExecution {
}
}
- $allPassed = -not $state.hasFailures
+ $allPassed = -not $state.hasFailures
- Merge-TenantTestResults -parameters $parameters -tenants $tenants -rerunSuffixes $rerunSuffixes
+ Merge-TenantTestResults -parameters $parameters -tenants $tenants `
+ -workItems $requiredDisabledWorkItems -rerunSuffixes $rerunSuffixes
- # Persist final result and mark complete so subsequent override invocations short-circuit
- # to this value (and not the placeholder we wrote before dispatch).
- $state.finalResult = $allPassed
- $state.completed = $true
- $state | ConvertTo-Json -Depth 5 | Set-Content $stateFile -Force
+ # Persist final result and mark complete so subsequent override invocations short-circuit
+ # to this value (and not the placeholder we wrote before dispatch).
+ $state.finalResult = $allPassed
+ $state.completed = $true
+ $state | ConvertTo-Json -Depth 5 | Set-Content $stateFile -Force
- return $allPassed
+ return $allPassed
+ }
+ finally {
+ if ($templateDatabaseName) {
+ Remove-BcTestTenantTemplate -ContainerName $parameters.containerName `
+ -TemplateDatabaseName $templateDatabaseName
+ }
+ }
}
<#
@@ -957,4 +1613,4 @@ function Invoke-PerProjectTestRun {
return (. $script -parameters $parameters -TestType $testType -AppNamesToTest $appNamesToTest)
}
-Export-ModuleMember -Function Invoke-ParallelTestExecution, Get-AvailableBcTenants, Get-CachedTestRunResult, Get-InstalledTestAppNames, Get-AppNamesForBucket, Invoke-PerProjectTestRun, Get-AppNameFromMetadata, Invoke-WarmupDispatch, Merge-TestResultFiles, Get-AppRerunBudget
+Export-ModuleMember -Function Invoke-ParallelTestExecution, Get-AvailableBcTenants, Get-CachedTestRunResult, Get-InstalledTestAppNames, Get-AppNamesForBucket, Invoke-PerProjectTestRun, Get-AppNameFromMetadata, Get-DisabledTestsForApp, Reset-BcTestTenant, Invoke-WarmupDispatch, Merge-TestResultFiles, Get-AppRerunBudget, Test-TransientTestFailure
diff --git a/build/scripts/RunTestsInBcContainer.ps1 b/build/scripts/RunTestsInBcContainer.ps1
index 5ffd8c957bc..51067229314 100644
--- a/build/scripts/RunTestsInBcContainer.ps1
+++ b/build/scripts/RunTestsInBcContainer.ps1
@@ -5,40 +5,14 @@ Param(
# Names of test apps to dispatch in parallel across tenants. Only set by the per-project
# override on the parent invocation. Empty when called from inside a background job, which
# forces the sequential single-app path further down.
- [string[]] $AppNamesToTest = @()
+ [string[]] $AppNamesToTest = @(),
+ [switch] $SkipAutomaticDisabledPass
)
Import-Module $PSScriptRoot\EnlistmentHelperFunctions.psm1
+Import-Module $PSScriptRoot\ParallelTestExecution.psm1
Import-Module $PSScriptRoot\TestTolerance\TestTolerance.psm1 -Force
-function Get-DisabledTests
-{
- param(
- [string] $AppName
- )
-
- $baseFolder = Get-BaseFolder
-
- # Convert app name to folder name format (replace spaces with underscores)
- $appFolderName = $AppName -replace ' ', '_'
-
- $disabledTests = @()
-
- # Look for DisabledTests folders and find the app-specific subfolder
- $disabledTestsFolders = Get-ChildItem -Path $baseFolder -Filter "DisabledTests" -Recurse -Directory
- foreach ($disabledTestsFolder in $disabledTestsFolders) {
- $appFolder = Join-Path $disabledTestsFolder.FullName $appFolderName
- if (Test-Path $appFolder) {
- $jsonFiles = Get-ChildItem -Path $appFolder -Filter "*.json"
- foreach ($jsonFile in $jsonFiles) {
- $disabledTests += (Get-Content -Raw -Path $jsonFile.FullName | ConvertFrom-Json)
- }
- }
- }
-
- return @($disabledTests)
-}
-
<#
.SYNOPSIS
Runs Run-TestsInBcContainer and detects silent test truncation caused by BCH ERROR DIALOG events.
@@ -84,15 +58,21 @@ function Invoke-RunTestsWithCancellationDetection {
}
$bchCancelled = $false
+ $transientPlatformRace = $false
if ($transcriptStarted -and (Test-Path $transcriptFile)) {
- if (Select-String -Path $transcriptFile -Pattern 'database command was cancelled|ERROR DIALOG' -Quiet) {
+ $transcriptContent = Get-Content -Path $transcriptFile -Raw
+ if ($transcriptContent -match 'database command was cancelled|ERROR DIALOG') {
Write-Host "::warning::BCH client cancellation detected for app '$($parameters['appName'])' on tenant '$($parameters['tenant'])'. Tests were silently truncated - subsequent codeunits did not run."
$bchCancelled = $true
}
+ if (Test-TransientTestFailure -Output $transcriptContent) {
+ Write-Host "::warning::TRANSIENT TEST PLATFORM RACE detected for app '$($parameters['appName'])' on tenant '$($parameters['tenant'])'."
+ $transientPlatformRace = $true
+ }
}
Remove-Item $transcriptFile -Force -ErrorAction SilentlyContinue
- return ($bchPassed -and -not $bchCancelled)
+ return ($bchPassed -and -not $bchCancelled -and -not $transientPlatformRace)
}
function Invoke-TestsWithReruns {
@@ -126,7 +106,7 @@ if (($null -ne $TestType) -and ($TestType -ne "Legacy")) {
$parameters["testType"] = $TestType
}
-$parameters["disabledTests"] = @(Get-DisabledTests -AppName $parameters["appName"]) # Add disabled tests to parameters
+$parameters["disabledTests"] = @(Get-DisabledTestsForApp -AppName $parameters["appName"])
$parameters["renewClientContextBetweenTests"] = $true
# When invoked from the per-project override on the parent process, $AppNamesToTest contains
@@ -135,17 +115,18 @@ $parameters["renewClientContextBetweenTests"] = $true
# circuit. When invoked from inside a background job (Start-TestJob), $AppNamesToTest is empty
# and we fall through to the sequential single-app path below.
if ($AppNamesToTest.Count -gt 0) {
- Import-Module $PSScriptRoot\ParallelTestExecution.psm1
return Invoke-ParallelTestExecution -parameters $parameters -scriptPath $PSCommandPath -testType $TestType -appNamesToTest $AppNamesToTest
}
+$isRequiredDisabledRun = $parameters.ContainsKey("requiredTestIsolation") -and $parameters["requiredTestIsolation"] -eq "Disabled"
# A failing app is retried once by the parallel dispatcher, on a different tenant (see
# ParallelTestExecution.psm1). Retrying in place here would reuse the tenant the app just dirtied,
# so the same residue could re-trigger the failure - hence a single attempt per dispatch.
$result = Invoke-TestsWithReruns -parameters $parameters -maxAttempts 1
-# For UnitTests, also run with DisableTestIsolation on the same tenant
-if ($TestType -eq "UnitTest") {
+# Preserve the old sequential fallback. Parallel project execution defers this pass to the
+# clean-tenant codeunit scheduler in ParallelTestExecution.psm1.
+if ($TestType -eq "UnitTest" -and -not $SkipAutomaticDisabledPass -and -not $isRequiredDisabledRun) {
Write-Host "Running DisableTestIsolation pass for UnitTest"
$parameters["requiredTestIsolation"] = "Disabled"
$parameters["testRunnerCodeunitId"] = "130451"
diff --git a/build/scripts/TestConfiguration.json b/build/scripts/TestConfiguration.json
index 574045bb454..aa98cc32e4e 100644
--- a/build/scripts/TestConfiguration.json
+++ b/build/scripts/TestConfiguration.json
@@ -1,4 +1,21 @@
{
+ "CleanTenantRequiredDisabled": [
+ "_Exclude_APIV1_ Tests",
+ "_Exclude_APIV2_ Tests",
+ "_Exclude_Connectivity Apps Tests",
+ "_Exclude_Master_Data_Management_Tests",
+ "AMC Banking 365 Fundamentals Test Automations",
+ "Dynamics BC Excel Reports Tests",
+ "E-Document Connector - Continia Tests",
+ "E-Document Connector - Logiq Tests",
+ "Email - SMTP Connector Tests",
+ "Expense Agent Tests",
+ "GetAddress.io UK Postcodes Tests",
+ "Retention Policy Test",
+ "Shopify Connector Test",
+ "Sustainability Tests",
+ "VAT Group Management Tests"
+ ],
"LegacyTests-Bucket1": [
"Tests-Resource",
"Tests-Workflow",
diff --git a/build/scripts/tests/ParallelTestExecution.Test.ps1 b/build/scripts/tests/ParallelTestExecution.Test.ps1
index 84c7d0e83ba..69263395fde 100644
--- a/build/scripts/tests/ParallelTestExecution.Test.ps1
+++ b/build/scripts/tests/ParallelTestExecution.Test.ps1
@@ -1,5 +1,33 @@
$errorActionPreference = "Stop"; $ProgressPreference = "SilentlyContinue"; Set-StrictMode -Version 2.0
+if (-not (Get-Command Get-TestsFromBcContainer -ErrorAction SilentlyContinue)) {
+ function global:Get-TestsFromBcContainer {
+ param(
+ [string]$containerName,
+ [string]$tenant,
+ [string]$extensionId,
+ [string]$requiredTestIsolation,
+ [string]$testType,
+ [array]$disabledTests
+ )
+ $null = $containerName, $tenant, $extensionId, $requiredTestIsolation, $testType, $disabledTests
+ throw "Get-TestsFromBcContainer stub should never be called; a Pester mock must intercept it."
+ }
+}
+
+if (-not (Get-Command Invoke-ScriptInBcContainer -ErrorAction SilentlyContinue)) {
+ function global:Invoke-ScriptInBcContainer {
+ param(
+ [string]$containerName,
+ [scriptblock]$scriptblock,
+ [object[]]$argumentList,
+ [bool]$useSession
+ )
+ $null = $containerName, $scriptblock, $argumentList, $useSession
+ throw "Invoke-ScriptInBcContainer stub should never be called; a Pester mock must intercept it."
+ }
+}
+
Import-Module (Join-Path $PSScriptRoot '../ParallelTestExecution.psm1') -Force
Describe "ParallelTestExecution app-name resolution" {
@@ -97,6 +125,76 @@ Describe "ParallelTestExecution app-name resolution" {
$result | Should -Not -Contain 'Projects-Json-Key'
}
}
+
+ It "uses docker exec for the long-running template database copy" {
+ InModuleScope ParallelTestExecution {
+ Mock Invoke-ScriptInBcContainer { 'default-test-template' }
+
+ New-BcTestTenantTemplate -ContainerName 'bc' -SourceDatabaseName 'default' | Should -Be 'default-test-template'
+
+ Should -Invoke Invoke-ScriptInBcContainer -Times 1 -ParameterFilter {
+ $containerName -eq 'bc' -and $useSession -eq $false
+ }
+ }
+ }
+
+ It "uses docker exec for long-running tenant database refreshes" {
+ InModuleScope ParallelTestExecution {
+ Mock Invoke-ScriptInBcContainer { }
+
+ Reset-BcTestTenant -ContainerName 'bc' -Tenant 'tenant2' `
+ -TenantDatabaseName 'tenant2' -TemplateDatabaseName 'default-test-template'
+
+ Should -Invoke Invoke-ScriptInBcContainer -Times 1 -ParameterFilter {
+ $containerName -eq 'bc' -and $useSession -eq $false
+ }
+ }
+ }
+
+ It "removes the clean template when normal app dispatch aborts" {
+ InModuleScope ParallelTestExecution {
+ Mock Get-AvailableBcTenantInfo {
+ @(
+ [PSCustomObject]@{ Id = 'default'; DatabaseName = 'default' }
+ [PSCustomObject]@{ Id = 'tenant2'; DatabaseName = 'tenant2' }
+ )
+ }
+ Mock Get-BcContainerAppInfo {
+ @([PSCustomObject]@{ IsInstalled = $true; Name = 'Tests'; AppId = 'tests-id' })
+ }
+ Mock Get-CleanTenantTestAppNames { @('Tests') }
+ Mock Get-RequiredDisabledWorkItems {
+ @([PSCustomObject]@{
+ Key = 'Tests::500'
+ AppName = 'Tests'
+ AppId = 'tests-id'
+ CodeunitId = '500'
+ CodeunitName = 'API E2E'
+ TestCount = 2
+ })
+ }
+ Mock Enable-BcTestTaskScheduler { }
+ Mock Disable-BcTestTaskScheduler { }
+ Mock New-BcTestTenantTemplate { 'default-test-template' }
+ Mock Invoke-RequiredDisabledTestExecution { $true }
+ Mock Reset-BcTestTenant { }
+ Mock Invoke-WarmupDispatch { @($Pending) }
+ Mock Wait-ForFreeTenant { 'default' }
+ Mock Start-TestAppDispatch { throw 'dispatch failed' }
+ Mock Remove-BcTestTenantTemplate { }
+
+ {
+ Invoke-ParallelTestExecution -parameters @{
+ containerName = "ut-$([guid]::NewGuid().ToString('N'))"
+ tenant = 'default'
+ } -scriptPath 'unused.ps1' -testType 'IntegrationTest' -appNamesToTest @('Tests')
+ } | Should -Throw '*dispatch failed*'
+
+ Should -Invoke Remove-BcTestTenantTemplate -Times 1 -ParameterFilter {
+ $TemplateDatabaseName -eq 'default-test-template'
+ }
+ }
+ }
}
Describe "ParallelTestExecution transient retry scheduling" {
@@ -104,6 +202,20 @@ Describe "ParallelTestExecution transient retry scheduling" {
Import-Module (Join-Path $PSScriptRoot '../ParallelTestExecution.psm1') -Force
}
+ It "classifies page 130455 metadata-resolution runtime failures as transient" {
+ InModuleScope ParallelTestExecution {
+ @(
+ "ObjName:Command Line Test Tool, ObjID:130455, Type:Form, MethodName:ExtensionId_a45_OnValidate`nOffset and length were out of bounds for the array"
+ "ObjName:Command Line Test Tool, ObjID:130455, Type:Form, MethodName:ExtensionId_a45_OnValidate`nNullable object must have a value."
+ "TRANSIENT TEST PLATFORM RACE detected for app 'Tests' on tenant 'tenant2'."
+ "Exception occurred while running tests: ClientSession State is InError (Wait time 25 seconds)"
+ "GET request failed. Response code is 500 (InternalServerError), expected code is 200. Error message: Object reference not set to an instance of an object."
+ ) | ForEach-Object {
+ Test-TransientTestFailure -Output $_ | Should -BeTrue
+ }
+ }
+ }
+
It "re-dispatches a transient platform-race victim ahead of the apps still queued" {
# The dispatch order is what decides the critical path: a platform race normally kills a
# job within a minute of dispatch, so the victim is one of the first (longest) apps. If the
@@ -113,13 +225,21 @@ Describe "ParallelTestExecution transient retry scheduling" {
$script:dispatched = [System.Collections.Generic.List[string]]::new()
$script:raced = $false
- Mock Get-AvailableBcTenants { @('default') }
+ Mock Get-AvailableBcTenantInfo {
+ @(
+ [PSCustomObject]@{ Id = 'default'; DatabaseName = 'default' }
+ [PSCustomObject]@{ Id = 'tenant2'; DatabaseName = 'tenant2' }
+ )
+ }
Mock Get-BcContainerAppInfo {
@('Big', 'Medium', 'Small') | ForEach-Object {
[PSCustomObject]@{ IsInstalled = $true; Name = $_; AppId = "id-$_" }
}
}
+ Mock Get-CleanTenantTestAppNames { @() }
+ Mock Get-RequiredDisabledWorkItems { @() }
Mock Wait-ForFreeTenant { 'default' }
+ Mock Wait-ForSpecificTenant { 'default' }
Mock Wait-ForAllTestJobs { $true }
Mock Merge-TenantTestResults { }
Mock Start-TestAppDispatch {
@@ -127,7 +247,9 @@ Describe "ParallelTestExecution transient retry scheduling" {
# 'Big' loses the platform race on its very first dispatch, exactly once.
if ($AppName -eq 'Big' -and -not $script:raced) {
$script:raced = $true
- $State.transient = @($State.transient) + @($AppName)
+ $State.transient = @($State.transient) + @(
+ [PSCustomObject]@{ Key = $AppName; Tenant = $Tenant }
+ )
}
}
@@ -140,18 +262,472 @@ Describe "ParallelTestExecution transient retry scheduling" {
}
}
+Describe "ParallelTestExecution RequiredTestIsolation discovery" {
+ BeforeAll {
+ Import-Module (Join-Path $PSScriptRoot '../ParallelTestExecution.psm1') -Force
+ }
+
+ It "flattens discovered codeunits and excludes codeunits without enabled methods" {
+ InModuleScope ParallelTestExecution {
+ $discovered = @(
+ [PSCustomObject]@{ Id = '100'; Name = 'Direct'; Tests = @('A', 'B') }
+ [PSCustomObject]@{
+ Group = 'G'
+ Codeunits = @(
+ [PSCustomObject]@{ Id = '200'; Name = 'Grouped'; Tests = @('C') }
+ [PSCustomObject]@{ Id = '300'; Name = 'Disabled'; Tests = @() }
+ )
+ }
+ )
+
+ $result = @(ConvertTo-RequiredDisabledWorkItems -DiscoveredTests $discovered -AppName 'API Tests' -AppId 'app-id')
+
+ $result.Count | Should -Be 2
+ $result[0].Key | Should -Be 'API Tests::100'
+ $result[0].TestCount | Should -Be 2
+ $result[1].CodeunitId | Should -Be '200'
+ }
+ }
+
+ It "discovers enabled Disabled-isolation codeunits per app" {
+ InModuleScope ParallelTestExecution {
+ Mock Get-ParametersForCommand { @{ containerName = 'c'; tenant = 'default' } }
+ Mock Get-DisabledTestsForApp {
+ @([PSCustomObject]@{ codeunitId = 999; method = 'DisabledMethod' })
+ }
+ Mock Get-TestsFromBcContainer {
+ @([PSCustomObject]@{ Id = '500'; Name = 'API E2E'; Tests = @('Create', 'Modify') })
+ }
+
+ $result = @(
+ Get-RequiredDisabledWorkItems -Parameters @{ containerName = 'c'; tenant = 'default' } `
+ -TestType 'IntegrationTest' -AppNamesToTest @('API Tests') `
+ -AppIdByName @{ 'API Tests' = 'app-id' }
+ )
+
+ $result.Count | Should -Be 1
+ $result[0].CodeunitId | Should -Be '500'
+ Should -Invoke Get-TestsFromBcContainer -Times 1 -ParameterFilter {
+ $extensionId -eq 'app-id' -and
+ $requiredTestIsolation -eq 'Disabled' -and
+ $testType -eq 'IntegrationTest' -and
+ $disabledTests.Count -eq 1
+ }
+ }
+ }
+
+ It "does not apply a test type filter to Legacy buckets" {
+ InModuleScope ParallelTestExecution {
+ Mock Get-ParametersForCommand { @{ containerName = 'c'; tenant = 'default'; testType = 'stale' } }
+ Mock Get-DisabledTestsForApp { @() }
+ Mock Get-TestsFromBcContainer { @() }
+
+ $null = Get-RequiredDisabledWorkItems -Parameters @{ containerName = 'c' } `
+ -TestType 'Legacy' -AppNamesToTest @('Legacy Tests') `
+ -AppIdByName @{ 'Legacy Tests' = 'legacy-id' }
+
+ Should -Invoke Get-TestsFromBcContainer -Times 1 -ParameterFilter {
+ -not $PSBoundParameters.ContainsKey('testType')
+ }
+ }
+ }
+}
+
+Describe "ParallelTestExecution clean tenant scheduling" {
+ BeforeAll {
+ Import-Module (Join-Path $PSScriptRoot '../ParallelTestExecution.psm1') -Force
+ }
+
+ It "does not create a database template when no Disabled-isolation codeunits are enabled" {
+ InModuleScope ParallelTestExecution {
+ Mock Get-AvailableBcTenantInfo {
+ @([PSCustomObject]@{ Id = 'default'; DatabaseName = 'default' })
+ }
+ Mock Get-BcContainerAppInfo {
+ @([PSCustomObject]@{ IsInstalled = $true; Name = 'Tests'; AppId = 'tests-id' })
+ }
+ Mock Get-CleanTenantTestAppNames { @() }
+ Mock Get-RequiredDisabledWorkItems { @() }
+ Mock New-BcTestTenantTemplate { throw 'Template must not be created' }
+ Mock Wait-ForFreeTenant { 'default' }
+ Mock Start-TestAppDispatch { }
+ Mock Wait-ForAllTestJobs { $true }
+ Mock Merge-TenantTestResults { }
+
+ $result = Invoke-ParallelTestExecution -parameters @{
+ containerName = "ut-$([guid]::NewGuid().ToString('N'))"
+ tenant = 'default'
+ } -scriptPath 'unused.ps1' -testType 'IntegrationTest' -appNamesToTest @('Tests')
+
+ $result | Should -BeTrue
+ Should -Invoke New-BcTestTenantTemplate -Times 0
+ }
+ }
+
+ Describe "ParallelTestExecution result metadata" {
+ BeforeAll {
+ Import-Module (Join-Path $PSScriptRoot '../ParallelTestExecution.psm1') -Force
+ }
+
+ It "adds app properties to clean-codeunit JUnit suites" {
+ InModuleScope ParallelTestExecution {
+ $resultFile = Join-Path ([System.IO.Path]::GetTempPath()) "junit-$([guid]::NewGuid().ToString('N')).xml"
+ try {
+ @(
+ ''
+ ''
+ ' '
+ ' '
+ ' '
+ ''
+ ) | Set-Content -Path $resultFile -Encoding utf8
+
+ Add-MissingJUnitTestProperties -ResultFile $resultFile -WorkItems @(
+ [PSCustomObject]@{
+ CodeunitId = '139800'
+ AppId = 'app-id'
+ AppName = '_Exclude_APIV2_ Tests'
+ }
+ )
+
+ [xml]$xml = Get-Content $resultFile -Raw
+ $properties = @($xml.testsuites.testsuite.properties.property)
+ ($properties | Where-Object name -eq 'extensionid').value | Should -Be 'app-id'
+ ($properties | Where-Object name -eq 'appName').value | Should -Be '_Exclude_APIV2_ Tests'
+ } finally {
+ Remove-Item $resultFile -Force -ErrorAction SilentlyContinue
+ }
+ }
+ }
+ }
+
+ Describe "API test isolation metadata" {
+ It "matches every NAV API execution path and its isolation mode" {
+ $repoRoot = (Resolve-Path (Join-Path $PSScriptRoot '..\..\..')).Path
+ $typedIntegrationCodeunits = @(139917, 139918, 139919, 139920, 139921)
+ foreach ($apiVersion in @('APIV1', 'APIV2')) {
+ $testSource = Join-Path $repoRoot "src\Apps\W1\$apiVersion\test\src"
+ $disabledManifest = Join-Path $repoRoot "src\DisabledTests\_Exclude_${apiVersion}__Tests\_Exclude_${apiVersion}__Tests.DisabledTest.json"
+ $disabledCodeunitIds = if (Test-Path $disabledManifest) {
+ @(
+ Get-Content $disabledManifest -Raw |
+ ConvertFrom-Json |
+ Where-Object method -eq '*' |
+ ForEach-Object { [int]$_.codeunitId }
+ )
+ } else {
+ @()
+ }
+ $enabledCodeunitCount = 0
+ foreach ($file in (Get-ChildItem $testSource -Filter '*.al' -File)) {
+ $content = Get-Content $file.FullName -Raw
+ if ($content -match 'Subtype\s*=\s*Test\s*;') {
+ $codeunitId = [int]([regex]::Match($content, 'codeunit\s+(\d+)').Groups[1].Value)
+ if ($codeunitId -in $disabledCodeunitIds) {
+ continue
+ }
+
+ $enabledCodeunitCount++
+ if ($codeunitId -in $typedIntegrationCodeunits) {
+ $content | Should -Match 'TestType\s*=\s*IntegrationTest\s*;' `
+ -Because "$($file.Name) runs through NAV's typed Integration task"
+ $content | Should -Not -Match 'RequiredTestIsolation\s*=\s*Disabled\s*;' `
+ -Because "$($file.Name) runs with normal Codeunit isolation in NAV"
+ $content | Should -Match 'LibraryGraphMgt\.EnsureAuthenticationAvailable\(\);'
+ } else {
+ $content | Should -Match 'RequiredTestIsolation\s*=\s*Disabled\s*;' `
+ -Because "$($file.Name) runs in a NAV Disabled-isolation path"
+ $content | Should -Match 'LibraryGraphMgt\.EnsureAuthenticationAvailable\(\);' `
+ -Because "$($file.Name) must preflight authentication"
+ $content | Should -Match 'LibraryGraphMgt\.SetLicenseSafeWorkDate\(\);' `
+ -Because "$($file.Name) must explicitly use a license-safe work date"
+ $content | Should -Not -Match 'LibraryERM\.SetWorkDate\(\);' `
+ -Because "$($file.Name) must not overwrite the API test license-safe work date"
+ }
+ }
+ }
+
+ $expectedEnabledCodeunits = if ($apiVersion -eq 'APIV1') { 44 } else { 75 }
+ $enabledCodeunitCount | Should -Be $expectedEnabledCodeunits `
+ -Because "$apiVersion must match the union of NAV's web-service and typed test tasks"
+ }
+ }
+ }
+
+ It "defers the automatic Unit disabled pass only for clean-tenant apps" {
+ InModuleScope ParallelTestExecution {
+ $script:skipValues = [System.Collections.Generic.List[bool]]::new()
+ Mock Start-Sleep { }
+ Mock Start-TestJob {
+ $script:skipValues.Add($skipAutomaticDisabledPass.IsPresent)
+ [PSCustomObject]@{ Id = $script:skipValues.Count }
+ }
+
+ $state = [PSCustomObject]@{ jobs = @() }
+ Start-TestAppDispatch -Parameters @{} -AppName 'Normal Tests' -AppId 'normal-id' `
+ -Tenant 'default' -ScriptPath 'runner.ps1' -TestType 'UnitTest' -State $state
+ Start-TestAppDispatch -Parameters @{} -AppName 'API Tests' -AppId 'api-id' `
+ -Tenant 'tenant2' -ScriptPath 'runner.ps1' -TestType 'UnitTest' -State $state `
+ -SkipAutomaticDisabledPass
+
+ $script:skipValues | Should -Be @($false, $true)
+ }
+ }
+
+ It "applies country-scoped disabled tests only in matching countries" {
+ InModuleScope ParallelTestExecution {
+ Test-DisabledTestAppliesToCountry -DisabledTest ([PSCustomObject]@{ method = 'Global' }) -Country 'W1' |
+ Should -BeTrue
+ Test-DisabledTestAppliesToCountry -DisabledTest ([PSCustomObject]@{
+ method = 'IndiaOnly'
+ countries = @('IN')
+ }) -Country 'IN' | Should -BeTrue
+ Test-DisabledTestAppliesToCountry -DisabledTest ([PSCustomObject]@{
+ method = 'IndiaOnly'
+ countries = @('IN')
+ }) -Country 'W1' | Should -BeFalse
+ }
+ }
+
+ It "dispatches one codeunit with Disabled isolation" {
+ InModuleScope ParallelTestExecution {
+ $script:capturedParameters = $null
+
+ Mock Get-DisabledTestsForApp { @() }
+ Mock Start-Sleep { }
+ Mock Start-TestJob {
+ $script:capturedParameters = $parameters
+ [PSCustomObject]@{ Id = 42 }
+ }
+
+ $state = [PSCustomObject]@{ jobs = @() }
+ $workItem = [PSCustomObject]@{
+ Key = 'Tests::500'
+ AppName = 'Tests'
+ AppId = 'tests-id'
+ CodeunitId = '500'
+ CodeunitName = 'API E2E'
+ }
+
+ Start-RequiredDisabledDispatch -Parameters @{
+ containerName = 'c'
+ JUnitResultFileName = 'results.xml'
+ } -WorkItem $workItem -TenantInfo ([PSCustomObject]@{
+ Id = 'tenant2'
+ DatabaseName = 'tenant2'
+ }) -ScriptPath 'runner.ps1' `
+ -TestType 'IntegrationTest' -State $state
+
+ $script:capturedParameters.testCodeunit | Should -Be '500'
+ $script:capturedParameters.requiredTestIsolation | Should -Be 'Disabled'
+ $script:capturedParameters.testRunnerCodeunitId | Should -Be '130451'
+ $script:capturedParameters.AppendToJUnitResultFile | Should -BeTrue
+ $state.jobs.Count | Should -Be 1
+ }
+ }
+
+ It "marks scheduler retries as reruns so existing XML entries are replaced" {
+ InModuleScope ParallelTestExecution {
+ $script:capturedParameters = $null
+
+ Mock Get-DisabledTestsForApp { @() }
+ Mock Reset-BcTestTenant { }
+ Mock Start-Sleep { }
+ Mock Start-TestJob {
+ $script:capturedParameters = $parameters
+ [PSCustomObject]@{ Id = 42 }
+ }
+
+ Start-RequiredDisabledDispatch -Parameters @{ containerName = 'c' } -WorkItem ([PSCustomObject]@{
+ Key = 'Tests::500'
+ AppName = 'Tests'
+ AppId = 'tests-id'
+ CodeunitId = '500'
+ CodeunitName = 'API E2E'
+ }) -TenantInfo ([PSCustomObject]@{
+ Id = 'tenant2'
+ DatabaseName = 'tenant2'
+ }) -ScriptPath 'runner.ps1' `
+ -TestType 'IntegrationTest' -State ([PSCustomObject]@{ jobs = @() }) `
+ -Verb 'Re-dispatching'
+
+ $script:capturedParameters.ReRun | Should -BeTrue
+ }
+ }
+
+ It "retries a clean codeunit on its original tenant" {
+ InModuleScope ParallelTestExecution {
+ $script:dispatchTenants = [System.Collections.Generic.List[string]]::new()
+ $script:firstDispatch = $true
+
+ Mock Reset-BcTestTenant { }
+ Mock Wait-ForAllTestJobs { $true }
+ Mock Start-RequiredDisabledDispatch {
+ $script:dispatchTenants.Add($TenantInfo.Id)
+ if ($script:firstDispatch) {
+ $script:firstDispatch = $false
+ $State.transient = @(
+ [PSCustomObject]@{ Key = $WorkItem.Key; Tenant = $TenantInfo.Id }
+ )
+ }
+ }
+
+ $workItem = [PSCustomObject]@{
+ Key = 'Tests::500'
+ AppName = 'Tests'
+ AppId = 'tests-id'
+ CodeunitId = '500'
+ CodeunitName = 'API E2E'
+ }
+ $tenantInfo = @(
+ [PSCustomObject]@{ Id = 'tenant2'; DatabaseName = 'tenant2' }
+ [PSCustomObject]@{ Id = 'tenant3'; DatabaseName = 'tenant3' }
+ )
+
+ $result = Invoke-RequiredDisabledTestExecution -Parameters @{ containerName = 'c' } `
+ -WorkItems @($workItem) -TenantInfo $tenantInfo -TemplateDatabaseName 'template' `
+ -ScriptPath 'runner.ps1' -TestType 'UnitTest'
+
+ $result | Should -BeTrue
+ $script:dispatchTenants | Should -Be @('tenant2', 'tenant2')
+ }
+ }
+
+ It "finishes all tenant resets before dispatching a clean-codeunit batch" {
+ InModuleScope ParallelTestExecution {
+ $script:events = [System.Collections.Generic.List[string]]::new()
+ Mock Reset-BcTestTenant {
+ $script:events.Add("reset:$Tenant")
+ }
+ Mock Start-RequiredDisabledDispatch {
+ $script:events.Add("dispatch:$($TenantInfo.Id)")
+ }
+ Mock Wait-ForAllTestJobs { }
+
+ $workItems = @(
+ [PSCustomObject]@{ Key = 'Tests::500'; AppName = 'Tests'; AppId = 'id'; CodeunitId = '500'; CodeunitName = 'A' }
+ [PSCustomObject]@{ Key = 'Tests::501'; AppName = 'Tests'; AppId = 'id'; CodeunitId = '501'; CodeunitName = 'B' }
+ )
+ $tenantInfo = @(
+ [PSCustomObject]@{ Id = 'tenant2'; DatabaseName = 'tenant2' }
+ [PSCustomObject]@{ Id = 'tenant3'; DatabaseName = 'tenant3' }
+ )
+
+ Invoke-RequiredDisabledTestExecution -Parameters @{ containerName = 'c' } `
+ -WorkItems $workItems -TenantInfo $tenantInfo -TemplateDatabaseName 'template' `
+ -ScriptPath 'runner.ps1' -TestType 'UnitTest' | Should -BeTrue
+
+ $script:events | Should -Be @('reset:tenant2', 'reset:tenant3', 'dispatch:tenant2', 'dispatch:tenant3')
+ }
+ }
+
+ It "creates one template and invokes clean-tenant execution when codeunits require Disabled isolation" {
+ InModuleScope ParallelTestExecution {
+ Mock Get-AvailableBcTenantInfo {
+ @(
+ [PSCustomObject]@{ Id = 'default'; DatabaseName = 'default' }
+ [PSCustomObject]@{ Id = 'tenant2'; DatabaseName = 'tenant2' }
+ )
+ }
+ Mock Get-BcContainerAppInfo {
+ @([PSCustomObject]@{ IsInstalled = $true; Name = 'Tests'; AppId = 'tests-id' })
+ }
+ Mock Get-CleanTenantTestAppNames { @('Tests') }
+ Mock Get-RequiredDisabledWorkItems {
+ @([PSCustomObject]@{
+ Key = 'Tests::500'
+ AppName = 'Tests'
+ AppId = 'tests-id'
+ CodeunitId = '500'
+ CodeunitName = 'API E2E'
+ TestCount = 2
+ })
+ }
+ $script:taskSchedulerEnabled = $false
+ Mock New-BcTestTenantTemplate { 'default-test-template' }
+ Mock Wait-ForFreeTenant { 'default' }
+ Mock Start-TestAppDispatch {
+ $script:taskSchedulerEnabled | Should -BeFalse
+ }
+ Mock Wait-ForAllTestJobs { $true }
+ Mock Invoke-RequiredDisabledTestExecution {
+ $script:taskSchedulerEnabled | Should -BeTrue
+ $true
+ }
+ Mock Reset-BcTestTenant {
+ $script:taskSchedulerEnabled | Should -BeFalse
+ }
+ Mock Remove-BcTestTenantTemplate { }
+ Mock Enable-BcTestTaskScheduler { $script:taskSchedulerEnabled = $true }
+ Mock Disable-BcTestTaskScheduler { $script:taskSchedulerEnabled = $false }
+ Mock Merge-TenantTestResults { }
+
+ $result = Invoke-ParallelTestExecution -parameters @{
+ containerName = "ut-$([guid]::NewGuid().ToString('N'))"
+ tenant = 'default'
+ } -scriptPath 'unused.ps1' -testType 'IntegrationTest' -appNamesToTest @('Tests')
+
+ $result | Should -BeTrue
+ Should -Invoke New-BcTestTenantTemplate -Times 1 -ParameterFilter {
+ $SourceDatabaseName -eq 'default'
+ }
+ Should -Invoke Enable-BcTestTaskScheduler -Times 1
+ Should -Invoke Disable-BcTestTaskScheduler -Times 1
+ Should -Invoke Reset-BcTestTenant -Times 1 -ParameterFilter {
+ $Tenant -eq 'tenant2' -and
+ $TenantDatabaseName -eq 'tenant2' -and
+ $TemplateDatabaseName -eq 'default-test-template'
+ }
+ Should -Invoke Invoke-RequiredDisabledTestExecution -Times 1 -ParameterFilter {
+ $TemplateDatabaseName -eq 'default-test-template' -and
+ $WorkItems.Count -eq 1 -and
+ $TenantInfo.Count -eq 1 -and
+ $TenantInfo[0].Id -eq 'tenant2'
+ }
+ Should -Invoke Remove-BcTestTenantTemplate -Times 1 -ParameterFilter {
+ $TemplateDatabaseName -eq 'default-test-template'
+ }
+ }
+ }
+}
+
Describe "ParallelTestExecution warmup dispatch" {
BeforeAll {
Import-Module (Join-Path $PSScriptRoot '../ParallelTestExecution.psm1') -Force
}
+ It "defers the Disabled pass when the warmup app uses clean-codeunit execution" {
+ InModuleScope ParallelTestExecution {
+ $script:skipDisabledPass = $false
+ Mock Start-TestAppDispatch {
+ $script:skipDisabledPass = $SkipAutomaticDisabledPass.IsPresent
+ }
+ Mock Wait-ForAllTestJobs { }
+
+ $state = [PSCustomObject]@{ jobs = @(); hasFailures = $false; transient = @(); retried = @{} }
+ $result = Invoke-WarmupDispatch -Parameters @{ containerName = 'c' } `
+ -Pending @('API Tests', 'Other Tests') `
+ -AppIdByName @{ 'API Tests' = 'api-id'; 'Other Tests' = 'other-id' } `
+ -Tenants @('default', 'tenant2') -ScriptPath 'unused.ps1' -TestType 'UnitTest' `
+ -State $state -CleanTenantAppNames @('API Tests')
+
+ $result | Should -Be @('Other Tests')
+ $script:skipDisabledPass | Should -BeTrue
+ }
+ }
+
It "dispatches the first app alone and awaits it before fanning out the rest" {
# The first app must run alone and be awaited before any parallel dispatch. This asserts
# exactly that ordering: dispatch(first) -> wait -> rest.
InModuleScope ParallelTestExecution {
$script:events = [System.Collections.Generic.List[string]]::new()
- Mock Get-AvailableBcTenants { @('default', 'tenant2') }
+ Mock Get-AvailableBcTenantInfo {
+ @(
+ [PSCustomObject]@{ Id = 'default'; DatabaseName = 'default' }
+ [PSCustomObject]@{ Id = 'tenant2'; DatabaseName = 'tenant2' }
+ )
+ }
Mock Get-BcContainerAppInfo {
@('Big', 'Medium', 'Small') | ForEach-Object {
[PSCustomObject]@{ IsInstalled = $true; Name = $_; AppId = "id-$_" }
@@ -179,7 +755,9 @@ Describe "ParallelTestExecution warmup dispatch" {
InModuleScope ParallelTestExecution {
$script:events = [System.Collections.Generic.List[string]]::new()
- Mock Get-AvailableBcTenants { @('default') }
+ Mock Get-AvailableBcTenantInfo {
+ @([PSCustomObject]@{ Id = 'default'; DatabaseName = 'default' })
+ }
Mock Get-BcContainerAppInfo {
@('Big', 'Medium') | ForEach-Object {
[PSCustomObject]@{ IsInstalled = $true; Name = $_; AppId = "id-$_" }
@@ -242,13 +820,15 @@ Describe "ParallelTestExecution warmup dispatch" {
InModuleScope ParallelTestExecution {
Mock Start-TestAppDispatch { }
# Simulate Wait-ForAllTestJobs classifying the warmup app as a transient race.
- Mock Wait-ForAllTestJobs { $State.transient = @('A'); $true }
+ Mock Wait-ForAllTestJobs {
+ $State.transient = @([PSCustomObject]@{ Key = 'A'; Tenant = 'default' })
+ }
$state = [PSCustomObject]@{ jobs = @(); hasFailures = $false; transient = @(); retried = @{} }
$result = Invoke-WarmupDispatch -Parameters @{ containerName = 'c' } `
-Pending @('A', 'B', 'C') -AppIdByName @{ A = 'id-A'; B = 'id-B'; C = 'id-C' } `
-Tenants @('default', 'tenant2') -ScriptPath 'unused.ps1' -TestType 'Legacy' -State $state
$result | Should -Be @('B', 'C')
- $state.transient | Should -Contain 'A'
+ $state.transient.Key | Should -Contain 'A'
$state.hasFailures | Should -BeFalse
}
}
@@ -267,12 +847,19 @@ Describe "ParallelTestExecution failed-app rerun scheduling" {
$script:dispatched = [System.Collections.Generic.List[object]]::new()
$script:failed = $false
- Mock Get-AvailableBcTenants { @('default', 'tenant2') }
+ Mock Get-AvailableBcTenantInfo {
+ @(
+ [PSCustomObject]@{ Id = 'default'; DatabaseName = 'default' }
+ [PSCustomObject]@{ Id = 'tenant2'; DatabaseName = 'tenant2' }
+ )
+ }
Mock Get-BcContainerAppInfo {
@('Big', 'Small') | ForEach-Object {
[PSCustomObject]@{ IsInstalled = $true; Name = $_; AppId = "id-$_" }
}
}
+ Mock Get-CleanTenantTestAppNames { @('Big') }
+ Mock Get-RequiredDisabledWorkItems { @() }
Mock Invoke-WarmupDispatch { @($Pending) }
Mock Get-AppRerunBudget { 1 }
Mock Wait-ForAllTestJobs { $true }
@@ -282,7 +869,12 @@ Describe "ParallelTestExecution failed-app rerun scheduling" {
@('default', 'tenant2') | Where-Object { $_ -ne $excludeTenant } | Select-Object -First 1
}
Mock Start-TestAppDispatch {
- $script:dispatched.Add([PSCustomObject]@{ App = $AppName; Tenant = $Tenant; Suffix = $FileSuffix })
+ $script:dispatched.Add([PSCustomObject]@{
+ App = $AppName
+ Tenant = $Tenant
+ Suffix = $FileSuffix
+ SkipDisabled = $SkipAutomaticDisabledPass.IsPresent
+ })
# 'Big' fails on its first dispatch, exactly once.
if ($AppName -eq 'Big' -and -not $script:failed) {
$script:failed = $true
@@ -300,6 +892,7 @@ Describe "ParallelTestExecution failed-app rerun scheduling" {
$rerun.App | Should -Be 'Big'
$rerun.Tenant | Should -Be 'tenant2'
$rerun.Suffix | Should -Be 'rerun1'
+ $rerun.SkipDisabled | Should -BeTrue
# The rerun passed, so the run as a whole passed.
$result | Should -BeTrue
}
@@ -454,7 +1047,12 @@ Describe "ParallelTestExecution rerun budget is limited to pull request builds"
Set-Content -Path $staleFile -Value ''
$script:raced = $false
- Mock Get-AvailableBcTenants { @('default', 'tenant2') }
+ Mock Get-AvailableBcTenantInfo {
+ @(
+ [PSCustomObject]@{ Id = 'default'; DatabaseName = 'default' }
+ [PSCustomObject]@{ Id = 'tenant2'; DatabaseName = 'tenant2' }
+ )
+ }
Mock Get-BcContainerAppInfo { @([PSCustomObject]@{ IsInstalled = $true; Name = 'A'; AppId = 'id-A' }) }
Mock Invoke-WarmupDispatch { @($Pending) }
Mock Wait-ForAllTestJobs { }
@@ -464,7 +1062,9 @@ Describe "ParallelTestExecution rerun budget is limited to pull request builds"
if ($FileSuffix -and -not $script:raced) {
# The rerun job hits the platform race.
$script:raced = $true
- $State.transient = @($State.transient) + @($AppName)
+ $State.transient = @($State.transient) + @(
+ [PSCustomObject]@{ Key = $AppName; Tenant = $Tenant }
+ )
}
}
# Pre-seed the state as though 'A' already had its rerun dispatched.
@@ -475,10 +1075,11 @@ Describe "ParallelTestExecution rerun budget is limited to pull request builds"
rerun = @(); rerunDone = @{}; rerunBudget = 1; tenantCount = 2
}
$state.rerunDone['A'] = 'rerun1'
- $state.transient = @('A')
+ $state.transient = @([PSCustomObject]@{ Key = 'A'; Tenant = 'tenant2' })
# Exercise just the promotion path the loop performs.
- foreach ($appName in @($state.transient)) {
+ foreach ($transient in @($state.transient)) {
+ $appName = $transient.Key
if ($state.rerunDone.ContainsKey($appName)) {
Remove-RerunResultFile -parameters $params -suffix $state.rerunDone[$appName]
}
@@ -518,7 +1119,12 @@ Describe "ParallelTestExecution rerun budget is limited to pull request builds"
$script:dispatched = [System.Collections.Generic.List[object]]::new()
$script:failed = $false
- Mock Get-AvailableBcTenants { @('default', 'tenant2') }
+ Mock Get-AvailableBcTenantInfo {
+ @(
+ [PSCustomObject]@{ Id = 'default'; DatabaseName = 'default' }
+ [PSCustomObject]@{ Id = 'tenant2'; DatabaseName = 'tenant2' }
+ )
+ }
Mock Get-BcContainerAppInfo {
@('Big', 'Small') | ForEach-Object {
[PSCustomObject]@{ IsInstalled = $true; Name = $_; AppId = "id-$_" }
diff --git a/src/Apps/US/IRSForms/test/src/IRS1099APITests.Codeunit.al b/src/Apps/US/IRSForms/test/src/IRS1099APITests.Codeunit.al
index 7495ec2d793..c250819e2a9 100644
--- a/src/Apps/US/IRSForms/test/src/IRS1099APITests.Codeunit.al
+++ b/src/Apps/US/IRSForms/test/src/IRS1099APITests.Codeunit.al
@@ -10,6 +10,12 @@ codeunit 148018 "IRS 1099 API Tests"
TestType = Uncategorized;
TestPermissions = Disabled;
+ trigger OnRun()
+ begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
+
var
LibraryTestInitialize: Codeunit "Library - Test Initialize";
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
diff --git a/src/Apps/W1/APIV1/test/src/APIV1AccountsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1AccountsE2E.Codeunit.al
index 9e3ef6f5e64..4e0073d5450 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1AccountsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1AccountsE2E.Codeunit.al
@@ -3,10 +3,13 @@ codeunit 139701 "APIV1 - Accounts E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Account]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1AgedAPE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1AgedAPE2E.Codeunit.al
index 9c057dab240..eb0f52a67a3 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1AgedAPE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1AgedAPE2E.Codeunit.al
@@ -3,10 +3,13 @@ codeunit 139719 "APIV1 - Aged AP E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Purchase] [Aged Report]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1AgedARE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1AgedARE2E.Codeunit.al
index afdb729791c..b57d9ca1443 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1AgedARE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1AgedARE2E.Codeunit.al
@@ -3,10 +3,13 @@ codeunit 139720 "APIV1 - Aged AR E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Sales] [Aged Report]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1AttachmentsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1AttachmentsE2E.Codeunit.al
index 5e03d6caccc..a45de0d489d 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1AttachmentsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1AttachmentsE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139733 "APIV1 - Attachments E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Attachment]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1AutomationRSPackage.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1AutomationRSPackage.Codeunit.al
index fba368ca1dc..d90419df236 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1AutomationRSPackage.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1AutomationRSPackage.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139731 "APIV1 - Automation RS Package"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Config. Package]
end;
@@ -16,7 +19,6 @@ codeunit 139731 "APIV1 - Automation RS Package"
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
LibraryUtility: Codeunit "Library - Utility";
Assert: Codeunit "Assert";
- IsInitialized: Boolean;
SamplePackageFile: Text;
PackageCodeTxt: Label 'code', Locked = true;
ActionImportTxt: Label 'Microsoft.NAV.import';
@@ -31,11 +33,7 @@ codeunit 139731 "APIV1 - Automation RS Package"
begin
TenantConfigPackageFile.DELETEALL(TRUE);
- IF IsInitialized THEN
- EXIT;
-
SamplePackageFile := GenerateSamplePackageFile();
- IsInitialized := TRUE;
end;
[Test]
@@ -142,11 +140,12 @@ codeunit 139731 "APIV1 - Automation RS Package"
StartTime := CURRENTDATETIME();
REPEAT
+ SelectLatestVersion();
ConfigPackage.FIND();
UNTIL (NOT IsImportPending(ConfigPackage)) OR
(CURRENTDATETIME() - StartTime > 180000);
- Assert.AreEqual(ConfigPackage."Import Status", ConfigPackage."Import Status"::Completed, 'Import Status should be completed.');
+ Assert.AreEqual(ConfigPackage."Import Status"::Completed, ConfigPackage."Import Status", 'Import Status should be completed.');
// clean up after the test
LibraryRapidStart.CleanUp(ConfigPackage.Code);
@@ -190,11 +189,12 @@ codeunit 139731 "APIV1 - Automation RS Package"
StartTime := CURRENTDATETIME();
REPEAT
+ SelectLatestVersion();
ConfigPackage.FIND();
UNTIL (NOT IsImportPending(ConfigPackage)) OR
(CURRENTDATETIME() - StartTime > 180000);
- Assert.AreEqual(ConfigPackage."Import Status", ConfigPackage."Import Status"::Error, 'Import Status should be error.');
+ Assert.AreEqual(ConfigPackage."Import Status"::Error, ConfigPackage."Import Status", 'Import Status should be error.');
// clean up after the test
LibraryRapidStart.CleanUp(ConfigPackage.Code);
@@ -240,11 +240,12 @@ codeunit 139731 "APIV1 - Automation RS Package"
StartTime := CURRENTDATETIME();
REPEAT
+ SelectLatestVersion();
ConfigPackage.FIND();
UNTIL (NOT IsApplyPending(ConfigPackage)) OR
(CURRENTDATETIME() - StartTime > 180000);
- Assert.AreEqual(ConfigPackage."Apply Status", ConfigPackage."Apply Status"::Completed, 'Apply Status should be completed.');
+ Assert.AreEqual(ConfigPackage."Apply Status"::Completed, ConfigPackage."Apply Status", 'Apply Status should be completed.');
Assert.AreEqual(0, ConfigPackage."No. of Errors", 'There should be no errors.');
// clean up after the test
@@ -328,7 +329,7 @@ codeunit 139731 "APIV1 - Automation RS Package"
local procedure IsApplyPending(var ConfigPackage: Record "Config. Package"): Boolean
begin
- EXIT(ConfigPackage."Apply Status" IN [ConfigPackage."Import Status"::Scheduled, ConfigPackage."Apply Status"::InProgress]);
+ EXIT(ConfigPackage."Apply Status" IN [ConfigPackage."Apply Status"::Scheduled, ConfigPackage."Apply Status"::InProgress]);
end;
local procedure CreateTestPackage(var ConfigPackage: Record "Config. Package")
diff --git a/src/Apps/W1/APIV1/test/src/APIV1BalanceSheetE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1BalanceSheetE2E.Codeunit.al
index 9f700458c0e..02111358ba2 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1BalanceSheetE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1BalanceSheetE2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139715 "APIV1 - Balance Sheet E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Balance Sheet]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1CashFlowStatementE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1CashFlowStatementE2E.Codeunit.al
index 2478bfb256f..a61af306926 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1CashFlowStatementE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1CashFlowStatementE2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139717 "APIV1 - CashFlow Statement E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Cash Flow Statement]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1CompanyInfoE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1CompanyInfoE2E.Codeunit.al
index 6b3b4e66322..cea76056864 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1CompanyInfoE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1CompanyInfoE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139706 "APIV1 - Company Info. E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = IntegrationTest;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Company Information]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1CurrenciesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1CurrenciesE2E.Codeunit.al
index 5105b4c44bb..617bd5aedff 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1CurrenciesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1CurrenciesE2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139713 "APIV1 - Currencies E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Currency]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1CustomerPaymentsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1CustomerPaymentsE2E.Codeunit.al
index 13e55ac2bb6..f70fe831524 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1CustomerPaymentsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1CustomerPaymentsE2E.Codeunit.al
@@ -1,11 +1,14 @@
codeunit 139743 "APIV1 - Customer Payments E2E"
{
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Customer Payments]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1CustomersE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1CustomersE2E.Codeunit.al
index be1fe579b35..e49d5aa9cf6 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1CustomersE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1CustomersE2E.Codeunit.al
@@ -9,6 +9,8 @@ codeunit 139702 "APIV1 - Customers E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Customer]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1DefaultDimensionsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1DefaultDimensionsE2E.Codeunit.al
index 96621497106..74c01924f58 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1DefaultDimensionsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1DefaultDimensionsE2E.Codeunit.al
@@ -9,6 +9,8 @@ codeunit 139732 "APIV1 - Default Dimensions E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Default Dimension]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1DimensionLinesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1DimensionLinesE2E.Codeunit.al
index a0f0993cf2a..727da4c45e1 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1DimensionLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1DimensionLinesE2E.Codeunit.al
@@ -9,6 +9,8 @@ codeunit 139725 "APIV1 - Dimension Lines E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Dimension Line]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1DimensionsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1DimensionsE2E.Codeunit.al
index f1aafb40161..51fcfd7ae64 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1DimensionsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1DimensionsE2E.Codeunit.al
@@ -3,10 +3,13 @@ codeunit 139724 "APIV1 - Dimensions E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Dimension]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1EmployeesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1EmployeesE2E.Codeunit.al
index c2d3a8700fb..d1e2ceb5b74 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1EmployeesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1EmployeesE2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139722 "APIV1 - Employees E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Employee]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1GLEntriesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1GLEntriesE2E.Codeunit.al
index f405f7a3ad5..b9edc7f1e81 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1GLEntriesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1GLEntriesE2E.Codeunit.al
@@ -3,20 +3,23 @@ codeunit 139730 "APIV1 - GLEntries E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [G/L Entry]
end;
var
Assert: Codeunit "Assert";
LibraryERM: Codeunit "Library - ERM";
- LibraryVariableStorage: Codeunit "Library - Variable Storage";
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
IsInitialized: Boolean;
+ JournalTemplateName: Code[10];
ServiceNameTxt: Label 'generalLedgerEntries';
local procedure Initialize()
@@ -89,7 +92,7 @@ codeunit 139730 "APIV1 - GLEntries E2E"
CreateGeneralJournalBatch(GenJournalBatch);
// Create General Journal Line.
- LibraryVariableStorage.Enqueue(GenJournalBatch."Journal Template Name");
+ JournalTemplateName := GenJournalBatch."Journal Template Name";
GeneralJournal.TRAP();
GeneralJournal.OPENEDIT();
GeneralJournal."Account Type".SETVALUE(GenJournalLine."Account Type"::"G/L Account");
@@ -119,7 +122,6 @@ codeunit 139730 "APIV1 - GLEntries E2E"
local procedure UpdateAmountOnGenJournalLine(GenJournalBatch: Record "Gen. Journal Batch"; var GeneralJournal: TestPage "General Journal")
begin
- LibraryVariableStorage.Enqueue(GenJournalBatch."Journal Template Name");
LibraryERM.UpdateAmountOnGenJournalLine(GenJournalBatch, GeneralJournal);
end;
@@ -145,7 +147,7 @@ codeunit 139730 "APIV1 - GLEntries E2E"
[ModalPageHandler]
procedure GeneralJournalTemplateHandler(var GeneralJournalTemplateList: TestPage 250)
begin
- GeneralJournalTemplateList.FILTER.SETFILTER(Name, LibraryVariableStorage.DequeueText());
+ GeneralJournalTemplateList.FILTER.SETFILTER(Name, JournalTemplateName);
GeneralJournalTemplateList.OK().INVOKE();
end;
}
@@ -163,4 +165,3 @@ codeunit 139730 "APIV1 - GLEntries E2E"
-
diff --git a/src/Apps/W1/APIV1/test/src/APIV1IncomeStatementE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1IncomeStatementE2E.Codeunit.al
index a49c2db7b8b..c2b08a1fa3f 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1IncomeStatementE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1IncomeStatementE2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139716 "APIV1 - Income Statement E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Income Statement]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1ItemCategoriesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1ItemCategoriesE2E.Codeunit.al
index 9035d86b098..5c4db3d3571 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1ItemCategoriesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1ItemCategoriesE2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139707 "APIV1 - Item Categories E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Item Category]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1ItemVariantsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1ItemVariantsE2E.Codeunit.al
index 7d404f44ee1..884be687186 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1ItemVariantsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1ItemVariantsE2E.Codeunit.al
@@ -9,6 +9,8 @@ codeunit 139739 "APIV1 - Item Variants E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Item] [Variant]
end;
@@ -343,6 +345,7 @@ codeunit 139739 "APIV1 - Item Variants E2E"
var
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
+ LibraryGraphDocumentTools: Codeunit "Library - Graph Document Tools";
LibraryUtility: Codeunit "Library - Utility";
LibraryRandom: Codeunit "Library - Random";
LibraryInventory: Codeunit "Library - Inventory";
@@ -426,6 +429,8 @@ codeunit 139739 "APIV1 - Item Variants E2E"
LibrarySales: Codeunit "Library - Sales";
begin
LibrarySales.CreateSalesOrder(SalesHeader);
+ LibraryGraphDocumentTools.EnsureVATPostingSetupExists(
+ SalesHeader."VAT Bus. Posting Group", Item."VAT Prod. Posting Group");
LibrarySales.CreateSalesLine(SalesLine, SalesHeader, SalesLine.Type::Item, Item."No.", 2);
SalesLine."Variant Code" := ItemVariant.Code;
SalesLine.Modify();
diff --git a/src/Apps/W1/APIV1/test/src/APIV1ItemsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1ItemsE2E.Codeunit.al
index 4cddfa7b2ec..98f11ff1978 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1ItemsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1ItemsE2E.Codeunit.al
@@ -9,6 +9,8 @@ codeunit 139700 "APIV1 - Items E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Item]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1JournalLinesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1JournalLinesE2E.Codeunit.al
index c528b4c662a..f7279bfb24d 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1JournalLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1JournalLinesE2E.Codeunit.al
@@ -1,11 +1,14 @@
codeunit 139745 "APIV1 - Journal Lines E2E"
{
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = IntegrationTest;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [JournalLines]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1JournalsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1JournalsE2E.Codeunit.al
index 6aab2759557..896de508ee6 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1JournalsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1JournalsE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139727 "APIV1 - Journals E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Journal]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1PDFDocumentE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1PDFDocumentE2E.Codeunit.al
index 3f795d60e48..cd1f74d37db 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1PDFDocumentE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1PDFDocumentE2E.Codeunit.al
@@ -1,11 +1,14 @@
codeunit 139744 "APIV1 - PDF Document E2E"
{
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [PDF]
end;
@@ -24,7 +27,7 @@ codeunit 139744 "APIV1 - PDF Document E2E"
var
CompanyInformation: Record "Company Information";
begin
- WorkDate := Today;
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
CompanyInformation.Get();
if CompanyInformation."Giro No." = '' then
@@ -279,4 +282,3 @@ codeunit 139744 "APIV1 - PDF Document E2E"
Commit();
end;
}
-
diff --git a/src/Apps/W1/APIV1/test/src/APIV1PaymentTermsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1PaymentTermsE2E.Codeunit.al
index 5c39f3bd02a..6ea918f0406 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1PaymentTermsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1PaymentTermsE2E.Codeunit.al
@@ -3,10 +3,13 @@ codeunit 139704 "APIV1 - Payment Terms E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Payment Terms]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1PicturesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1PicturesE2E.Codeunit.al
index 3913b1537e6..deefee7aade 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1PicturesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1PicturesE2E.Codeunit.al
@@ -7,6 +7,8 @@ codeunit 139742 "APIV1 - Pictures E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Image]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1PurchaseInvLinesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1PurchaseInvLinesE2E.Codeunit.al
index d3b95c6f61c..c949fb9e7ad 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1PurchaseInvLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1PurchaseInvLinesE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139738 "APIV1 - Purchase Inv Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Purchase] [Invoice]
end;
@@ -711,6 +714,7 @@ codeunit 139738 "APIV1 - Purchase Inv Lines E2E"
TargetURL: Text;
ResponseText: Text;
InvoiceLineJSON: Text;
+ LineDescription: Text;
begin
// [SCENARIO] Posting a line with description only will get a type item
// [GIVEN] A post request with description only
@@ -719,7 +723,8 @@ codeunit 139738 "APIV1 - Purchase Inv Lines E2E"
COMMIT();
- InvoiceLineJSON := '{"description":"test"}';
+ LineDescription := Format(CreateGuid());
+ InvoiceLineJSON := LibraryGraphMgt.AddPropertytoJSON('', 'description', LineDescription);
// [WHEN] we just POST a blank line
TargetURL := LibraryGraphMgt
@@ -731,8 +736,10 @@ codeunit 139738 "APIV1 - Purchase Inv Lines E2E"
LibraryGraphMgt.PostToWebService(TargetURL, InvoiceLineJSON, ResponseText);
// [THEN] Line of type Item is created
- FindFirstPurchaseLine(PurchaseHeader, PurchaseLine);
- PurchaseLine.FINDLAST();
+ PurchaseLine.SETRANGE("Document Type", PurchaseHeader."Document Type");
+ PurchaseLine.SETRANGE("Document No.", PurchaseHeader."No.");
+ PurchaseLine.SETRANGE(Description, LineDescription);
+ Assert.IsTrue(PurchaseLine.FINDFIRST(), 'Could not find the created purchase invoice line');
Assert.AreEqual('', PurchaseLine."No.", 'No should be blank');
Assert.AreEqual(PurchaseLine.Type, PurchaseLine.Type::Item, 'Wrong type is set');
@@ -1149,12 +1156,6 @@ codeunit 139738 "APIV1 - Purchase Inv Lines E2E"
-
-
-
-
-
-
diff --git a/src/Apps/W1/APIV1/test/src/APIV1PurchaseInvoicesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1PurchaseInvoicesE2E.Codeunit.al
index 8060fbf4d23..ada74c1e642 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1PurchaseInvoicesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1PurchaseInvoicesE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139729 "APIV1 - Purchase Invoices E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Purchase] [Invoice]
end;
@@ -423,8 +426,9 @@ codeunit 139729 "APIV1 - Purchase Invoices E2E"
Vendor.Validate("Payment Terms Code", PaymentTerms.Code);
Vendor.Modify(true);
- // [GIVEN] Create Invoice Json with Vendor No and Invoice Date
- InvoiceJSON := CreateInvoiceJSON('vendorNumber', VendorNo, 'invoiceDate', WorkDate());
+ // [GIVEN] Create Invoice Json with dates before the vendor defaults are applied
+ InvoiceJSON := CreateInvoiceJSON('invoiceDate', WorkDate(), 'postingDate', WorkDate());
+ InvoiceJSON := LibraryGraphMgt.AddPropertytoJSON(InvoiceJSON, 'vendorNumber', VendorNo);
COMMIT();
// [WHEN] We POST the JSON to the Web Service
@@ -441,7 +445,30 @@ codeunit 139729 "APIV1 - Purchase Invoices E2E"
PurchaseHeader.SETRANGE("No.", InvoiceNumber);
PurchaseHeader.SETRANGE("Buy-from Vendor No.", VendorNo);
Assert.IsTrue(PurchaseHeader.FINDFIRST(), UnpostedInvoiceExistErr);
- Assert.IsTrue(PurchaseHeader."Payment Discount %" <> 0, PaymentDiscountErr);
+ if PurchaseHeader."Payment Discount %" = 0 then
+ Assert.IsTrue(HasLocalizedPaymentDiscount(PurchaseHeader."No."), PaymentDiscountErr);
+ end;
+
+ local procedure HasLocalizedPaymentDiscount(DocumentNo: Code[20]): Boolean
+ var
+ RecordField: Record Field;
+ PaymentLineRecordRef: RecordRef;
+ PaymentLineFieldRef: FieldRef;
+ begin
+ RecordField.SetRange(TableNo, 12170);
+ if RecordField.IsEmpty() then
+ exit(false);
+
+ PaymentLineRecordRef.Open(12170);
+ PaymentLineFieldRef := PaymentLineRecordRef.Field(10);
+ PaymentLineFieldRef.SetRange(2);
+ PaymentLineFieldRef := PaymentLineRecordRef.Field(1);
+ PaymentLineFieldRef.SetRange(2);
+ PaymentLineFieldRef := PaymentLineRecordRef.Field(2);
+ PaymentLineFieldRef.SetRange(DocumentNo);
+ PaymentLineFieldRef := PaymentLineRecordRef.Field(7);
+ PaymentLineFieldRef.SetFilter('>%1', 0);
+ exit(not PaymentLineRecordRef.IsEmpty());
end;
local procedure CreatePurchaseInvoices(var InvoiceID1: Text; var InvoiceID2: Text)
@@ -542,15 +569,7 @@ codeunit 139729 "APIV1 - Purchase Invoices E2E"
end;
local procedure CreatePaymentTermsWithDiscount(var PaymentTerms: Record "Payment Terms")
- var
- DateCalculation: DateFormula;
begin
- LibraryERM.CreatePaymentTerms(PaymentTerms);
- Evaluate(DateCalculation, '1M');
- PaymentTerms.Validate("Due Date Calculation", DateCalculation);
- Evaluate(DateCalculation, '8D');
- PaymentTerms.Validate("Discount Date Calculation", DateCalculation);
- PaymentTerms.Validate("Discount %", 2);
- PaymentTerms.Modify(true);
+ LibraryERM.CreatePaymentTermsDiscount(PaymentTerms, true);
end;
}
diff --git a/src/Apps/W1/APIV1/test/src/APIV1RetEarningsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1RetEarningsE2E.Codeunit.al
index 2bc76f8cb32..986cd5ea619 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1RetEarningsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1RetEarningsE2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139721 "APIV1 - Ret. Earnings E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Retained Earnings]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1SalesCrMemoLinesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1SalesCrMemoLinesE2E.Codeunit.al
index 1d5fc4dabe1..e570ade8aec 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1SalesCrMemoLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1SalesCrMemoLinesE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139737 "APIV1 - Sales CrMemo Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Sales] [Credit Memo]
end;
@@ -698,6 +701,7 @@ codeunit 139737 "APIV1 - Sales CrMemo Lines E2E"
TargetURL: Text;
ResponseText: Text;
CreditMemoLineJSON: Text;
+ LineDescription: Text;
begin
// [SCENARIO] Posting a line with description only will get a type item
// [GIVEN] A post request with description only
@@ -706,7 +710,8 @@ codeunit 139737 "APIV1 - Sales CrMemo Lines E2E"
COMMIT();
- CreditMemoLineJSON := '{"description":"test"}';
+ LineDescription := Format(CreateGuid());
+ CreditMemoLineJSON := LibraryGraphMgt.AddPropertytoJSON('', 'description', LineDescription);
// [WHEN] we just POST a blank line
TargetURL := LibraryGraphMgt
@@ -718,8 +723,10 @@ codeunit 139737 "APIV1 - Sales CrMemo Lines E2E"
LibraryGraphMgt.PostToWebService(TargetURL, CreditMemoLineJSON, ResponseText);
// [THEN] Line of type Item is created
- FindFirstSalesLine(SalesHeader, SalesLine);
- SalesLine.FINDLAST();
+ SalesLine.SETRANGE("Document Type", SalesHeader."Document Type");
+ SalesLine.SETRANGE("Document No.", SalesHeader."No.");
+ SalesLine.SETRANGE(Description, LineDescription);
+ Assert.IsTrue(SalesLine.FINDFIRST(), 'Could not find the created credit memo line');
Assert.AreEqual('', SalesLine."No.", 'No should be blank');
Assert.AreEqual(SalesLine.Type, SalesLine.Type::Item, 'Wrong type is set');
@@ -1392,12 +1399,6 @@ codeunit 139737 "APIV1 - Sales CrMemo Lines E2E"
-
-
-
-
-
-
diff --git a/src/Apps/W1/APIV1/test/src/APIV1SalesCreditMemosE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1SalesCreditMemosE2E.Codeunit.al
index 8ab2dff2dbb..7c59f7cfad4 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1SalesCreditMemosE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1SalesCreditMemosE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Sales] [Credit Memo]
end;
@@ -769,12 +772,17 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
local procedure CreateCorrectiveSalesCreditMemo(var SalesCrMemoHeader: Record "Sales Cr.Memo Header")
var
+ ReasonCode: Record "Reason Code";
SalesInvoiceHeader: Record "Sales Invoice Header";
SalesHeader: Record "Sales Header";
InvoiceCode: Code[20];
begin
LibrarySales.CreateSalesInvoice(SalesHeader);
ModifySalesHeaderPostingDate(SalesHeader, WORKDATE());
+ EnsureReasonCode();
+ ReasonCode.FindFirst();
+ SalesHeader.Validate("Reason Code", ReasonCode.Code);
+ SalesHeader.Modify(true);
InvoiceCode := LibrarySales.PostSalesDocument(SalesHeader, false, true);
SalesInvoiceHeader.Get(InvoiceCode);
Commit();
@@ -783,6 +791,16 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
SalesCrMemoHeader.FindFirst();
end;
+ local procedure EnsureReasonCode()
+ var
+ ReasonCode: Record "Reason Code";
+ begin
+ if not ReasonCode.IsEmpty() then
+ exit;
+
+ LibraryERM.CreateReasonCode(ReasonCode);
+ end;
+
local procedure CreateDraftSalesCreditMemo(var SalesHeader: Record "Sales Header")
begin
LibrarySales.CreateSalesCreditMemo(SalesHeader);
@@ -952,6 +970,8 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
SalesHeader1RecordRef.GETTABLE(SalesHeader1);
SalesHeader2RecordRef.GETTABLE(SalesHeader2);
+ LibraryGraphMgt.AddFieldToIgnoreIfExists(
+ TempIgnoredFieldsForComparison, DATABASE::"Sales Header", 'Operation Occurred Date');
Assert.RecordsAreEqualExceptCertainFields(
SalesHeader1RecordRef, SalesHeader2RecordRef, TempIgnoredFieldsForComparison, 'Credit Memos do not match');
@@ -1071,4 +1091,3 @@ codeunit 139728 "APIV1 - Sales Credit Memos E2E"
JobQueueEntry.Cancel();
end;
}
-
diff --git a/src/Apps/W1/APIV1/test/src/APIV1SalesInvLinesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1SalesInvLinesE2E.Codeunit.al
index 86e95b3f302..044c5aa6417 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1SalesInvLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1SalesInvLinesE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139734 "APIV1 - Sales Inv. Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Sales] [Invoice]
end;
@@ -935,6 +938,7 @@ codeunit 139734 "APIV1 - Sales Inv. Lines E2E"
TargetURL: Text;
ResponseText: Text;
InvoiceLineJSON: Text;
+ LineDescription: Text;
begin
// [SCENARIO] Posting a line with description only will get a type item
// [GIVEN] A post request with description only
@@ -943,7 +947,8 @@ codeunit 139734 "APIV1 - Sales Inv. Lines E2E"
COMMIT();
- InvoiceLineJSON := '{"description":"test"}';
+ LineDescription := Format(CreateGuid());
+ InvoiceLineJSON := LibraryGraphMgt.AddPropertytoJSON('', 'description', LineDescription);
// [WHEN] we just POST a blank line
TargetURL := LibraryGraphMgt
@@ -955,8 +960,10 @@ codeunit 139734 "APIV1 - Sales Inv. Lines E2E"
LibraryGraphMgt.PostToWebService(TargetURL, InvoiceLineJSON, ResponseText);
// [THEN] Line of type Item is created
- FindFirstSalesLine(SalesHeader, SalesLine);
- SalesLine.FINDLAST();
+ SalesLine.SETRANGE("Document Type", SalesHeader."Document Type");
+ SalesLine.SETRANGE("Document No.", SalesHeader."No.");
+ SalesLine.SETRANGE(Description, LineDescription);
+ Assert.IsTrue(SalesLine.FINDFIRST(), 'Could not find the created invoice line');
Assert.AreEqual('', SalesLine."No.", 'No should be blank');
Assert.AreEqual(SalesLine.Type, SalesLine.Type::Item, 'Wrong type is set');
VerifyIdsAreBlank(ResponseText);
@@ -1070,6 +1077,8 @@ codeunit 139734 "APIV1 - Sales Inv. Lines E2E"
Assert.AreNotEqual('', InvoiceLineID, 'ID should not be empty');
LineNo := SalesLine."Line No.";
LibraryInventory.CreateItem(Item);
+ LibraryGraphDocumentTools.EnsureVATPostingSetupExists(
+ SalesLine."VAT Bus. Posting Group", Item."VAT Prod. Posting Group");
InvoiceLineJSON := STRSUBSTNO('{"itemId":"%1"}', LibraryGraphMgt.StripBrackets(Format(Item.SystemId)));
COMMIT();
diff --git a/src/Apps/W1/APIV1/test/src/APIV1SalesOrderLinesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1SalesOrderLinesE2E.Codeunit.al
index 2afa4cf7193..29f07470e21 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1SalesOrderLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1SalesOrderLinesE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139735 "APIV1 - Sales Order Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Sales] [Order]
end;
@@ -712,6 +715,7 @@ codeunit 139735 "APIV1 - Sales Order Lines E2E"
TargetURL: Text;
ResponseText: Text;
OrderLineJSON: Text;
+ LineDescription: Text;
begin
// [SCENARIO] Posting a line with description only will get a type item
// [GIVEN] A post request with description only
@@ -720,7 +724,8 @@ codeunit 139735 "APIV1 - Sales Order Lines E2E"
COMMIT();
- OrderLineJSON := '{"description":"test"}';
+ LineDescription := Format(CreateGuid());
+ OrderLineJSON := LibraryGraphMgt.AddPropertytoJSON('', 'description', LineDescription);
// [WHEN] we just POST a blank line
TargetURL := LibraryGraphMgt
@@ -732,8 +737,10 @@ codeunit 139735 "APIV1 - Sales Order Lines E2E"
LibraryGraphMgt.PostToWebService(TargetURL, OrderLineJSON, ResponseText);
// [THEN] Line of type Item is created
- FindFirstSalesLine(SalesHeader, SalesLine);
- SalesLine.FINDLAST();
+ SalesLine.SETRANGE("Document Type", SalesHeader."Document Type");
+ SalesLine.SETRANGE("Document No.", SalesHeader."No.");
+ SalesLine.SETRANGE(Description, LineDescription);
+ Assert.IsTrue(SalesLine.FINDFIRST(), 'Could not find the created order line');
Assert.AreEqual('', SalesLine."No.", 'No should be blank');
Assert.AreEqual(SalesLine.Type, SalesLine.Type::Item, 'Wrong type is set');
@@ -844,6 +851,8 @@ codeunit 139735 "APIV1 - Sales Order Lines E2E"
Assert.AreNotEqual('', OrderId, 'ID should not be empty');
LibraryInventory.CreateItem(Item);
+ LibraryGraphDocumentTools.EnsureVATPostingSetupExists(
+ SalesLine."VAT Bus. Posting Group", Item."VAT Prod. Posting Group");
OrderLineJSON := STRSUBSTNO('{"itemId":"%1"}', LibraryGraphMgt.StripBrackets(Format(Item.SystemId)));
COMMIT();
@@ -1279,14 +1288,6 @@ codeunit 139735 "APIV1 - Sales Order Lines E2E"
-
-
-
-
-
-
-
-
diff --git a/src/Apps/W1/APIV1/test/src/APIV1SalesOrdersE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1SalesOrdersE2E.Codeunit.al
index ec9fb22f169..287b0b2233d 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1SalesOrdersE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1SalesOrdersE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139711 "APIV1 - Sales Orders E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Sales] [Order]
end;
@@ -381,6 +384,8 @@ codeunit 139711 "APIV1 - Sales Orders E2E"
PageSalesHeader.Get(PageSalesHeader."Document Type"::Order, SalesOrder."No.".VALUE());
ApiRecordRef.GetTable(ApiSalesHeader);
PageRecordRef.GetTable(PageSalesHeader);
+ LibraryGraphMgt.AddFieldToIgnoreIfExists(
+ TempIgnoredFieldsForComparison, DATABASE::"Sales Header", 'Operation Occurred Date');
Assert.RecordsAreEqualExceptCertainFields(ApiRecordRef, PageRecordRef, TempIgnoredFieldsForComparison,
'Page and API order do not match');
diff --git a/src/Apps/W1/APIV1/test/src/APIV1SalesQuoteLinesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1SalesQuoteLinesE2E.Codeunit.al
index b4e577f634b..d1c0388110f 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1SalesQuoteLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1SalesQuoteLinesE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139736 "APIV1 - Sales Quote Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Sales] [Quote]
end;
@@ -614,6 +617,7 @@ codeunit 139736 "APIV1 - Sales Quote Lines E2E"
TargetURL: Text;
ResponseText: Text;
QuoteLineJSON: Text;
+ LineDescription: Text;
begin
// [SCENARIO] Posting a line with description only will get a type item
// [GIVEN] A post request with description only
@@ -622,7 +626,8 @@ codeunit 139736 "APIV1 - Sales Quote Lines E2E"
COMMIT();
- QuoteLineJSON := '{"description":"test"}';
+ LineDescription := Format(CreateGuid());
+ QuoteLineJSON := LibraryGraphMgt.AddPropertytoJSON('', 'description', LineDescription);
// [WHEN] we just POST a blank line
TargetURL := LibraryGraphMgt
@@ -634,8 +639,10 @@ codeunit 139736 "APIV1 - Sales Quote Lines E2E"
LibraryGraphMgt.PostToWebService(TargetURL, QuoteLineJSON, ResponseText);
// [THEN] Line of type Item is created
- FindFirstSalesLine(SalesHeader, SalesLine);
- SalesLine.FINDLAST();
+ SalesLine.SETRANGE("Document Type", SalesHeader."Document Type");
+ SalesLine.SETRANGE("Document No.", SalesHeader."No.");
+ SalesLine.SETRANGE(Description, LineDescription);
+ Assert.IsTrue(SalesLine.FINDFIRST(), 'Could not find the created quote line');
Assert.AreEqual('', SalesLine."No.", 'No should be blank');
Assert.AreEqual(SalesLine.Type, SalesLine.Type::Item, 'Wrong type is set');
@@ -1005,12 +1012,6 @@ codeunit 139736 "APIV1 - Sales Quote Lines E2E"
-
-
-
-
-
-
diff --git a/src/Apps/W1/APIV1/test/src/APIV1SalesQuotesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1SalesQuotesE2E.Codeunit.al
index b395b79b8e8..14abfeef836 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1SalesQuotesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1SalesQuotesE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139723 "APIV1 - Sales Quotes E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Sales] [Quote]
end;
@@ -367,6 +370,11 @@ codeunit 139723 "APIV1 - Sales Quotes E2E"
PageSalesHeader.Get(PageSalesHeader."Document Type"::Quote, SalesQuote."No.".VALUE());
ApiRecordRef.GETTABLE(ApiSalesHeader);
PageRecordRef.GETTABLE(PageSalesHeader);
+ LibraryGraphMgt.AddFieldToIgnoreIfExists(
+ TempIgnoredFieldsForComparison, DATABASE::"Sales Header", 'Operation Occurred Date');
+ LibraryGraphMgt.AddFieldToIgnoreIfExists(
+ TempIgnoredFieldsForComparison, DATABASE::"Sales Header", 'VAT Reporting Date');
+
Assert.RecordsAreEqualExceptCertainFields(ApiRecordRef, PageRecordRef, TempIgnoredFieldsForComparison,
'Page and API quote do not match');
end;
@@ -770,6 +778,9 @@ codeunit 139723 "APIV1 - Sales Quotes E2E"
LibrarySmallBusiness.CreateCustomer(Customer);
LibrarySmallBusiness.CreateItem(Item);
LibrarySmallBusiness.CreateSalesQuoteHeaderWithLines(SalesHeader, Customer, Item, 1, 1);
+ SalesHeader.Validate("Posting Date", WorkDate());
+ SalesHeader.Validate("Document Date", WorkDate());
+ SalesHeader.Modify(true);
end;
local procedure FindSalesHeader(var SalesHeader: Record "Sales Header"; CustomerNo: Text; QuoteNumber: Text): Boolean
diff --git a/src/Apps/W1/APIV1/test/src/APIV1ShipmentMethodsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1ShipmentMethodsE2E.Codeunit.al
index 09cf7ce2b3e..4bb01dc0057 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1ShipmentMethodsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1ShipmentMethodsE2E.Codeunit.al
@@ -3,10 +3,13 @@ codeunit 139705 "APIV1 - Shipment Methods E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Shipment Method]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1TaxAreasE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1TaxAreasE2E.Codeunit.al
index bffc2b39d55..3004d9e9788 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1TaxAreasE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1TaxAreasE2E.Codeunit.al
@@ -9,6 +9,8 @@ codeunit 139726 "APIV1 - Tax Areas E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Tax Area]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1TrialBalanceE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1TrialBalanceE2E.Codeunit.al
index c495bc2ddfc..bfabf36cddd 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1TrialBalanceE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1TrialBalanceE2E.Codeunit.al
@@ -3,10 +3,13 @@ codeunit 139718 "APIV1 - Trial Balance E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Trial Balance]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1UofME2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1UofME2E.Codeunit.al
index b283bc61d9d..b567c670ad6 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1UofME2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1UofME2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139712 "APIV1 - UofM E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Unit of Measure]
end;
diff --git a/src/Apps/W1/APIV1/test/src/APIV1VendorsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/APIV1VendorsE2E.Codeunit.al
index 44570b29311..324a7d02e3c 100644
--- a/src/Apps/W1/APIV1/test/src/APIV1VendorsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/APIV1VendorsE2E.Codeunit.al
@@ -9,6 +9,8 @@ codeunit 139703 "APIV1 - Vendors E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Vendor]
end;
diff --git a/src/Apps/W1/APIV1/test/src/CountriesRegionsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/CountriesRegionsE2E.Codeunit.al
index 1e4843ec39c..7dd5d7645c9 100644
--- a/src/Apps/W1/APIV1/test/src/CountriesRegionsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/CountriesRegionsE2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139710 "Countries/Regions E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Country/Region]
end;
diff --git a/src/Apps/W1/APIV1/test/src/PaymentMethodsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/PaymentMethodsE2E.Codeunit.al
index 005c5f0add8..dde83f5c15c 100644
--- a/src/Apps/W1/APIV1/test/src/PaymentMethodsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/PaymentMethodsE2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139714 "Payment Methods E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Payment Method]
end;
diff --git a/src/Apps/W1/APIV1/test/src/SalesInvoicesE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/SalesInvoicesE2E.Codeunit.al
index dbf39f9a725..b22f615cfbb 100644
--- a/src/Apps/W1/APIV1/test/src/SalesInvoicesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/SalesInvoicesE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139709 "Sales Invoices E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Sales] [Invoice]
end;
@@ -577,6 +580,9 @@ codeunit 139709 "Sales Invoices E2E"
PageSalesHeader.GET(PageSalesHeader."Document Type"::Invoice, SalesInvoice."No.".VALUE());
ApiRecordRef.GETTABLE(ApiSalesHeader);
PageRecordRef.GETTABLE(PageSalesHeader);
+ LibraryGraphMgt.AddFieldToIgnoreIfExists(
+ TempIgnoredFieldsForComparison, DATABASE::"Sales Header", 'Operation Occurred Date');
+
Assert.RecordsAreEqualExceptCertainFields(ApiRecordRef, PageRecordRef, TempIgnoredFieldsForComparison,
'Page and API Invoice do not match');
@@ -595,6 +601,7 @@ codeunit 139709 "Sales Invoices E2E"
// [SCENARIO 184721] When an invoice is created,the GET Method should update the invoice and assign a total
// [GIVEN] 2 invoices, one posted and one unposted without totals assigned
+ LibraryApplicationArea.EnableFoundationSetup();
LibraryGraphDocumentTools.CreateDocumentWithDiscountPctPending(
SalesHeader, DiscountPct, SalesHeader."Document Type"::Invoice);
SalesHeader.CALCFIELDS("Recalculate Invoice Disc.");
@@ -883,6 +890,7 @@ codeunit 139709 "Sales Invoices E2E"
DocumentId := SalesInvoiceHeader."Draft Invoice SystemId";
// Special case for AU
+ EnsureReasonCode();
LibrarySales.SetDefaultCancelReasonCodeForSalesAndReceivablesSetup();
Commit();
@@ -920,6 +928,7 @@ codeunit 139709 "Sales Invoices E2E"
DocumentId := SalesInvoiceHeader."Draft Invoice SystemId";
// Special case for AU
+ EnsureReasonCode();
LibrarySales.SetDefaultCancelReasonCodeForSalesAndReceivablesSetup();
Commit();
@@ -1235,9 +1244,22 @@ codeunit 139709 "Sales Invoices E2E"
local procedure CreateCancelledSalesInvoice(var SalesInvoiceHeader: Record "Sales Invoice Header")
begin
CreatePostedSalesInvoice(SalesInvoiceHeader);
+ EnsureReasonCode();
+ LibrarySales.SetDefaultCancelReasonCodeForSalesAndReceivablesSetup();
+ Commit();
CODEUNIT.Run(CODEUNIT::"Correct Posted Sales Invoice", SalesInvoiceHeader);
end;
+ local procedure EnsureReasonCode()
+ var
+ ReasonCode: Record "Reason Code";
+ begin
+ if not ReasonCode.IsEmpty() then
+ exit;
+
+ LibraryERM.CreateReasonCode(ReasonCode);
+ end;
+
local procedure CreateSalesInvoices(var InvoiceID1: Text; var InvoiceID2: Text)
var
SalesInvoiceHeader: Record "Sales Invoice Header";
diff --git a/src/Apps/W1/APIV1/test/src/TaxGroupsE2E.Codeunit.al b/src/Apps/W1/APIV1/test/src/TaxGroupsE2E.Codeunit.al
index 15b2166d131..14660cf9468 100644
--- a/src/Apps/W1/APIV1/test/src/TaxGroupsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV1/test/src/TaxGroupsE2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139708 "Tax Groups E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Tax Group]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2AccountingPeriodsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2AccountingPeriodsE2E.Codeunit.al
index c578df54f2d..84145e2836f 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2AccountingPeriodsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2AccountingPeriodsE2E.Codeunit.al
@@ -3,6 +3,12 @@ codeunit 139859 "APIV2 - Accounting Periods E2E"
Subtype = Test;
RequiredTestIsolation = Disabled;
+ trigger OnRun()
+ begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
+
var
Assert: Codeunit Assert;
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
diff --git a/src/Apps/W1/APIV2/test/src/APIV2AccountsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2AccountsE2E.Codeunit.al
index 9389de358ba..cd2f3f45f2d 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2AccountsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2AccountsE2E.Codeunit.al
@@ -3,10 +3,13 @@ codeunit 139801 "APIV2 - Accounts E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Account]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2AgedAPE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2AgedAPE2E.Codeunit.al
index 2418082ad5b..60ee23d08a4 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2AgedAPE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2AgedAPE2E.Codeunit.al
@@ -3,10 +3,13 @@ codeunit 139819 "APIV2 - Aged AP E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Purchase] [Aged Report]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2AgedARE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2AgedARE2E.Codeunit.al
index 2a280d83eb5..d38e7657186 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2AgedARE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2AgedARE2E.Codeunit.al
@@ -3,10 +3,13 @@ codeunit 139820 "APIV2 - Aged AR E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Sales] [Aged Report]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2ApplyVendorEntE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2ApplyVendorEntE2E.Codeunit.al
index 33e17842d8e..c96c8eff9b5 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2ApplyVendorEntE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2ApplyVendorEntE2E.Codeunit.al
@@ -1,11 +1,14 @@
codeunit 139867 "APIV2 - Apply Vendor Ent. E2E"
{
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Vendor Payments] [Apply Vendor Entries]
end;
@@ -159,7 +162,8 @@ codeunit 139867 "APIV2 - Apply Vendor Ent. E2E"
Assert.IsTrue(LibraryGraphMgt.GetObjectIDFromJSON(EntryJSON, 'id', EntryId), 'The apply vendor entry should have an id');
// [WHEN] we PATCH the entry to apply it
- TargetURL := TargetURL + '(' + LibraryGraphMgt.StripBrackets(EntryId) + ')';
+ TargetURL := LibraryGraphMgt.AppendPathToTargetURL(
+ TargetURL, '(' + LibraryGraphMgt.StripBrackets(EntryId) + ')');
LibraryGraphMgt.PatchToWebService(TargetURL, '{"applied": true}', ResponseText);
// [THEN] the vendor payment is now applied
diff --git a/src/Apps/W1/APIV2/test/src/APIV2ApprovalEntriesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2ApprovalEntriesE2E.Codeunit.al
index 9ae78501641..e7909a8c44d 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2ApprovalEntriesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2ApprovalEntriesE2E.Codeunit.al
@@ -1,10 +1,14 @@
codeunit 139917 "APIV2 - Approval Entries E2E"
{
-
Subtype = Test;
TestType = IntegrationTest;
TestPermissions = Disabled;
+ trigger OnRun()
+ begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ end;
+
var
Assert: Codeunit Assert;
LibraryApproval: Codeunit "Library - Document Approvals";
diff --git a/src/Apps/W1/APIV2/test/src/APIV2ApprovalUserSetupE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2ApprovalUserSetupE2E.Codeunit.al
index 2a259376141..e2db1b84094 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2ApprovalUserSetupE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2ApprovalUserSetupE2E.Codeunit.al
@@ -1,10 +1,14 @@
codeunit 139918 "APIV2 - Approval UserSetup E2E"
{
-
Subtype = Test;
TestType = IntegrationTest;
TestPermissions = Disabled;
+ trigger OnRun()
+ begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ end;
+
var
Assert: Codeunit Assert;
LibraryApproval: Codeunit "Library - Document Approvals";
diff --git a/src/Apps/W1/APIV2/test/src/APIV2AssemblyOrdersE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2AssemblyOrdersE2E.Codeunit.al
index 9de9e6343ae..232ffc6bd7b 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2AssemblyOrdersE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2AssemblyOrdersE2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139925 "APIV2 - Assembly Orders E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Assembly] [Order]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2AttachmentsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2AttachmentsE2E.Codeunit.al
index 0ba1716ac2d..f54ed8e6e33 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2AttachmentsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2AttachmentsE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139833 "APIV2 - Attachments E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Attachment]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2AutomationRSPackage.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2AutomationRSPackage.Codeunit.al
index 976aa5679b5..e27aeadffd3 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2AutomationRSPackage.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2AutomationRSPackage.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139831 "APIV2 - Automation RS Package"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Config. Package]
end;
@@ -16,7 +19,6 @@ codeunit 139831 "APIV2 - Automation RS Package"
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
LibraryUtility: Codeunit "Library - Utility";
Assert: Codeunit "Assert";
- IsInitialized: Boolean;
SamplePackageFile: Text;
PackageCodeTxt: Label 'code', Locked = true;
ActionImportTxt: Label 'Microsoft.NAV.import';
@@ -31,11 +33,7 @@ codeunit 139831 "APIV2 - Automation RS Package"
begin
TenantConfigPackageFile.DELETEALL(true);
- if IsInitialized then
- exit;
-
SamplePackageFile := GenerateSamplePackageFile();
- IsInitialized := true;
end;
[Test]
@@ -142,11 +140,12 @@ codeunit 139831 "APIV2 - Automation RS Package"
StartTime := CurrentDateTime();
repeat
+ SelectLatestVersion();
ConfigPackage.Find();
until (not IsImportPending(ConfigPackage)) or
(CurrentDateTime() - StartTime > 180000);
- Assert.AreEqual(ConfigPackage."Import Status", ConfigPackage."Import Status"::Completed, 'Import Status should be completed.');
+ Assert.AreEqual(ConfigPackage."Import Status"::Completed, ConfigPackage."Import Status", 'Import Status should be completed.');
// clean up after the test
LibraryRapidStart.CleanUp(ConfigPackage.Code);
@@ -190,11 +189,12 @@ codeunit 139831 "APIV2 - Automation RS Package"
StartTime := CurrentDateTime();
repeat
+ SelectLatestVersion();
ConfigPackage.Find();
until (not IsImportPending(ConfigPackage)) or
(CurrentDateTime() - StartTime > 180000);
- Assert.AreEqual(ConfigPackage."Import Status", ConfigPackage."Import Status"::Error, 'Import Status should be error.');
+ Assert.AreEqual(ConfigPackage."Import Status"::Error, ConfigPackage."Import Status", 'Import Status should be error.');
// clean up after the test
LibraryRapidStart.CleanUp(ConfigPackage.Code);
@@ -240,11 +240,12 @@ codeunit 139831 "APIV2 - Automation RS Package"
StartTime := CurrentDateTime();
repeat
+ SelectLatestVersion();
ConfigPackage.Find();
until (not IsApplyPending(ConfigPackage)) or
(CurrentDateTime() - StartTime > 180000);
- Assert.AreEqual(ConfigPackage."Apply Status", ConfigPackage."Apply Status"::Completed, 'Apply Status should be completed.');
+ Assert.AreEqual(ConfigPackage."Apply Status"::Completed, ConfigPackage."Apply Status", 'Apply Status should be completed.');
Assert.AreEqual(0, ConfigPackage."No. of Errors", 'There should be no errors.');
// clean up after the test
@@ -323,7 +324,7 @@ codeunit 139831 "APIV2 - Automation RS Package"
local procedure IsApplyPending(var ConfigPackage: Record "Config. Package"): Boolean
begin
- exit(ConfigPackage."Apply Status" IN [ConfigPackage."Import Status"::Scheduled, ConfigPackage."Apply Status"::InProgress]);
+ exit(ConfigPackage."Apply Status" IN [ConfigPackage."Apply Status"::Scheduled, ConfigPackage."Apply Status"::InProgress]);
end;
local procedure CreateTestPackage(var ConfigPackage: Record "Config. Package")
diff --git a/src/Apps/W1/APIV2/test/src/APIV2BalanceSheetE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2BalanceSheetE2E.Codeunit.al
index f99099da896..170bca913d9 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2BalanceSheetE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2BalanceSheetE2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139815 "APIV2 - Balance Sheet E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Balance Sheet]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2BlPurchOrdersE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2BlPurchOrdersE2E.Codeunit.al
index 25dbc2bfd72..eb5f06f51c8 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2BlPurchOrdersE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2BlPurchOrdersE2E.Codeunit.al
@@ -8,6 +8,7 @@ codeunit 139908 "APIV2 - Bl. Purch. Orders E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
// [FEATURE] [Graph] [Purchase] [Blanket Order]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2BlSalesOrdersE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2BlSalesOrdersE2E.Codeunit.al
index e70ad8a2eb3..22ab626cb64 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2BlSalesOrdersE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2BlSalesOrdersE2E.Codeunit.al
@@ -8,6 +8,7 @@ codeunit 139909 "APIV2 - Bl. Sales Orders E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
// [FEATURE] [Graph] [Sales] [Blanket Order]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2CashFlowStatementE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2CashFlowStatementE2E.Codeunit.al
index 9ff2fa17758..2e24faf1cca 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2CashFlowStatementE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2CashFlowStatementE2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139817 "APIV2 - CashFlow Statement E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Cash Flow Statement]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2CompanyInfoE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2CompanyInfoE2E.Codeunit.al
index d72100713e1..49f197ff4eb 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2CompanyInfoE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2CompanyInfoE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139806 "APIV2 - Company Info. E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = IntegrationTest;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Company Information]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2ContactsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2ContactsE2E.Codeunit.al
index 431c3a98b1c..c0f50c7d175 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2ContactsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2ContactsE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139866 "APIV2 - Contacts E2E"
// version Test,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Api] [Contact]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2ContactsInfE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2ContactsInfE2E.Codeunit.al
index 9a1e8721d24..a258a925ddf 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2ContactsInfE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2ContactsInfE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139853 "APIV2 - Contacts Inf. E2E"
// version Test,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Contact]
end;
@@ -73,7 +76,9 @@ codeunit 139853 "APIV2 - Contacts Inf. E2E"
Customer.SystemId,
Page::"APIV2 - Customers",
CustomersServiceNameTxt,
- ContactsInformationServiceNameTxt) + '(' + LibraryGraphMgt.StripBrackets(Format(Contact.SystemId)) + ')/' + ContactServiceNameTxt;
+ ContactsInformationServiceNameTxt);
+ TargetURL := LibraryGraphMgt.AppendPathToTargetURL(
+ TargetURL, '(' + LibraryGraphMgt.StripBrackets(Format(Contact.SystemId)) + ')/' + ContactServiceNameTxt);
LibraryGraphMgt.GetFromWebService(ResponseText, TargetURL);
// [THEN] Response contains two contacts
@@ -133,7 +138,9 @@ codeunit 139853 "APIV2 - Contacts Inf. E2E"
Vendor.SystemId,
Page::"APIV2 - Vendors",
VendorsServiceNameTxt,
- ContactsInformationServiceNameTxt) + '(' + LibraryGraphMgt.StripBrackets(Format(Contact.SystemId)) + ')/' + ContactServiceNameTxt;
+ ContactsInformationServiceNameTxt);
+ TargetURL := LibraryGraphMgt.AppendPathToTargetURL(
+ TargetURL, '(' + LibraryGraphMgt.StripBrackets(Format(Contact.SystemId)) + ')/' + ContactServiceNameTxt);
LibraryGraphMgt.GetFromWebService(ResponseText, TargetURL);
// [THEN] Response contains two contacts
diff --git a/src/Apps/W1/APIV2/test/src/APIV2CountriesRegionsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2CountriesRegionsE2E.Codeunit.al
index 0bd63f98d47..b7b2b363706 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2CountriesRegionsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2CountriesRegionsE2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139810 "APIV2 - Countries/Regions E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Country/Region]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2CurrenciesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2CurrenciesE2E.Codeunit.al
index 5e8bfb987bc..b61bda6589d 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2CurrenciesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2CurrenciesE2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139813 "APIV2 - Currencies E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Currency]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2CurrencyExchRateE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2CurrencyExchRateE2E.Codeunit.al
index 36e62a1b344..e339500c6c3 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2CurrencyExchRateE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2CurrencyExchRateE2E.Codeunit.al
@@ -1,6 +1,13 @@
codeunit 139858 "APIV2 Currency Exch. Rate E2E"
{
Subtype = Test;
+ RequiredTestIsolation = Disabled;
+
+ trigger OnRun()
+ begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
var
LibraryERM: Codeunit "Library - ERM";
diff --git a/src/Apps/W1/APIV2/test/src/APIV2CustRetReasonsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2CustRetReasonsE2E.Codeunit.al
index 5749e8a0fb7..12c7f561d70 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2CustRetReasonsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2CustRetReasonsE2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139869 "APIV2 - Cust. Ret. Reasons E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Sales] [Credit Memo]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2CustomerPaymentsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2CustomerPaymentsE2E.Codeunit.al
index 98a0587a476..25947ca49d4 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2CustomerPaymentsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2CustomerPaymentsE2E.Codeunit.al
@@ -1,11 +1,14 @@
codeunit 139840 "APIV2 - Customer Payments E2E"
{
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Customer Payments]
end;
@@ -16,6 +19,7 @@ codeunit 139840 "APIV2 - Customer Payments E2E"
Assert: Codeunit Assert;
GraphMgtCustomerPayments: Codeunit "Graph Mgt - Customer Payments";
LibraryGraphJournalLines: Codeunit "Library - Graph Journal Lines";
+ LibraryERM: Codeunit "Library - ERM";
GraphMgtJournal: Codeunit "Graph Mgt - Journal";
ServiceNameTxt: Label 'customerPaymentJournals';
ServiceSubpageNameTxt: Label 'customerPayments';
@@ -34,7 +38,6 @@ codeunit 139840 "APIV2 - Customer Payments E2E"
SalesInvoiceHeader: Record "Sales Invoice Header";
GenJournalLine: Record "Gen. Journal Line";
GenJournalBatch: Record "Gen. Journal Batch";
- LibraryERM: Codeunit "Library - ERM";
SalesInvoiceAggregator: Codeunit "Sales Invoice Aggregator";
JournalName: Code[10];
Amount: Decimal;
@@ -769,6 +772,7 @@ codeunit 139840 "APIV2 - Customer Payments E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
LibraryTestInitialize.OnTestInitialize(Codeunit::"APIV2 - Customer Payments E2E");
if not isInitialized then
diff --git a/src/Apps/W1/APIV2/test/src/APIV2CustomersE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2CustomersE2E.Codeunit.al
index 567d0166f0a..a8b5a09afa8 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2CustomersE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2CustomersE2E.Codeunit.al
@@ -9,6 +9,8 @@ codeunit 139802 "APIV2 - Customers E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Customer]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2DefaultDimensionsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2DefaultDimensionsE2E.Codeunit.al
index 5a72973f69d..451b9701d5e 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2DefaultDimensionsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2DefaultDimensionsE2E.Codeunit.al
@@ -9,6 +9,8 @@ codeunit 139832 "APIV2 - Default Dimensions E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Default Dimension]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2DimSetLinesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2DimSetLinesE2E.Codeunit.al
index 1348a46e0fc..179b6a814cd 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2DimSetLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2DimSetLinesE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Dimension Line]
end;
@@ -870,7 +873,9 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
// [WHEN] we PATCH the JSON to the web service, with the corresponding keys
ResponseText := '';
- TargetURL := LibraryGraphMgt.CreateTargetURLWithSubpage(DocumentId, APIPage, DocServiceNameTxt, ServiceNameTxt) + '(' + LibraryGraphMgt.StripBrackets(Format(DimensionGUID)) + ')';
+ TargetURL := LibraryGraphMgt.CreateTargetURLWithSubpage(DocumentId, APIPage, DocServiceNameTxt, ServiceNameTxt);
+ TargetURL := LibraryGraphMgt.AppendPathToTargetURL(
+ TargetURL, '(' + LibraryGraphMgt.StripBrackets(Format(DimensionGUID)) + ')');
LibraryGraphMgt.PatchToWebService(TargetURL, LineJSON[2], ResponseText);
// [THEN] the dimension lines in the journal should have the values that were given
@@ -953,7 +958,10 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
// [WHEN] we PATCH the JSON to the web service, with the new dimension code
ResponseText := '';
- TargetURL := LibraryGraphMgt.CreateTargetURLWithSubpage(JournalLineGUID, Page::"APIV2 - JournalLines", 'journalLines', ServiceNameTxt) + '(' + LibraryGraphMgt.StripBrackets(Format(DimensionGUID)) + ')';
+ TargetURL := LibraryGraphMgt.CreateTargetURLWithSubpage(
+ JournalLineGUID, Page::"APIV2 - JournalLines", 'journalLines', ServiceNameTxt);
+ TargetURL := LibraryGraphMgt.AppendPathToTargetURL(
+ TargetURL, '(' + LibraryGraphMgt.StripBrackets(Format(DimensionGUID)) + ')');
asserterror LibraryGraphMgt.PatchToWebService(TargetURL, LineJSON[2], ResponseText);
// [THEN] the patch should fail and the dimension line should remain the same
@@ -1185,7 +1193,9 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
LibraryGraphMgt.PostToWebService(TargetURL, LineJSON, ResponseText);
// [WHEN] we DELETE the dimension line from the web service, with the corresponding keys
- TargetURL := LibraryGraphMgt.CreateTargetURLWithSubpage(DocumentId, APIPage, DocServiceNameTxt, ServiceNameTxt) + '(' + LibraryGraphMgt.StripBrackets(Format(Dimension.SystemId)) + ')';
+ TargetURL := LibraryGraphMgt.CreateTargetURLWithSubpage(DocumentId, APIPage, DocServiceNameTxt, ServiceNameTxt);
+ TargetURL := LibraryGraphMgt.AppendPathToTargetURL(
+ TargetURL, '(' + LibraryGraphMgt.StripBrackets(Format(Dimension.SystemId)) + ')');
LibraryGraphMgt.DeleteFromWebService(TargetURL, '', ResponseText);
case DocumentRecordRef.Number() of
@@ -1241,14 +1251,17 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
Commit();
TargetURL := LibraryGraphMgt.CreateTargetURLWithSubpage(ParentId, ParentAPIPage, ParentServiceNameTxt, LineServiceNameTxt);
- TargetURL := TargetURL + '(' + LibraryGraphMgt.StripBrackets(LineId) + ')' + '/dimensionSetLines';
+ TargetURL := LibraryGraphMgt.AppendPathToTargetURL(
+ TargetURL, '(' + LibraryGraphMgt.StripBrackets(LineId) + ')/dimensionSetLines');
LibraryGraphMgt.PostToWebService(TargetURL, LineJSON, ResponseText);
// [WHEN] we DELETE the dimension line from the web service, with the corresponding keys
ResponseText := '';
TargetURL := LibraryGraphMgt.CreateTargetURLWithSubpage(ParentId, ParentAPIPage, ParentServiceNameTxt, LineServiceNameTxt);
- TargetURL := TargetURL + '(' + LibraryGraphMgt.StripBrackets(LineId) + ')' + '/dimensionSetLines';
- TargetURL := TargetURL + '(' + LibraryGraphMgt.StripBrackets(Format(Dimension.SystemId)) + ')';
+ TargetURL := LibraryGraphMgt.AppendPathToTargetURL(
+ TargetURL,
+ '(' + LibraryGraphMgt.StripBrackets(LineId) + ')/dimensionSetLines(' +
+ LibraryGraphMgt.StripBrackets(Format(Dimension.SystemId)) + ')');
LibraryGraphMgt.DeleteFromWebService(TargetURL, '', ResponseText);
@@ -1357,7 +1370,8 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
// [WHEN] we POST the JSON to the web service
TargetURL := LibraryGraphMgt.CreateTargetURLWithSubpage(ParentId, ParentAPIPage, ParentServiceNameTxt, LineServiceNameTxt);
- TargetURL := TargetURL + '(' + LibraryGraphMgt.StripBrackets(LineId) + ')' + '/dimensionSetLines';
+ TargetURL := LibraryGraphMgt.AppendPathToTargetURL(
+ TargetURL, '(' + LibraryGraphMgt.StripBrackets(LineId) + ')/dimensionSetLines');
LibraryGraphMgt.PostToWebService(TargetURL, LineJSON, ResponseText);
@@ -1456,7 +1470,8 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
// [GIVEN] the dimension lines are added
// [WHEN] we POST the JSON to the web service
TargetURL := LibraryGraphMgt.CreateTargetURLWithSubpage(ParentId, ParentAPIPage, ParentServiceNameTxt, LineServiceNameTxt);
- TargetURL := TargetURL + '(' + LibraryGraphMgt.StripBrackets(DocumentId) + ')' + '/dimensionSetLines';
+ TargetURL := LibraryGraphMgt.AppendPathToTargetURL(
+ TargetURL, '(' + LibraryGraphMgt.StripBrackets(DocumentId) + ')/dimensionSetLines');
LibraryGraphMgt.PostToWebService(TargetURL, LineJSON[2], ResponseText);
LibraryGraphMgt.PostToWebService(TargetURL, LineJSON[1], ResponseText);
@@ -1504,15 +1519,18 @@ codeunit 139825 "APIV2 - Dim. Set Lines E2E"
Commit();
TargetURL := LibraryGraphMgt.CreateTargetURLWithSubpage(ParentId, ParentAPIPage, ParentServiceNameTxt, LineServiceNameTxt);
- TargetURL := TargetURL + '(' + LibraryGraphMgt.StripBrackets(LineId) + ')' + '/dimensionSetLines';
+ TargetURL := LibraryGraphMgt.AppendPathToTargetURL(
+ TargetURL, '(' + LibraryGraphMgt.StripBrackets(LineId) + ')/dimensionSetLines');
LibraryGraphMgt.PostToWebService(TargetURL, LineJSON[1], ResponseText);
// [WHEN] we PATCH the JSON to the web service, with the corresponding keys
ResponseText := '';
TargetURL := LibraryGraphMgt.CreateTargetURLWithSubpage(ParentId, ParentAPIPage, ParentServiceNameTxt, LineServiceNameTxt);
- TargetURL := TargetURL + '(' + LibraryGraphMgt.StripBrackets(LineId) + ')' + '/dimensionSetLines';
- TargetURL := TargetURL + '(' + LibraryGraphMgt.StripBrackets(Format(DimensionGUID)) + ')';
+ TargetURL := LibraryGraphMgt.AppendPathToTargetURL(
+ TargetURL,
+ '(' + LibraryGraphMgt.StripBrackets(LineId) + ')/dimensionSetLines(' +
+ LibraryGraphMgt.StripBrackets(Format(DimensionGUID)) + ')');
LibraryGraphMgt.PatchToWebService(TargetURL, LineJSON[2], ResponseText);
// [THEN] the dimension lines in the journal should have the values that were given
diff --git a/src/Apps/W1/APIV2/test/src/APIV2DimensionsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2DimensionsE2E.Codeunit.al
index 9b14ca531ea..3a19c7bffb5 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2DimensionsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2DimensionsE2E.Codeunit.al
@@ -3,10 +3,13 @@ codeunit 139824 "APIV2 - Dimensions E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Dimension]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2DocumentAttachE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2DocumentAttachE2E.Codeunit.al
index d38126db6a0..73a6c39be5c 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2DocumentAttachE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2DocumentAttachE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139899 "APIV2 - Document Attach. E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Attachment]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2EmployeesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2EmployeesE2E.Codeunit.al
index 9dca78748ec..115bc5c0775 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2EmployeesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2EmployeesE2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139822 "APIV2 - Employees E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Employee]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2FALocationsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2FALocationsE2E.Codeunit.al
index 9a23cb8f5c7..230df3680e1 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2FALocationsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2FALocationsE2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139906 "APIV2 - FA Locations E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Api] [Location]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2FixedAssetsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2FixedAssetsE2E.Codeunit.al
index 3efd9d6a789..c5e8b0ae738 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2FixedAssetsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2FixedAssetsE2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139907 "APIV2 - Fixed Assets E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Customer]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2GLEntriesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2GLEntriesE2E.Codeunit.al
index 29085e3a19e..28bd0ee224c 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2GLEntriesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2GLEntriesE2E.Codeunit.al
@@ -3,20 +3,23 @@ codeunit 139830 "APIV2 - GLEntries E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [G/L Entry]
end;
var
Assert: Codeunit "Assert";
LibraryERM: Codeunit "Library - ERM";
- LibraryVariableStorage: Codeunit "Library - Variable Storage";
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
IsInitialized: Boolean;
+ JournalTemplateName: Code[10];
ServiceNameTxt: Label 'generalLedgerEntries';
local procedure Initialize()
@@ -89,7 +92,7 @@ codeunit 139830 "APIV2 - GLEntries E2E"
CreateGeneralJournalBatch(GenJournalBatch);
// Create General Journal Line.
- LibraryVariableStorage.Enqueue(GenJournalBatch."Journal Template Name");
+ JournalTemplateName := GenJournalBatch."Journal Template Name";
GeneralJournal.TRAP();
GeneralJournal.OPENEDIT();
GeneralJournal."Account Type".SetValue(GenJournalLine."Account Type"::"G/L Account");
@@ -119,7 +122,6 @@ codeunit 139830 "APIV2 - GLEntries E2E"
local procedure UpdateAmountOnGenJournalLine(GenJournalBatch: Record "Gen. Journal Batch"; var GeneralJournal: TestPage "General Journal")
begin
- LibraryVariableStorage.Enqueue(GenJournalBatch."Journal Template Name");
LibraryERM.UpdateAmountOnGenJournalLine(GenJournalBatch, GeneralJournal);
end;
@@ -145,7 +147,7 @@ codeunit 139830 "APIV2 - GLEntries E2E"
[ModalPageHandler]
procedure GeneralJournalTemplateHandler(var GeneralJournalTemplateList: TestPage 250)
begin
- GeneralJournalTemplateList.FILTER.SetFilter(Name, LibraryVariableStorage.DequeueText());
+ GeneralJournalTemplateList.FILTER.SetFilter(Name, JournalTemplateName);
GeneralJournalTemplateList.OK().INVOKE();
end;
}
@@ -163,4 +165,3 @@ codeunit 139830 "APIV2 - GLEntries E2E"
-
diff --git a/src/Apps/W1/APIV2/test/src/APIV2GLSetupE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2GLSetupE2E.Codeunit.al
index 187cb7f3af7..37f8951ed30 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2GLSetupE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2GLSetupE2E.Codeunit.al
@@ -1,6 +1,13 @@
codeunit 139860 "APIV2 - G/L Setup E2E"
{
Subtype = Test;
+ RequiredTestIsolation = Disabled;
+
+ trigger OnRun()
+ begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
var
Assert: Codeunit "Assert";
diff --git a/src/Apps/W1/APIV2/test/src/APIV2GenProdPostGroupE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2GenProdPostGroupE2E.Codeunit.al
index 6120bf37cdd..912b072ba82 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2GenProdPostGroupE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2GenProdPostGroupE2E.Codeunit.al
@@ -1,10 +1,13 @@
codeunit 139856 "APIV2 - GenProdPostGroup E2E"
{
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
end;
var
diff --git a/src/Apps/W1/APIV2/test/src/APIV2IncomeStatementE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2IncomeStatementE2E.Codeunit.al
index 94109479bc6..ede4a7bdb65 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2IncomeStatementE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2IncomeStatementE2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139816 "APIV2 - Income Statement E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Income Statement]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2InventoryPostGroupE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2InventoryPostGroupE2E.Codeunit.al
index 3f357b613b8..4a9b1e656b1 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2InventoryPostGroupE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2InventoryPostGroupE2E.Codeunit.al
@@ -1,9 +1,12 @@
codeunit 139857 "APIV2 - InventoryPostGroup E2E"
{
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
end;
var
diff --git a/src/Apps/W1/APIV2/test/src/APIV2ItemCategoriesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2ItemCategoriesE2E.Codeunit.al
index 48a2175efe0..b216c84996b 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2ItemCategoriesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2ItemCategoriesE2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139807 "APIV2 - Item Categories E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Item Category]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2ItemVariantsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2ItemVariantsE2E.Codeunit.al
index 2850134d790..911d54c5ef2 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2ItemVariantsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2ItemVariantsE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139839 "APIV2 - Item Variants E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Item] [Variant]
end;
@@ -342,6 +345,7 @@ codeunit 139839 "APIV2 - Item Variants E2E"
var
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
+ LibraryGraphDocumentTools: Codeunit "Library - Graph Document Tools";
LibraryUtility: Codeunit "Library - Utility";
LibraryRandom: Codeunit "Library - Random";
LibraryInventory: Codeunit "Library - Inventory";
@@ -425,6 +429,8 @@ codeunit 139839 "APIV2 - Item Variants E2E"
LibrarySales: Codeunit "Library - Sales";
begin
LibrarySales.CreateSalesOrder(SalesHeader);
+ LibraryGraphDocumentTools.EnsureVATPostingSetupExists(
+ SalesHeader."VAT Bus. Posting Group", Item."VAT Prod. Posting Group");
LibrarySales.CreateSalesLine(SalesLine, SalesHeader, SalesLine.Type::Item, Item."No.", 2);
SalesLine."Variant Code" := ItemVariant.Code;
SalesLine.Modify();
diff --git a/src/Apps/W1/APIV2/test/src/APIV2ItemsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2ItemsE2E.Codeunit.al
index 16e5ef93d25..7335663d78e 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2ItemsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2ItemsE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139800 "APIV2 - Items E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Item]
end;
@@ -624,7 +627,8 @@ codeunit 139800 "APIV2 - Items E2E"
// [WHEN] GETting the item with this relations expanded
TargetURL := LibraryGraphMgt.CreateTargetURL(ItemGUID, Page::"APIV2 - Items", ServiceNameTxt);
- TargetURL += '?$expand=generalProductPostingGroup,inventoryPostingGroup';
+ TargetURL := LibraryGraphMgt.AppendQueryParameterToTargetURL(
+ TargetURL, '$expand=generalProductPostingGroup,inventoryPostingGroup');
LibraryGraphMgt.GetFromWebService(Response, TargetURL);
// [THEN] the response should include them as properties
@@ -937,6 +941,5 @@ codeunit 139800 "APIV2 - Items E2E"
-
diff --git a/src/Apps/W1/APIV2/test/src/APIV2JobQueueEntriesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2JobQueueEntriesE2E.Codeunit.al
index c813481fe5d..35f195a89a5 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2JobQueueEntriesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2JobQueueEntriesE2E.Codeunit.al
@@ -6,6 +6,8 @@ codeunit 139862 "APIV2JobQueueEntriesE2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [JobQueue] [JobQueueEntry]
// This API only supports GET request and it is not editable.
// User can only view the Job Queue Entries or use the action to restart the Job Queue Entry.
@@ -114,7 +116,8 @@ codeunit 139862 "APIV2JobQueueEntriesE2E"
// [WHEN] We trigger the JobQueueEntry reschedule action from the web service
ClearLastError();
TargetURL := LibraryGraphMgt.CreateTargetURL(JobQueueEntry.SystemId, Page::"APIV2 - Job Queue Entries", ServiceNameTxt);
- LibraryGraphMgt.PostToWebServiceAndCheckResponseCode(TargetURL + '/Microsoft.NAV.restart', '', ResponseText, 204);
+ TargetURL := LibraryGraphMgt.AppendPathToTargetURL(TargetURL, '/Microsoft.NAV.restart');
+ LibraryGraphMgt.PostToWebServiceAndCheckResponseCode(TargetURL, '', ResponseText, 204);
// [WHEN] We GET the JobQueueEntry from the web service
TargetURL := LibraryGraphMgt.CreateTargetURL('', Page::"APIV2 - Job Queue Entries", ServiceNameTxt);
diff --git a/src/Apps/W1/APIV2/test/src/APIV2JobQueueLogEntriesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2JobQueueLogEntriesE2E.Codeunit.al
index 85e8931992b..0cb1df8f885 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2JobQueueLogEntriesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2JobQueueLogEntriesE2E.Codeunit.al
@@ -6,6 +6,8 @@ codeunit 139861 "APIV2JobQueueLogEntriesE2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [JobQueue] [JobQueueLogEntry]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2JournalsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2JournalsE2E.Codeunit.al
index 5d6b35a0891..bbb9cd8277e 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2JournalsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2JournalsE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139827 "APIV2 - Journals E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Journal]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2LocationsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2LocationsE2E.Codeunit.al
index 667ae62e2f1..01f511ed2ad 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2LocationsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2LocationsE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139868 "APIV2 - Locations E2E"
// version Test,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Api] [Location]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2OpportunitiesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2OpportunitiesE2E.Codeunit.al
index 50b6a4c45dd..ba92ac2353e 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2OpportunitiesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2OpportunitiesE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139855 "APIV2 - Opportunities E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Opportunity]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PDFDocumentE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PDFDocumentE2E.Codeunit.al
index 63c5aabb741..e212602e8ee 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PDFDocumentE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PDFDocumentE2E.Codeunit.al
@@ -1,11 +1,14 @@
codeunit 139841 "APIV2 - PDF Document E2E"
{
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [PDF]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PaymentMethodsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PaymentMethodsE2E.Codeunit.al
index ca63c08260f..46adb548f0c 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PaymentMethodsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PaymentMethodsE2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139814 "APIV2 - Payment Methods E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Payment Method]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PaymentTermsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PaymentTermsE2E.Codeunit.al
index 0e56cd7e8dc..25f8a81dd46 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PaymentTermsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PaymentTermsE2E.Codeunit.al
@@ -3,10 +3,13 @@ codeunit 139804 "APIV2 - Payment Terms E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Payment Terms]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PicturesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PicturesE2E.Codeunit.al
index 315e0aa2d3d..b92136da197 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PicturesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PicturesE2E.Codeunit.al
@@ -1,11 +1,14 @@
codeunit 139842 "APIV2 - Pictures E2E"
{
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Image]
end;
@@ -1050,7 +1053,8 @@ codeunit 139842 "APIV2 - Pictures E2E"
var
TargetURL: Text;
begin
- TargetURL := GeneratePictureSubPageURL(APIName, APIPageNumber, ID) + '/pictureContent';
+ TargetURL := LibraryGraphMgt.AppendPathToTargetURL(
+ GeneratePictureSubPageURL(APIName, APIPageNumber, ID), '/pictureContent');
exit(TargetURL);
end;
@@ -1101,4 +1105,3 @@ codeunit 139842 "APIV2 - Pictures E2E"
end;
}
-
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PstdApprovalEntriesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PstdApprovalEntriesE2E.Codeunit.al
index 8db85c18246..0a66011ad46 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PstdApprovalEntriesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PstdApprovalEntriesE2E.Codeunit.al
@@ -4,6 +4,11 @@ codeunit 139919 "APIV2 PstdApprovalEntries E2E"
TestType = IntegrationTest;
TestPermissions = Disabled;
+ trigger OnRun()
+ begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ end;
+
var
Assert: Codeunit Assert;
LibrarySales: Codeunit "Library - Sales";
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PurchCrMLinesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PurchCrMLinesE2E.Codeunit.al
index 71212c1efab..e730ff5e20e 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PurchCrMLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PurchCrMLinesE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139874 "APIV2 - Purch. Cr.M. Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Purchase] [Credit Memo]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PurchCrMemosE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PurchCrMemosE2E.Codeunit.al
index 99bf5468337..056da516dda 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PurchCrMemosE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PurchCrMemosE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139865 "APIV2 - Purch. Cr. Memos E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Purchase] [Credit Memo]
end;
@@ -73,6 +76,7 @@ codeunit 139865 "APIV2 - Purch. Cr. Memos E2E"
begin
// [SCENARIO] Create posted and unposted Purchase credit memos and use HTTP POST to delete them
// [GIVEN] 2 credit memos, one posted and one unposted
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
LibraryPurchase.CreateVendorWithAddress(BuyFromVendor);
LibraryPurchase.CreateVendorWithAddress(PayToVendor);
VendorNo := BuyFromVendor."No.";
@@ -308,6 +312,7 @@ codeunit 139865 "APIV2 - Purch. Cr. Memos E2E"
// [SCENARIO] Create an credit memo both through the client UI and through the API
// [SCENARIO] and compare them. They should be the same and have the same fields autocompleted wherever needed.
// [GIVEN] An unposted credit memo
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
LibraryGraphDocumentTools.InitializeUIPage();
LibraryPurchase.CreateVendor(BuyFromVendor);
@@ -669,6 +674,8 @@ codeunit 139865 "APIV2 - Purch. Cr. Memos E2E"
PurchaseHeader1RecordRef.GetTable(PurchaseHeader1);
PurchaseHeader2RecordRef.GetTable(PurchaseHeader2);
+ LibraryGraphMgt.AddFieldToIgnoreIfExists(
+ TempIgnoredFieldsForComparison, Database::"Purchase Header", 'Operation Occurred Date');
Assert.RecordsAreEqualExceptCertainFields(
PurchaseHeader1RecordRef, PurchaseHeader2RecordRef, TempIgnoredFieldsForComparison, 'Credit Memos do not match');
@@ -715,4 +722,3 @@ codeunit 139865 "APIV2 - Purch. Cr. Memos E2E"
Assert.AreEqual(Status, PurchCrMemoEntityBuffer.Status, CreditMemoStatusErr);
end;
}
-
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PurchOrderLinesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PurchOrderLinesE2E.Codeunit.al
index 10c1f29cd26..cc3d5b2a11b 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PurchOrderLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PurchOrderLinesE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139852 "APIV2 - Purch. Order Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Purchase] [Order]
end;
@@ -866,6 +869,8 @@ codeunit 139852 "APIV2 - Purch. Order Lines E2E"
Assert.AreNotEqual('', OrderId, 'ID should not be empty');
LibraryInventory.CreateItem(Item);
+ LibraryGraphDocumentTools.EnsureVATPostingSetupExists(
+ PurchaseLine."VAT Bus. Posting Group", Item."VAT Prod. Posting Group");
OrderLineJSON := StrSubstNo('{"itemId":"%1"}', LibraryGraphMgt.StripBrackets(Item.SystemId));
Commit();
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PurchQuotesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PurchQuotesE2E.Codeunit.al
index fff9ebbec3e..5f90301156c 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PurchQuotesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PurchQuotesE2E.Codeunit.al
@@ -8,6 +8,7 @@ codeunit 139922 "APIV2 - Purch. Quotes E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
// [FEATURE] [Graph] [Purchase] [Quote]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PurchRcptLinesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PurchRcptLinesE2E.Codeunit.al
index c3c96805fb3..80fe42c9942 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PurchRcptLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PurchRcptLinesE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139850 "APIV2 - Purch. Rcpt. Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Purchase] [Receipt]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PurchRetOrdersE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PurchRetOrdersE2E.Codeunit.al
index a80fc37128d..aaf08b26eeb 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PurchRetOrdersE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PurchRetOrdersE2E.Codeunit.al
@@ -8,6 +8,7 @@ codeunit 139923 "APIV2 - Purch. Ret. Orders E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
// [FEATURE] [Graph] [Purchase] [Return Order]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PurchRetShptsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PurchRetShptsE2E.Codeunit.al
index 7df56e4842f..457a77fc7b1 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PurchRetShptsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PurchRetShptsE2E.Codeunit.al
@@ -8,6 +8,7 @@ codeunit 139928 "APIV2 - Purch. Ret. Shpts. E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
// [FEATURE] [Graph] [Purchase] [Return Shipment]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PurchaseInvLinesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PurchaseInvLinesE2E.Codeunit.al
index 0dbd34f7443..7afdaeef3eb 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PurchaseInvLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PurchaseInvLinesE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139838 "APIV2 - Purchase Inv Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Purchase] [Invoice]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PurchaseInvoicesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PurchaseInvoicesE2E.Codeunit.al
index 2477d02b2ad..92213599eb9 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PurchaseInvoicesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PurchaseInvoicesE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139829 "APIV2 - Purchase Invoices E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Purchase] [Invoice]
end;
@@ -30,6 +33,7 @@ codeunit 139829 "APIV2 - Purchase Invoices E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
end;
[Test]
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PurchaseOrdersE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PurchaseOrdersE2E.Codeunit.al
index 1b799612203..3d3145f723c 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PurchaseOrdersE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PurchaseOrdersE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139851 "APIV2 - Purchase Orders E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Purchase] [Order]
end;
@@ -31,7 +34,7 @@ codeunit 139851 "APIV2 - Purchase Orders E2E"
local procedure Initialize()
begin
- WorkDate := Today();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
end;
[Test]
@@ -92,8 +95,8 @@ codeunit 139851 "APIV2 - Purchase Orders E2E"
ShipToVendor.Modify(true);
Commit();
VendorNo := BuyFromVendor."No.";
- OrderDate := Today();
- PostingDate := Today();
+ OrderDate := WorkDate();
+ PostingDate := WorkDate();
// [GIVEN] a JSON text with an order that contains the vendor and an address
OrderJSON := CreateOrderJSONWithAddress(BuyFromVendor, PayToVendor, ShipToVendor, OrderDate, PostingDate);
@@ -143,8 +146,8 @@ codeunit 139851 "APIV2 - Purchase Orders E2E"
LibraryPurchase.CreateVendorWithAddress(BuyFromVendor);
LibraryPurchase.CreateVendorWithAddress(PayToVendor);
VendorNo := BuyFromVendor."No.";
- OrderDate := Today();
- PostingDate := Today();
+ OrderDate := WorkDate();
+ PostingDate := WorkDate();
// [GIVEN] a JSON text with an order that contains the vendor and an address
OrderJSON := CreateOrderJSONWithoutShipTo(BuyFromVendor, PayToVendor, OrderDate, PostingDate);
@@ -402,8 +405,8 @@ codeunit 139851 "APIV2 - Purchase Orders E2E"
// [GIVEN] a customer
LibraryPurchase.CreateVendor(Vendor);
VendorNo := Vendor."No.";
- OrderDate := Today();
- PostingDate := Today();
+ OrderDate := WorkDate();
+ PostingDate := WorkDate();
// [GIVEN] a json describing our new order
OrderJSON := CreateOrderJSONWithAddress(Vendor, Vendor, Vendor, OrderDate, PostingDate);
@@ -427,6 +430,8 @@ codeunit 139851 "APIV2 - Purchase Orders E2E"
LibraryUtility.AddTempField(TempIgnoredFieldsForComparison, ApiPurchaseHeader.FieldNo("No."), Database::"Purchase Header");
LibraryUtility.AddTempField(
TempIgnoredFieldsForComparison, ApiPurchaseHeader.FieldNo("Posting Description"), Database::"Purchase Header");
+ LibraryUtility.AddTempField(
+ TempIgnoredFieldsForComparison, ApiPurchaseHeader.FieldNo("Order Date"), Database::"Purchase Header");
// Special ignore case for GB
LibraryUtility.AddTempField(TempIgnoredFieldsForComparison, ApiPurchaseHeader.FieldNo("Invoice Received Date"), Database::"Purchase Header");
// Special ignore case for ES
@@ -441,14 +446,14 @@ codeunit 139851 "APIV2 - Purchase Orders E2E"
LibraryUtility.AddTempField(TempIgnoredFieldsForComparison, RecordField."No.", Database::"Purchase Header");
// Time zone will impact how the date from the page vs WebService is saved. If removed this will fail in snap between 12:00 - 1 AM
- if Time() < 020000T then begin
- LibraryUtility.AddTempField(TempIgnoredFieldsForComparison, ApiPurchaseHeader.FieldNo("Order Date"), Database::"Purchase Header");
+ if Time() < 020000T then
LibraryUtility.AddTempField(TempIgnoredFieldsForComparison, ApiPurchaseHeader.FieldNo("Posting Date"), Database::"Purchase Header");
- end;
PagePurchaseHeader.Get(PagePurchaseHeader."Document Type"::Order, PurchaseOrder."No.".Value());
ApiRecordRef.GetTable(ApiPurchaseHeader);
PageRecordRef.GetTable(PagePurchaseHeader);
+ LibraryGraphMgt.AddFieldToIgnoreIfExists(
+ TempIgnoredFieldsForComparison, Database::"Purchase Header", 'Operation Occurred Date');
Assert.RecordsAreEqualExceptCertainFields(ApiRecordRef, PageRecordRef, TempIgnoredFieldsForComparison,
'Page and API order do not match');
@@ -667,6 +672,7 @@ codeunit 139851 "APIV2 - Purchase Orders E2E"
PurchaseOrder."Buy-from Vendor No.".SetValue(Vendor."No.");
PurchaseOrder."Document Date".SetValue(DocumentDate);
PurchaseOrder."Posting Date".SetValue(PostingDate);
+ PurchaseOrder."Order Date".SetValue(DocumentDate);
end;
local procedure CheckShippingDetailsNotEmpty(var PurchaseHeader: Record "Purchase Header")
diff --git a/src/Apps/W1/APIV2/test/src/APIV2PurchaseReceiptsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2PurchaseReceiptsE2E.Codeunit.al
index da2b96c946c..00b9945e0f8 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2PurchaseReceiptsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2PurchaseReceiptsE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139849 "APIV2 - Purchase Receipts E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Purchase] [Receipt]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2RetEarningsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2RetEarningsE2E.Codeunit.al
index 771bc75dd2f..3da18822c2d 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2RetEarningsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2RetEarningsE2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139821 "APIV2 - Ret. Earnings E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Retained Earnings]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2SalesCrMemoLinesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2SalesCrMemoLinesE2E.Codeunit.al
index a91ece4eef8..b0e298a0ef1 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2SalesCrMemoLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2SalesCrMemoLinesE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139837 "APIV2 - Sales CrMemo Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Sales] [Credit Memo]
end;
@@ -20,6 +23,7 @@ codeunit 139837 "APIV2 - Sales CrMemo Lines E2E"
LibraryGraphDocumentTools: Codeunit "Library - Graph Document Tools";
LibraryRandom: Codeunit "Library - Random";
LibrarySales: Codeunit "Library - Sales";
+ LibraryERM: Codeunit "Library - ERM";
LibrarySmallBusiness: Codeunit "Library - Small Business";
LibraryApplicationArea: Codeunit "Library - Application Area";
IsInitialized: Boolean;
@@ -29,6 +33,8 @@ codeunit 139837 "APIV2 - Sales CrMemo Lines E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
if IsInitialized then
exit;
@@ -1267,7 +1273,6 @@ codeunit 139837 "APIV2 - Sales CrMemo Lines E2E"
Resource: Record "Resource";
VATBusinessPostingGroup: Record "VAT Business Posting Group";
FixedAsset: Record "Fixed Asset";
- LibraryERM: Codeunit "Library - ERM";
LibraryResource: Codeunit "Library - Resource";
LibraryFixedAsset: Codeunit "Library - Fixed Asset";
begin
@@ -1415,6 +1420,5 @@ codeunit 139837 "APIV2 - Sales CrMemo Lines E2E"
-
diff --git a/src/Apps/W1/APIV2/test/src/APIV2SalesCreditMemosE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2SalesCreditMemosE2E.Codeunit.al
index 91631a22534..8c0ecaa1996 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2SalesCreditMemosE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2SalesCreditMemosE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Sales] [Credit Memo]
end;
@@ -91,6 +94,7 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
// [SCENARIO] Create posted and unposted Sales credit memos and use HTTP POST to delete them
// [GIVEN] 2 credit memos, one posted and one unposted
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
LibrarySales.CreateCustomerWithAddress(SellToCustomer);
LibrarySales.CreateCustomerWithAddress(BillToCustomer);
CustomerNo := SellToCustomer."No.";
@@ -286,6 +290,7 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
// [SCENARIO] Create an credit memo both through the client UI and through the API
// [SCENARIO] and compare them. They should be the same and have the same fields autocompleted wherever needed.
// [GIVEN] An unposted credit memo
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
LibraryGraphDocumentTools.InitializeUIPage();
LibrarySales.CreateCustomer(SellToCustomer);
@@ -754,11 +759,16 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
local procedure CreateCorrectiveSalesCreditMemo(var SalesCrMemoHeader: Record "Sales Cr.Memo Header")
var
+ ReasonCode: Record "Reason Code";
SalesInvoiceHeader: Record "Sales Invoice Header";
SalesHeader: Record "Sales Header";
InvoiceCode: Code[20];
begin
LibrarySales.CreateSalesInvoice(SalesHeader);
+ EnsureReasonCode();
+ ReasonCode.FindFirst();
+ SalesHeader.Validate("Reason Code", ReasonCode.Code);
+ SalesHeader.Modify(true);
InvoiceCode := LibrarySales.PostSalesDocument(SalesHeader, false, true);
SalesInvoiceHeader.Get(InvoiceCode);
Commit();
@@ -767,6 +777,16 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
SalesCrMemoHeader.FindFirst();
end;
+ local procedure EnsureReasonCode()
+ var
+ ReasonCode: Record "Reason Code";
+ begin
+ if not ReasonCode.IsEmpty() then
+ exit;
+
+ LibraryERM.CreateReasonCode(ReasonCode);
+ end;
+
local procedure CreateDraftSalesCreditMemo(var SalesHeader: Record "Sales Header")
begin
LibrarySales.CreateSalesCreditMemo(SalesHeader);
@@ -925,6 +945,8 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
SalesHeader1RecordRef.GetTable(SalesHeader1);
SalesHeader2RecordRef.GetTable(SalesHeader2);
+ LibraryGraphMgt.AddFieldToIgnoreIfExists(
+ TempIgnoredFieldsForComparison, Database::"Sales Header", 'Operation Occurred Date');
Assert.RecordsAreEqualExceptCertainFields(
SalesHeader1RecordRef, SalesHeader2RecordRef, TempIgnoredFieldsForComparison, 'Credit Memos do not match');
@@ -1044,4 +1066,3 @@ codeunit 139828 "APIV2 - Sales Credit Memos E2E"
JobQueueEntry.Cancel();
end;
}
-
diff --git a/src/Apps/W1/APIV2/test/src/APIV2SalesInvLinesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2SalesInvLinesE2E.Codeunit.al
index 3a88184d347..8322b9b8f78 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2SalesInvLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2SalesInvLinesE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139834 "APIV2 - Sales Inv. Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Sales] [Invoice]
end;
@@ -1079,6 +1082,8 @@ codeunit 139834 "APIV2 - Sales Inv. Lines E2E"
Assert.AreNotEqual('', InvoiceLineID, 'ID should not be empty');
LibraryInventory.CreateItem(Item);
+ LibraryGraphDocumentTools.EnsureVATPostingSetupExists(
+ SalesLine."VAT Bus. Posting Group", Item."VAT Prod. Posting Group");
InvoiceLineJSON := StrSubstNo('{"itemId":"%1"}', LibraryGraphMgt.StripBrackets(Item.SystemId));
Commit();
diff --git a/src/Apps/W1/APIV2/test/src/APIV2SalesInvoicesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2SalesInvoicesE2E.Codeunit.al
index 57447768ade..bd5eab08b74 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2SalesInvoicesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2SalesInvoicesE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Sales] [Invoice]
end;
@@ -148,6 +151,7 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
// [SCENARIO 184721] Create posted and unposted Sales invoices and use HTTP POST to delete them
// [GIVEN] 2 invoices, one posted and one unposted
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
LibrarySales.CreateCustomer(SellToCustomer);
LibrarySales.CreateCustomer(BillToCustomer);
LibrarySales.CreateCustomer(ShipToCustomer);
@@ -295,6 +299,8 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
begin
// [SCENARIO 184721] Create unposted with specific document and due date set and use HTTP POST to create them
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
// [GIVEN] an Invoice with a document and due date set
LibrarySales.CreateCustomer(Customer);
CustomerNo := Customer."No.";
@@ -562,6 +568,7 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
// [SCENARIO 184721] Create an invoice both through the client UI and through the API
// [SCENARIO] and compare them. They should be the same and have the same fields autocompleted wherever needed.
// [GIVEN] An unposted invoice
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
LibraryGraphDocumentTools.InitializeUIPage();
LibraryApplicationArea.DisableApplicationAreaSetup();
@@ -606,6 +613,9 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
PageSalesHeader.Get(PageSalesHeader."Document Type"::Invoice, SalesInvoice."No.".Value());
ApiRecordRef.GetTable(ApiSalesHeader);
PageRecordRef.GetTable(PageSalesHeader);
+ LibraryGraphMgt.AddFieldToIgnoreIfExists(
+ TempIgnoredFieldsForComparison, Database::"Sales Header", 'Operation Occurred Date');
+
Assert.RecordsAreEqualExceptCertainFields(ApiRecordRef, PageRecordRef, TempIgnoredFieldsForComparison,
'Page and API Invoice do not match');
@@ -623,6 +633,7 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
begin
// [SCENARIO 184721] When an invoice is created,the GET Method should update the invoice and assign a total
// [GIVEN] 2 invoices, one posted and one unposted without totals assigned
+ LibraryApplicationArea.EnableFoundationSetup();
LibraryGraphDocumentTools.CreateDocumentWithDiscountPctPending(
SalesHeader, DiscountPct, SalesHeader."Document Type"::Invoice);
SalesHeader.CALCFIELDS("Recalculate Invoice Disc.");
@@ -910,6 +921,7 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
DocumentId := SalesInvoiceHeader."Draft Invoice SystemId";
// Special case for AU
+ EnsureReasonCode();
LibrarySales.SetDefaultCancelReasonCodeForSalesAndReceivablesSetup();
Commit();
@@ -947,6 +959,7 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
DocumentId := SalesInvoiceHeader."Draft Invoice SystemId";
// Special case for AU
+ EnsureReasonCode();
LibrarySales.SetDefaultCancelReasonCodeForSalesAndReceivablesSetup();
Commit();
@@ -1298,9 +1311,22 @@ codeunit 139809 "APIV2 - Sales Invoices E2E"
local procedure CreateCancelledSalesInvoice(var SalesInvoiceHeader: Record "Sales Invoice Header")
begin
CreatePostedSalesInvoice(SalesInvoiceHeader);
+ EnsureReasonCode();
+ LibrarySales.SetDefaultCancelReasonCodeForSalesAndReceivablesSetup();
+ Commit();
CODEUNIT.Run(CODEUNIT::"Correct Posted Sales Invoice", SalesInvoiceHeader);
end;
+ local procedure EnsureReasonCode()
+ var
+ ReasonCode: Record "Reason Code";
+ begin
+ if not ReasonCode.IsEmpty() then
+ exit;
+
+ LibraryERM.CreateReasonCode(ReasonCode);
+ end;
+
local procedure CreateSalesInvoices(var InvoiceID1: Text; var InvoiceID2: Text)
var
SalesInvoiceHeader: Record "Sales Invoice Header";
diff --git a/src/Apps/W1/APIV2/test/src/APIV2SalesOrdArchE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2SalesOrdArchE2E.Codeunit.al
index 43a0cf41433..7fa59b35b49 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2SalesOrdArchE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2SalesOrdArchE2E.Codeunit.al
@@ -8,6 +8,7 @@ codeunit 139927 "APIV2 - Sales Ord. Arch. E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
// [FEATURE] [Graph] [Sales] [Order] [Archive]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2SalesOrderLinesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2SalesOrderLinesE2E.Codeunit.al
index 280882e872d..eadd2782099 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2SalesOrderLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2SalesOrderLinesE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139835 "APIV2 - Sales Order Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Sales] [Order]
end;
@@ -863,6 +866,8 @@ codeunit 139835 "APIV2 - Sales Order Lines E2E"
Assert.AreNotEqual('', OrderId, 'ID should not be empty');
LibraryInventory.CreateItem(Item);
+ LibraryGraphDocumentTools.EnsureVATPostingSetupExists(
+ SalesLine."VAT Bus. Posting Group", Item."VAT Prod. Posting Group");
OrderLineJSON := StrSubstNo('{"itemId":"%1"}', LibraryGraphMgt.StripBrackets(Item.SystemId));
Commit();
@@ -1479,8 +1484,6 @@ codeunit 139835 "APIV2 - Sales Order Lines E2E"
-
-
diff --git a/src/Apps/W1/APIV2/test/src/APIV2SalesOrdersE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2SalesOrdersE2E.Codeunit.al
index 16759bdf1b6..da19639c60e 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2SalesOrdersE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2SalesOrdersE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139811 "APIV2 - Sales Orders E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Sales] [Order]
end;
@@ -78,6 +81,8 @@ codeunit 139811 "APIV2 - Sales Orders E2E"
begin
// [SCENARIO 184721] Create sales orders JSON and use HTTP POST to create them
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
// [GIVEN] a customer
LibrarySales.CreateCustomerWithAddress(SellToCustomer);
LibrarySales.CreateCustomerWithAddress(BillToCustomer);
@@ -330,6 +335,7 @@ codeunit 139811 "APIV2 - Sales Orders E2E"
OrderJSON: Text;
begin
// [SCENARIO 184721] Create an order both through the client UI and through the API and compare them. They should be the same and have the same fields autocompleted wherever needed.
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
LibraryGraphDocumentTools.InitializeUIPage();
// [GIVEN] a customer
@@ -375,6 +381,8 @@ codeunit 139811 "APIV2 - Sales Orders E2E"
PageSalesHeader.Get(PageSalesHeader."Document Type"::Order, SalesOrder."No.".Value());
ApiRecordRef.GetTable(ApiSalesHeader);
PageRecordRef.GetTable(PageSalesHeader);
+ LibraryGraphMgt.AddFieldToIgnoreIfExists(
+ TempIgnoredFieldsForComparison, Database::"Sales Header", 'Operation Occurred Date');
Assert.RecordsAreEqualExceptCertainFields(ApiRecordRef, PageRecordRef, TempIgnoredFieldsForComparison,
'Page and API order do not match');
diff --git a/src/Apps/W1/APIV2/test/src/APIV2SalesQuoteLinesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2SalesQuoteLinesE2E.Codeunit.al
index 803ae25520c..19615c978c1 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2SalesQuoteLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2SalesQuoteLinesE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139836 "APIV2 - Sales Quote Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Sales] [Quote]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2SalesQuotesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2SalesQuotesE2E.Codeunit.al
index e934a55669a..62115dfbc17 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2SalesQuotesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2SalesQuotesE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139823 "APIV2 - Sales Quotes E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Sales] [Quote]
end;
@@ -100,6 +103,8 @@ codeunit 139823 "APIV2 - Sales Quotes E2E"
begin
// [SCENARIO] Create sales quotes JSON and use HTTP POST to create them
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+
// [GIVEN] a customer
LibrarySales.CreateCustomerWithAddress(SellToCustomer);
LibrarySales.CreateCustomerWithAddress(ShipToCustomer);
@@ -316,6 +321,7 @@ codeunit 139823 "APIV2 - Sales Quotes E2E"
QuoteExists: Boolean;
begin
// [SCENARIO] Create a quote both through the client UI and through the API and compare them. They should be the same and have the same fields autocompleted wherever needed.
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
LibraryGraphDocumentTools.InitializeUIPage();
// [GIVEN] a customer
@@ -357,6 +363,11 @@ codeunit 139823 "APIV2 - Sales Quotes E2E"
PageSalesHeader.Get(PageSalesHeader."Document Type"::Quote, SalesQuote."No.".Value());
ApiRecordRef.GetTable(ApiSalesHeader);
PageRecordRef.GetTable(PageSalesHeader);
+ LibraryGraphMgt.AddFieldToIgnoreIfExists(
+ TempIgnoredFieldsForComparison, Database::"Sales Header", 'Operation Occurred Date');
+ LibraryGraphMgt.AddFieldToIgnoreIfExists(
+ TempIgnoredFieldsForComparison, Database::"Sales Header", 'VAT Reporting Date');
+
Assert.RecordsAreEqualExceptCertainFields(ApiRecordRef, PageRecordRef, TempIgnoredFieldsForComparison,
'Page and API quote do not match');
end;
@@ -751,6 +762,9 @@ codeunit 139823 "APIV2 - Sales Quotes E2E"
LibrarySmallBusiness.CreateCustomer(Customer);
LibrarySmallBusiness.CreateItem(Item);
LibrarySmallBusiness.CreateSalesQuoteHeaderWithLines(SalesHeader, Customer, Item, 1, 1);
+ SalesHeader.Validate("Posting Date", WorkDate());
+ SalesHeader.Validate("Document Date", WorkDate());
+ SalesHeader.Modify(true);
end;
local procedure FindSalesHeader(var SalesHeader: Record "Sales Header"; CustomerNo: Text; QuoteNumber: Text): Boolean
diff --git a/src/Apps/W1/APIV2/test/src/APIV2SalesRetOrdersE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2SalesRetOrdersE2E.Codeunit.al
index c049e3837f6..8e86f0463df 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2SalesRetOrdersE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2SalesRetOrdersE2E.Codeunit.al
@@ -8,6 +8,7 @@ codeunit 139924 "APIV2 - Sales Ret. Orders E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
// [FEATURE] [Graph] [Sales] [Return Order]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2SalesShipLinesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2SalesShipLinesE2E.Codeunit.al
index 3081e6c6df6..096624cd04a 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2SalesShipLinesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2SalesShipLinesE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139848 "APIV2 - Sales Ship. Lines E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Sales] [Shipment]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2SalesShipmentsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2SalesShipmentsE2E.Codeunit.al
index 230e2af2a5b..2f0a04bcb84 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2SalesShipmentsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2SalesShipmentsE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139847 "APIV2 - Sales Shipments E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Sales] [Shipment]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2SalespersonPurchE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2SalespersonPurchE2E.Codeunit.al
index 00b9b57cfd8..22ebff84b92 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2SalespersonPurchE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2SalespersonPurchE2E.Codeunit.al
@@ -3,6 +3,12 @@ codeunit 139882 "APIV2 - Salesperson/Purch E2E"
Subtype = Test;
RequiredTestIsolation = Disabled;
+ trigger OnRun()
+ begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
+
var
Assert: Codeunit Assert;
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
diff --git a/src/Apps/W1/APIV2/test/src/APIV2ShipmentMethodsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2ShipmentMethodsE2E.Codeunit.al
index b7f25bf36dd..a73a4297006 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2ShipmentMethodsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2ShipmentMethodsE2E.Codeunit.al
@@ -3,10 +3,13 @@ codeunit 139805 "APIV2 - Shipment Methods E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Shipment Method]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2TaxAreasE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2TaxAreasE2E.Codeunit.al
index 3e579576ff6..ac3daba4957 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2TaxAreasE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2TaxAreasE2E.Codeunit.al
@@ -9,6 +9,8 @@ codeunit 139826 "APIV2 - Tax Areas E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Tax Area]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2TaxGroupsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2TaxGroupsE2E.Codeunit.al
index 71058576f58..5bb8938d601 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2TaxGroupsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2TaxGroupsE2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139808 "APIV2 - Tax Groups E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Tax Group]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2TransferOrdersE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2TransferOrdersE2E.Codeunit.al
index 93bda0b6eed..24c2446b50f 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2TransferOrdersE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2TransferOrdersE2E.Codeunit.al
@@ -8,6 +8,7 @@ codeunit 139926 "APIV2 - Transfer Orders E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
// [FEATURE] [Graph] [Inventory] [Transfer]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2TrialBalanceE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2TrialBalanceE2E.Codeunit.al
index f94f316fc30..7a959092083 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2TrialBalanceE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2TrialBalanceE2E.Codeunit.al
@@ -3,10 +3,13 @@ codeunit 139818 "APIV2 - Trial Balance E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Trial Balance]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2UofME2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2UofME2E.Codeunit.al
index 496d746235c..3a7601a0c72 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2UofME2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2UofME2E.Codeunit.al
@@ -8,6 +8,8 @@ codeunit 139812 "APIV2 - UofM E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Unit of Measure]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2VendorPaymentsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2VendorPaymentsE2E.Codeunit.al
index 780e34e7c78..8ac2424d47c 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2VendorPaymentsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2VendorPaymentsE2E.Codeunit.al
@@ -1,11 +1,14 @@
codeunit 139843 "APIV2 - Vendor Payments E2E"
{
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = Uncategorized;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Vendor Payments]
end;
@@ -16,6 +19,7 @@ codeunit 139843 "APIV2 - Vendor Payments E2E"
Assert: Codeunit Assert;
GraphMgtVendorPayments: Codeunit "Graph Mgt - Vendor Payments";
LibraryGraphJournalLines: Codeunit "Library - Graph Journal Lines";
+ LibraryERM: Codeunit "Library - ERM";
GraphMgtJournal: Codeunit "Graph Mgt - Journal";
ServiceNameTxt: Label 'vendorPaymentJournals';
ServiceSubpageNameTxt: Label 'vendorPayments';
@@ -34,7 +38,6 @@ codeunit 139843 "APIV2 - Vendor Payments E2E"
PurchInvHeader: Record "Purch. Inv. Header";
GenJournalLine: Record "Gen. Journal Line";
GenJournalBatch: Record "Gen. Journal Batch";
- LibraryERM: Codeunit "Library - ERM";
PurchInvAggregator: Codeunit "Purch. Inv. Aggregator";
JournalName: Code[10];
Amount: Decimal;
@@ -884,6 +887,7 @@ codeunit 139843 "APIV2 - Vendor Payments E2E"
local procedure Initialize()
begin
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
LibraryTestInitialize.OnTestInitialize(Codeunit::"APIV2 - Vendor Payments E2E");
if not isInitialized then
diff --git a/src/Apps/W1/APIV2/test/src/APIV2VendorsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2VendorsE2E.Codeunit.al
index fe84521cbd5..5becc6ff467 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2VendorsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2VendorsE2E.Codeunit.al
@@ -9,6 +9,8 @@ codeunit 139803 "APIV2 - Vendors E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Vendor]
end;
diff --git a/src/Apps/W1/APIV2/test/src/APIV2WorkflowApproversE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2WorkflowApproversE2E.Codeunit.al
index 4a11340aa53..587c7ec7cd9 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2WorkflowApproversE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2WorkflowApproversE2E.Codeunit.al
@@ -1,10 +1,14 @@
codeunit 139920 "APIV2 - Workflow Approvers E2E"
{
-
Subtype = Test;
TestType = IntegrationTest;
TestPermissions = Disabled;
+ trigger OnRun()
+ begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ end;
+
var
Assert: Codeunit Assert;
LibraryWorkflow: Codeunit "Library - Workflow";
diff --git a/src/Apps/W1/APIV2/test/src/APIV2WorkflowsE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2WorkflowsE2E.Codeunit.al
index d5973d08348..341439fbbb4 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2WorkflowsE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2WorkflowsE2E.Codeunit.al
@@ -1,10 +1,14 @@
codeunit 139921 "APIV2 - Workflows E2E"
{
-
Subtype = Test;
TestType = IntegrationTest;
TestPermissions = Disabled;
+ trigger OnRun()
+ begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ end;
+
var
Assert: Codeunit Assert;
LibraryWorkflow: Codeunit "Library - Workflow";
diff --git a/src/Apps/W1/APIV2/test/src/APIV2itemLedgEntriesE2E.Codeunit.al b/src/Apps/W1/APIV2/test/src/APIV2itemLedgEntriesE2E.Codeunit.al
index f8f1374ccec..615be21785a 100644
--- a/src/Apps/W1/APIV2/test/src/APIV2itemLedgEntriesE2E.Codeunit.al
+++ b/src/Apps/W1/APIV2/test/src/APIV2itemLedgEntriesE2E.Codeunit.al
@@ -3,11 +3,14 @@ codeunit 139854 "APIV2 - Item Ledg. Entries E2E"
// version Test,ERM,W1,All
Subtype = Test;
+ RequiredTestIsolation = Disabled;
TestType = IntegrationTest;
TestPermissions = Disabled;
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
// [FEATURE] [Graph] [Item Ledger Entry]
end;
diff --git a/src/Apps/W1/EDocument/Test/src/Processing/EDocAPITest.Codeunit.al b/src/Apps/W1/EDocument/Test/src/Processing/EDocAPITest.Codeunit.al
index 80b678db590..c0478a11dc9 100644
--- a/src/Apps/W1/EDocument/Test/src/Processing/EDocAPITest.Codeunit.al
+++ b/src/Apps/W1/EDocument/Test/src/Processing/EDocAPITest.Codeunit.al
@@ -16,12 +16,20 @@ codeunit 135575 "E-Doc. API Test"
TestType = IntegrationTest;
TestPermissions = Disabled;
+ trigger OnRun()
+ begin
+ LibraryGraphMgtForAuthentication.EnsureAuthenticationAvailable();
+ end;
+
+ var
+ LibraryGraphMgtForAuthentication: Codeunit "Library - Graph Mgt";
+
[Test]
procedure GetEDocument()
var
PurchaseHeader: Record "Purchase Header";
EDocument: Record "E-Document";
- LibrarygraphMgt: Codeunit "Library - Graph Mgt";
+ LibraryGraphMgt: Codeunit "Library - Graph Mgt";
TargetURL: Text;
Response: Text;
EDocsApiServiceNameTok: Label 'eDocuments', Locked = true;
diff --git a/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseActivityLogAPITest.Codeunit.al b/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseActivityLogAPITest.Codeunit.al
index e7672c950a6..e6bf324d1ee 100644
--- a/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseActivityLogAPITest.Codeunit.al
+++ b/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseActivityLogAPITest.Codeunit.al
@@ -14,12 +14,16 @@ codeunit 148343 "Expense Activity Log API Test"
RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
+ trigger OnRun()
+ begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ end;
+
var
Assert: Codeunit Assert;
LibraryExpense: Codeunit "Library - Expense";
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
LibraryTestInitialize: Codeunit "Library - Test Initialize";
- APITestAuthHelper: Codeunit "Expense API Test Auth Helper";
IsInitialized: Boolean;
ServiceNameTok: Label 'expenseActivityLogEntries', Locked = true;
ExpenseReportsServiceNameTok: Label 'expenseReports', Locked = true;
@@ -47,6 +51,7 @@ codeunit 148343 "Expense Activity Log API Test"
Initialize();
CreateTestExpenseUser(ExpenseUser);
CreateTestExpenseReport(ExpenseReportHeader, ExpenseUser."No.");
+ CreateTestExpenseReportLine(ExpenseReportHeader, ExpenseUser."No.");
EntryNo := ExpenseActivityLogMgt.LogExpenseReportEvent(
ExpenseReportHeader,
Enum::"Expense Activity Event Type"::Submitted,
@@ -118,9 +123,9 @@ codeunit 148343 "Expense Activity Log API Test"
Page::"Expense Reports API",
ExpenseReportsServiceNameTok,
ServiceNameTok);
- EntryURL :=
- CollectionURL + '(' +
- LibraryGraphMgt.StripBrackets(Format(ExpenseActivityLogEntry.SystemId)) + ')';
+ EntryURL := LibraryGraphMgt.AppendPathToTargetURL(
+ CollectionURL,
+ '(' + LibraryGraphMgt.StripBrackets(Format(ExpenseActivityLogEntry.SystemId)) + ')');
// [WHEN] A POST is attempted.
// [THEN] The API rejects it with Method Not Allowed.
@@ -171,7 +176,8 @@ codeunit 148343 "Expense Activity Log API Test"
Page::"Expense Reports API",
ExpenseReportsServiceNameTok,
ServiceNameTok);
- TargetURL += '(' + LibraryGraphMgt.StripBrackets(Format(ExpenseActivityLogEntry.SystemId)) + ')';
+ TargetURL := LibraryGraphMgt.AppendPathToTargetURL(
+ TargetURL, '(' + LibraryGraphMgt.StripBrackets(Format(ExpenseActivityLogEntry.SystemId)) + ')');
LibraryGraphMgt.GetFromWebServiceAndCheckResponseCode(ResponseText, TargetURL, 200);
ResponseText := LowerCase(ResponseText);
@@ -278,7 +284,8 @@ codeunit 148343 "Expense Activity Log API Test"
Assert.ExpectedError('The historyActorRole filter must be specified as Submitter or Approver.');
// [WHEN] Submitter history is requested through the first Expense User.
- TargetURL += '?$filter=historyActorRole eq ''Submitter''';
+ TargetURL := LibraryGraphMgt.AppendQueryParameterToTargetURL(
+ TargetURL, '$filter=historyActorRole eq ''Submitter''');
LibraryGraphMgt.GetFromWebServiceAndCheckResponseCode(ResponseText, TargetURL, 200);
ResponseText := LowerCase(ResponseText);
@@ -348,7 +355,8 @@ codeunit 148343 "Expense Activity Log API Test"
Page::"Expense Users API",
ExpenseUsersServiceNameTok,
ServiceNameTok);
- TargetURL += '?$filter=historyActorRole eq ''Approver''';
+ TargetURL := LibraryGraphMgt.AppendQueryParameterToTargetURL(
+ TargetURL, '$filter=historyActorRole eq ''Approver''');
LibraryGraphMgt.GetFromWebServiceAndCheckResponseCode(ResponseText, TargetURL, 200);
ResponseText := LowerCase(ResponseText);
@@ -551,7 +559,8 @@ codeunit 148343 "Expense Activity Log API Test"
Page::"Expense Users API",
ExpenseUsersServiceNameTok,
ServiceNameTok);
- TargetURL += '?$filter=historyActorRole eq ''' + HistoryRole + '''';
+ TargetURL := LibraryGraphMgt.AppendQueryParameterToTargetURL(
+ TargetURL, '$filter=historyActorRole eq ''' + HistoryRole + '''');
LibraryGraphMgt.GetFromWebServiceAndCheckResponseCode(ResponseText, TargetURL, 200);
Assert.AreNotEqual(
0,
@@ -569,14 +578,16 @@ codeunit 148343 "Expense Activity Log API Test"
local procedure Initialize()
var
ExpenseAgentSetup: Record "Expense Agent Setup";
+ LibraryERMCountryData: Codeunit "Library - ERM Country Data";
begin
LibraryTestInitialize.OnTestInitialize(Codeunit::"Expense Activity Log API Test");
CleanupTestData();
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
if IsInitialized then
exit;
- BindSubscription(APITestAuthHelper);
LibraryTestInitialize.OnBeforeTestSuiteInitialize(Codeunit::"Expense Activity Log API Test");
+ LibraryERMCountryData.UpdateGeneralLedgerSetup();
if not ExpenseAgentSetup.Get() then begin
ExpenseAgentSetup.Init();
ExpenseAgentSetup.Insert();
@@ -600,6 +611,32 @@ codeunit 148343 "Expense Activity Log API Test"
ExpenseReportHeader.Modify();
end;
+ local procedure CreateTestExpenseReportLine(ExpenseReportHeader: Record "Expense Report Header"; ExpenseUserNo: Code[20])
+ var
+ ExpenseCategory: Record "Expense Category";
+ ExpensePaymentMethod: Record "Expense Payment Method";
+ ExpenseReportLine: Record "Expense Report Line";
+ begin
+ LibraryExpense.CreateExpenseCategory(
+ ExpenseCategory,
+ ExpenseCategory."Reimbursement Type"::"Employee Paid",
+ ExpenseCategory."Expense Detail Required"::" ");
+ ExpenseCategory.Description :=
+ CopyStr(TestDescriptionPrefixLbl + Format(CreateGuid()), 1, MaxStrLen(ExpenseCategory.Description));
+ ExpenseCategory.Modify();
+ LibraryExpense.FindExpensePaymentMethod(
+ ExpensePaymentMethod, ExpensePaymentMethod."Reimbursement Type"::"Employee Paid");
+ LibraryExpense.CreateExpenseReportLine(
+ ExpenseReportLine,
+ ExpenseReportHeader,
+ ExpenseUserNo,
+ ExpenseCategory.Code,
+ ExpensePaymentMethod.Code,
+ true,
+ '',
+ 100);
+ end;
+
local procedure CreateTestExpenseUser(var ExpenseUser: Record "Expense User")
begin
LibraryExpense.CreateExpenseUser(ExpenseUser);
diff --git a/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseAgentSetupAPITest.Codeunit.al b/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseAgentSetupAPITest.Codeunit.al
index 50bb3595b39..f5cd5d3f3bf 100644
--- a/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseAgentSetupAPITest.Codeunit.al
+++ b/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseAgentSetupAPITest.Codeunit.al
@@ -12,6 +12,11 @@ codeunit 148333 "Expense Agent Setup API Test"
TestType = IntegrationTest;
TestPermissions = Disabled;
+ trigger OnRun()
+ begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ end;
+
var
Assert: Codeunit Assert;
LibraryExpense: Codeunit "Library - Expense";
diff --git a/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseCapabilitiesAPITest.Codeunit.al b/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseCapabilitiesAPITest.Codeunit.al
index 647fbc39d49..dd1a57a4d0a 100644
--- a/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseCapabilitiesAPITest.Codeunit.al
+++ b/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseCapabilitiesAPITest.Codeunit.al
@@ -13,12 +13,16 @@ codeunit 148318 "Expense Capabilities API Test"
RequiredTestIsolation = Disabled;
TestPermissions = Disabled;
+ trigger OnRun()
+ begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ end;
+
var
Assert: Codeunit Assert;
LibraryExpenseAgent: Codeunit "Library - Expense Agent";
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
LibraryTestInitialize: Codeunit "Library - Test Initialize";
- APITestAuthHelper: Codeunit "Expense API Test Auth Helper";
IsInitialized: Boolean;
ServiceNameTok: Label 'expenseCapabilities', Locked = true;
ActivityLogCapabilityNameTok: Label 'activityLog', Locked = true;
@@ -206,7 +210,6 @@ codeunit 148318 "Expense Capabilities API Test"
if IsInitialized then
exit;
- BindSubscription(APITestAuthHelper);
LibraryTestInitialize.OnBeforeTestSuiteInitialize(Codeunit::"Expense Capabilities API Test");
IsInitialized := true;
Commit();
diff --git a/src/Apps/W1/ExpenseAgent/test/src/API/ExpensePerDiemLocationsTest.Codeunit.al b/src/Apps/W1/ExpenseAgent/test/src/API/ExpensePerDiemLocationsTest.Codeunit.al
index 40fdf025b82..11c2a57c395 100644
--- a/src/Apps/W1/ExpenseAgent/test/src/API/ExpensePerDiemLocationsTest.Codeunit.al
+++ b/src/Apps/W1/ExpenseAgent/test/src/API/ExpensePerDiemLocationsTest.Codeunit.al
@@ -12,12 +12,17 @@ codeunit 148349 "Expense PerDiem Locations Test"
TestType = IntegrationTest;
TestPermissions = Disabled;
+ trigger OnRun()
+ begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ LibraryGraphMgt.SetLicenseSafeWorkDate();
+ end;
+
var
Assert: Codeunit Assert;
LibraryUtility: Codeunit "Library - Utility";
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
LibraryTestInitialize: Codeunit "Library - Test Initialize";
- APITestAuthHelper: Codeunit "Expense API Test Auth Helper";
IsInitialized: Boolean;
[Test]
@@ -86,7 +91,6 @@ codeunit 148349 "Expense PerDiem Locations Test"
if IsInitialized then
exit;
- BindSubscription(APITestAuthHelper);
LibraryTestInitialize.OnBeforeTestSuiteInitialize(Codeunit::"Expense PerDiem Locations Test");
IsInitialized := true;
Commit();
diff --git a/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseProjectsAPITest.Codeunit.al b/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseProjectsAPITest.Codeunit.al
index 45ed9ae6d25..1c82e58b8d2 100644
--- a/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseProjectsAPITest.Codeunit.al
+++ b/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseProjectsAPITest.Codeunit.al
@@ -16,6 +16,11 @@ codeunit 148331 "Expense Projects API Test"
TestType = IntegrationTest;
TestPermissions = Disabled;
+ trigger OnRun()
+ begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ end;
+
var
Assert: Codeunit Assert;
LibraryExpense: Codeunit "Library - Expense";
@@ -24,7 +29,6 @@ codeunit 148331 "Expense Projects API Test"
LibraryHumanResource: Codeunit "Library - Human Resource";
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
LibraryTestInitialize: Codeunit "Library - Test Initialize";
- APITestAuthHelper: Codeunit "Expense API Test Auth Helper";
IsInitialized: Boolean;
ExpenseUsersServiceNameTok: Label 'expenseUsers', Locked = true;
ProjectsServiceNameTok: Label 'expenseProjects', Locked = true;
@@ -723,7 +727,6 @@ codeunit 148331 "Expense Projects API Test"
if IsInitialized then
exit;
- BindSubscription(APITestAuthHelper);
LibraryTestInitialize.OnBeforeTestSuiteInitialize(Codeunit::"Expense Projects API Test");
if not ExpenseAgentSetup.Get() then begin
ExpenseAgentSetup.Init();
diff --git a/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseUsersAPITest.Codeunit.al b/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseUsersAPITest.Codeunit.al
index f724ba018d3..d04a79aebf0 100644
--- a/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseUsersAPITest.Codeunit.al
+++ b/src/Apps/W1/ExpenseAgent/test/src/API/ExpenseUsersAPITest.Codeunit.al
@@ -12,13 +12,17 @@ codeunit 148315 "Expense Users API Test"
TestType = IntegrationTest;
TestPermissions = Disabled;
+ trigger OnRun()
+ begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
+ end;
+
var
Assert: Codeunit Assert;
LibraryExpense: Codeunit "Library - Expense";
LibraryUtility: Codeunit "Library - Utility";
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
LibraryTestInitialize: Codeunit "Library - Test Initialize";
- APITestAuthHelper: Codeunit "Expense API Test Auth Helper";
IsInitialized: Boolean;
ServiceNameTok: Label 'expenseUsers', Locked = true;
@@ -87,7 +91,6 @@ codeunit 148315 "Expense Users API Test"
if IsInitialized then
exit;
- BindSubscription(APITestAuthHelper);
LibraryTestInitialize.OnBeforeTestSuiteInitialize(Codeunit::"Expense Users API Test");
if not ExpenseAgentSetup.Get() then begin
ExpenseAgentSetup.Init();
diff --git a/src/Apps/W1/ExpenseAgent/test/src/API/PoliciesToEvaluateAPITest.Codeunit.al b/src/Apps/W1/ExpenseAgent/test/src/API/PoliciesToEvaluateAPITest.Codeunit.al
index ef512122f3d..ff2ad168cc7 100644
--- a/src/Apps/W1/ExpenseAgent/test/src/API/PoliciesToEvaluateAPITest.Codeunit.al
+++ b/src/Apps/W1/ExpenseAgent/test/src/API/PoliciesToEvaluateAPITest.Codeunit.al
@@ -18,7 +18,6 @@ codeunit 148345 "Policies To Evaluate API Test"
LibraryExpense: Codeunit "Library - Expense";
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
LibraryTestInitialize: Codeunit "Library - Test Initialize";
- APITestAuthHelper: Codeunit "Expense API Test Auth Helper";
IsInitialized: Boolean;
ExpenseReportLinesServiceNameTok: Label 'expenseReportLines', Locked = true;
@@ -114,10 +113,10 @@ codeunit 148345 "Policies To Evaluate API Test"
begin
LibraryTestInitialize.OnTestInitialize(Codeunit::"Policies To Evaluate API Test");
LibraryExpense.CleanUpBeforeTesting();
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
if IsInitialized then
exit;
- BindSubscription(APITestAuthHelper);
LibraryTestInitialize.OnBeforeTestSuiteInitialize(Codeunit::"Policies To Evaluate API Test");
LibraryERMCountryData.CreateVATData();
LibraryERMCountryData.UpdateGeneralPostingSetup();
diff --git a/src/Apps/W1/ExpenseAgent/test/src/API/PolicyEvaluationsAPITest.Codeunit.al b/src/Apps/W1/ExpenseAgent/test/src/API/PolicyEvaluationsAPITest.Codeunit.al
index 427bcd4a600..4f24c80f717 100644
--- a/src/Apps/W1/ExpenseAgent/test/src/API/PolicyEvaluationsAPITest.Codeunit.al
+++ b/src/Apps/W1/ExpenseAgent/test/src/API/PolicyEvaluationsAPITest.Codeunit.al
@@ -18,12 +18,12 @@ codeunit 148344 "Policy Evaluations API Test"
LibraryExpense: Codeunit "Library - Expense";
LibraryGraphMgt: Codeunit "Library - Graph Mgt";
LibraryTestInitialize: Codeunit "Library - Test Initialize";
- APITestAuthHelper: Codeunit "Expense API Test Auth Helper";
IsInitialized: Boolean;
ServiceNameTok: Label 'expensePolicyEvaluations', Locked = true;
BadRequestResponseErr: Label 'Response code is 400', Locked = true;
SubjectVersionRequiredErr: Label 'Subject Version is required.';
PolicyVersionRequiredErr: Label 'Policy Version is required.';
+ ExpenseReportLineSubjectTypeTok: Label 'Expense_x0020_Report_x0020_Line', Locked = true;
[Test]
procedure PolicyEvaluationAPIInsertsFlagWithRequiredVersions()
@@ -80,7 +80,7 @@ codeunit 148344 "Policy Evaluations API Test"
TargetURL := LibraryGraphMgt.CreateTargetURL('', Page::"Expense Policy Evaluations API", ServiceNameTok);
asserterror LibraryGraphMgt.PostToWebServiceAndCheckResponseCode(TargetURL, RequestBodyText, ResponseText, 400);
Assert.ExpectedError(BadRequestResponseErr);
- Assert.AreNotEqual(0, StrPos(ResponseText, SubjectVersionRequiredErr), 'The response must identify the missing subject version.');
+ Assert.ExpectedError(SubjectVersionRequiredErr);
CompleteTest();
end;
@@ -106,7 +106,7 @@ codeunit 148344 "Policy Evaluations API Test"
TargetURL := LibraryGraphMgt.CreateTargetURL('', Page::"Expense Policy Evaluations API", ServiceNameTok);
asserterror LibraryGraphMgt.PostToWebServiceAndCheckResponseCode(TargetURL, RequestBodyText, ResponseText, 400);
Assert.ExpectedError(BadRequestResponseErr);
- Assert.AreNotEqual(0, StrPos(ResponseText, PolicyVersionRequiredErr), 'The response must identify the missing policy version.');
+ Assert.ExpectedError(PolicyVersionRequiredErr);
CompleteTest();
end;
@@ -117,10 +117,10 @@ codeunit 148344 "Policy Evaluations API Test"
begin
LibraryTestInitialize.OnTestInitialize(Codeunit::"Policy Evaluations API Test");
LibraryExpense.CleanUpBeforeTesting();
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
if IsInitialized then
exit;
- BindSubscription(APITestAuthHelper);
LibraryTestInitialize.OnBeforeTestSuiteInitialize(Codeunit::"Policy Evaluations API Test");
LibraryERMCountryData.CreateVATData();
LibraryERMCountryData.UpdateGeneralPostingSetup();
@@ -174,7 +174,7 @@ codeunit 148344 "Policy Evaluations API Test"
IncludePolicyVersion: Boolean)
begin
RequestBody.Add('subjectSystemId', ExpenseReportLine.SystemId);
- RequestBody.Add('subjectType', 'expenseReportLine');
+ RequestBody.Add('subjectType', ExpenseReportLineSubjectTypeTok);
if IncludeSubjectVersion then
RequestBody.Add('subjectVersion', ExpenseReportLine."Policy Eval Version");
RequestBody.Add('policySystemId', ExpensePolicy.SystemId);
diff --git a/src/Apps/W1/ExpenseAgent/test/src/Helper/ExpenseAPITestAuthHelper.Codeunit.al b/src/Apps/W1/ExpenseAgent/test/src/Helper/ExpenseAPITestAuthHelper.Codeunit.al
deleted file mode 100644
index 4e34344be7a..00000000000
--- a/src/Apps/W1/ExpenseAgent/test/src/Helper/ExpenseAPITestAuthHelper.Codeunit.al
+++ /dev/null
@@ -1,61 +0,0 @@
-// ------------------------------------------------------------------------------------------------
-// Copyright (c) Microsoft Corporation. All rights reserved.
-// Licensed under the MIT License. See License.txt in the project root for license information.
-// ------------------------------------------------------------------------------------------------
-namespace Microsoft.Test.ExpenseAgent;
-
-using System.Azure.KeyVault;
-using System.Environment;
-using System.Integration;
-using System.Security.AccessControl;
-
-///
-/// Test-only authentication helper for the API test codeunits in this app.
-///
-codeunit 148332 "Expense API Test Auth Helper"
-{
- Access = Internal;
- EventSubscriberInstance = Manual;
-
- var
- NavServerUserPasswordKeyTok: Label 'NavServerUserPassword', Locked = true;
-
- [EventSubscriber(ObjectType::Codeunit, Codeunit::"Library - Graph Mgt", OnAfterInitializeWebRequestWithURL, '', false, false)]
- local procedure OnAfterInitializeWebRequest(var HttpWebRequestMgt: Codeunit "Http Web Request Mgt.")
- var
- Password: SecretText;
- begin
- if not ShouldInjectBasicAuth() then
- exit;
- if not TryGetPassword(Password) then
- exit;
- HttpWebRequestMgt.AddBasicAuthentication(UserId(), Password);
- end;
-
- local procedure ShouldInjectBasicAuth(): Boolean
- var
- User: Record User;
- EnvironmentInfo: Codeunit "Environment Information";
- begin
- if EnvironmentInfo.IsSaaSInfrastructure() then
- exit(false);
-
- // If the current user authenticates via Windows
- if not User.Get(UserSecurityId()) then
- exit(false);
- if User."Windows Security ID" <> '' then
- exit(false);
-
- // Inject Basic auth when using username password authentication.
- exit(true);
- end;
-
- [TryFunction]
- local procedure TryGetPassword(var Password: SecretText)
- var
- AzureKeyVault: Codeunit "Azure Key Vault";
- begin
- AzureKeyVault.GetAzureKeyVaultSecret(NavServerUserPasswordKeyTok, Password);
- end;
-}
-
diff --git a/src/Apps/W1/Quality Management/test/src/QltyTestsInspectionsAPI.Codeunit.al b/src/Apps/W1/Quality Management/test/src/QltyTestsInspectionsAPI.Codeunit.al
index b2a38ac3f7b..3adaaaa8981 100644
--- a/src/Apps/W1/Quality Management/test/src/QltyTestsInspectionsAPI.Codeunit.al
+++ b/src/Apps/W1/Quality Management/test/src/QltyTestsInspectionsAPI.Codeunit.al
@@ -22,6 +22,7 @@ codeunit 139972 "Qlty. Tests - Inspections API"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
// [FEATURE] [Quality Management] [API]
end;
diff --git a/src/Apps/W1/Sustainability/test/src/SustainabilityAPITests.Codeunit.al b/src/Apps/W1/Sustainability/test/src/SustainabilityAPITests.Codeunit.al
index 8c0064704ab..5204c5fa3dc 100644
--- a/src/Apps/W1/Sustainability/test/src/SustainabilityAPITests.Codeunit.al
+++ b/src/Apps/W1/Sustainability/test/src/SustainabilityAPITests.Codeunit.al
@@ -14,6 +14,7 @@ codeunit 148185 "Sustainability API Tests"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
// [FEATURE] [Sustainability] [API] [UI]
end;
diff --git a/src/DisabledTests/E-Document_Core_Tests/E-Document Core Tests.DisabledTest.json b/src/DisabledTests/E-Document_Core_Tests/E-Document Core Tests.DisabledTest.json
index 2a0b6b498c3..1db9a8feddd 100644
--- a/src/DisabledTests/E-Document_Core_Tests/E-Document Core Tests.DisabledTest.json
+++ b/src/DisabledTests/E-Document_Core_Tests/E-Document Core Tests.DisabledTest.json
@@ -314,11 +314,6 @@
"codeunitName": "EDocCopilotPOGeneralHarms",
"method": "*"
},
- {
- "codeunitId": 135575,
- "codeunitName": "E-Doc. API Test",
- "method": "*"
- },
{
"codeunitId": 139235,
"codeunitName": "PEPPOL30 Management Tests",
diff --git a/src/DisabledTests/Expense_Agent_Tests/Expense_Agent_Tests.DisabledTest.json b/src/DisabledTests/Expense_Agent_Tests/Expense_Agent_Tests.DisabledTest.json
index 44be58a7731..02c2392f10b 100644
--- a/src/DisabledTests/Expense_Agent_Tests/Expense_Agent_Tests.DisabledTest.json
+++ b/src/DisabledTests/Expense_Agent_Tests/Expense_Agent_Tests.DisabledTest.json
@@ -1,164 +1,4 @@
[
- {
- "codeunitId": 148315,
- "codeunitName": "Expense Users API Test",
- "method": "UnlinkedExpenseUserIsHiddenFromAPI"
- },
- {
- "codeunitId": 148318,
- "codeunitName": "Expense Capabilities API Test",
- "method": "CapabilitiesProjectsEnabledViaAPI"
- },
- {
- "codeunitId": 148318,
- "codeunitName": "Expense Capabilities API Test",
- "method": "CapabilitiesProjectsDisabledViaAPI"
- },
- {
- "codeunitId": 148318,
- "codeunitName": "Expense Capabilities API Test",
- "method": "CapabilitiesConsolidatedProjectsFollowsProjectFieldsViaAPI"
- },
- {
- "codeunitId": 148318,
- "codeunitName": "Expense Capabilities API Test",
- "method": "ActivityLogCapabilityEnabledViaAPI"
- },
- {
- "codeunitId": 148343,
- "codeunitName": "Expense Activity Log API Test",
- "method": "ActivityLogEntryIsExposedThroughReadOnlyAPI"
- },
- {
- "codeunitId": 148343,
- "codeunitName": "Expense Activity Log API Test",
- "method": "ActivityLogAPIRejectsWrites"
- },
- {
- "codeunitId": 148343,
- "codeunitName": "Expense Activity Log API Test",
- "method": "NonSnapshotActivityDoesNotExposeCurrencies"
- },
- {
- "codeunitId": 148343,
- "codeunitName": "Expense Activity Log API Test",
- "method": "UnscopedActivityAPIHidesEntries"
- },
- {
- "codeunitId": 148343,
- "codeunitName": "Expense Activity Log API Test",
- "method": "SubmitterHistoryReturnsCompleteTimelinesForSubmittedReports"
- },
- {
- "codeunitId": 148343,
- "codeunitName": "Expense Activity Log API Test",
- "method": "ApproverHistoryReturnsCompleteTimelinesForActedOnReports"
- },
- {
- "codeunitId": 148343,
- "codeunitName": "Expense Activity Log API Test",
- "method": "E2EActivityLogScenario"
- },
- {
- "codeunitId": 148333,
- "codeunitName": "Expense Agent Setup API Test",
- "method": "EmailAddressFieldIsExposedThroughAPI"
- },
- {
- "codeunitId": 148349,
- "codeunitName": "Expense PerDiem Locations Test",
- "method": "PerDiemLocationsReturnsLinkedLocationViaAPI"
- },
- {
- "codeunitId": 148349,
- "codeunitName": "Expense PerDiem Locations Test",
- "method": "PerDiemLocationsExcludesNonPerDiemCategoryViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "AssignedByPersonResponsibleReturnsWholeProjectViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "AssignedByProjectManagerReturnsWholeProjectViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "AssignedByProjectLevelResourceReturnsWholeProjectViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "AssignedByTaskLevelResourceReturnsOnlyThatTaskViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "AssignedByPlanningLineReturnsOnlyThatTaskViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "WholeProjectSignalSupersedesTaskLevelViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "OverlappingSignalsForSameResourceAreDeduplicatedViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "CompletedProjectExcludedEvenWhenAssignedViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "EmptyResourceUserMatchesNothingViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "BlankUserIdDoesNotMatchBlankProjectManagerViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "ProjectManagerMatchWithBlankResourceReturnsProjectViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "TasklessProjectExcludedViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "WholeProjectAndTaskLevelAcrossProjectsNoLeakageViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "AllProjectsVisibilityReturnsAllProjectsViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "AllProjectsVisibilityIncludesActiveStatusesAndPostingTasksViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "AssignedProjectsRequiresScopeFilterViaAPI"
- },
- {
- "codeunitId": 148331,
- "codeunitName": "Expense Projects API Test",
- "method": "AssignedProjectsBlockedWhenProjectFieldsDisabledViaAPI"
- },
{
"codeunitId": 148305,
"codeunitName": "Expense Test",
diff --git a/src/DisabledTests/_Exclude_APIV1__Tests/_Exclude_APIV1__Tests.DisabledTest.json b/src/DisabledTests/_Exclude_APIV1__Tests/_Exclude_APIV1__Tests.DisabledTest.json
deleted file mode 100644
index ad692000a56..00000000000
--- a/src/DisabledTests/_Exclude_APIV1__Tests/_Exclude_APIV1__Tests.DisabledTest.json
+++ /dev/null
@@ -1,1457 +0,0 @@
-[
- {
- "codeunitId": 139701,
- "codeunitName": "APIV1 - Accounts E2E",
- "method": "TestGetAccounts"
- },
- {
- "codeunitId": 139704,
- "codeunitName": "APIV1 - Payment Terms E2E",
- "method": "TestGetPaymentTerms"
- },
- {
- "codeunitId": 139705,
- "codeunitName": "APIV1 - Shipment Methods E2E",
- "method": "TestGetShipmentMethods"
- },
- {
- "codeunitId": 139706,
- "codeunitName": "APIV1 - Company Info. E2E",
- "method": "TestGetCompanyInformationWithComplexType"
- },
- {
- "codeunitId": 139706,
- "codeunitName": "APIV1 - Company Info. E2E",
- "method": "TestModifyCompanyInformation"
- },
- {
- "codeunitId": 139706,
- "codeunitName": "APIV1 - Company Info. E2E",
- "method": "TestModifyCompanyInformationWithComplexType"
- },
- {
- "codeunitId": 139706,
- "codeunitName": "APIV1 - Company Info. E2E",
- "method": "TestRemoveComplexTypeFromCompanyInformation"
- },
- {
- "codeunitId": 139707,
- "codeunitName": "APIV1 - Item Categories E2E",
- "method": "TestCreateItemCategory"
- },
- {
- "codeunitId": 139707,
- "codeunitName": "APIV1 - Item Categories E2E",
- "method": "TestDeleteItemCategory"
- },
- {
- "codeunitId": 139707,
- "codeunitName": "APIV1 - Item Categories E2E",
- "method": "TestGetItemCategories"
- },
- {
- "codeunitId": 139707,
- "codeunitName": "APIV1 - Item Categories E2E",
- "method": "TestModifyItemCategory"
- },
- {
- "codeunitId": 139708,
- "codeunitName": "Tax Groups E2E",
- "method": "TestCreateTaxGroup"
- },
- {
- "codeunitId": 139708,
- "codeunitName": "Tax Groups E2E",
- "method": "TestDeleteTaxGroup"
- },
- {
- "codeunitId": 139708,
- "codeunitName": "Tax Groups E2E",
- "method": "TestGetTaxGroup"
- },
- {
- "codeunitId": 139708,
- "codeunitName": "Tax Groups E2E",
- "method": "TestGetTaxGroups"
- },
- {
- "codeunitId": 139708,
- "codeunitName": "Tax Groups E2E",
- "method": "TestModifyTaxGroup"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestActionCancelAndSendInvoice"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestActionCancelInvoice"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestActionMakeCorrectiveCreditMemo"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestActionPostAndSendInvoice"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestActionPostInvoice"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestActionSendCancelledInvoice"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestActionSendDraftInvoice"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestActionSendPostedInvoice"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestClearingManualDiscounts"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestCreateInvoiceThroughPageAndAPI"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestDeleteInvoice"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestEmptyModifyInvoices"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestGetInvoices"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestGetInvoicesAppliesDiscountPct"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestGetInvoicesRedistributesDiscountAmt"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestModifyingWithBlankIdEmptiesTheCodeAndTheId"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestModifyInvoiceNumberForDraftInvoice"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestModifyInvoices"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestModifyInvoiceSetManualDiscount"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestPartialModifyInvoices"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestPostInvoices"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestPostInvoiceWithCurrency"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestPostInvoiceWithDates"
- },
- {
- "codeunitId": 139709,
- "codeunitName": "Sales Invoices E2E",
- "method": "TestPostInvoiceWithEmail"
- },
- {
- "codeunitId": 139710,
- "codeunitName": "Countries/Regions E2E",
- "method": "TestCreateCountriesRegions"
- },
- {
- "codeunitId": 139710,
- "codeunitName": "Countries/Regions E2E",
- "method": "TestDeleteCountriesRegions"
- },
- {
- "codeunitId": 139710,
- "codeunitName": "Countries/Regions E2E",
- "method": "TestGetCountriesRegions"
- },
- {
- "codeunitId": 139710,
- "codeunitName": "Countries/Regions E2E",
- "method": "TestModifyCountriesRegions"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestActionShipAndInvoice"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestClearingManualDiscounts"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestCreateOrderThroughPageAndAPI"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestDeleteOrders"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestEmptyModifyOrders"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestGetOrders"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestGetOrdersAppliesDiscountPct"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestGetOrdersRedistributesDiscountAmt"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestModifyOrders"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestModifyOrderSetManualDiscount"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestPartialModifyOrders"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestPostOrderForCustomerWithLocationCode"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestPostOrders"
- },
- {
- "codeunitId": 139711,
- "codeunitName": "APIV1 - Sales Orders E2E",
- "method": "TestPostOrderWithCurrency"
- },
- {
- "codeunitId": 139712,
- "codeunitName": "APIV1 - UofM E2E",
- "method": "TestDeleteUnitOfMeasure"
- },
- {
- "codeunitId": 139712,
- "codeunitName": "APIV1 - UofM E2E",
- "method": "TestGetUnitOfMeasure"
- },
- {
- "codeunitId": 139712,
- "codeunitName": "APIV1 - UofM E2E",
- "method": "TestInsertUnitOfMeasure"
- },
- {
- "codeunitId": 139712,
- "codeunitName": "APIV1 - UofM E2E",
- "method": "TestModifyUnitOfMeasure"
- },
- {
- "codeunitId": 139713,
- "codeunitName": "APIV1 - Currencies E2E",
- "method": "TestCreateCurrency"
- },
- {
- "codeunitId": 139713,
- "codeunitName": "APIV1 - Currencies E2E",
- "method": "TestDeleteCurrency"
- },
- {
- "codeunitId": 139713,
- "codeunitName": "APIV1 - Currencies E2E",
- "method": "TestGetCurrencies"
- },
- {
- "codeunitId": 139713,
- "codeunitName": "APIV1 - Currencies E2E",
- "method": "TestModifyCurrency"
- },
- {
- "codeunitId": 139714,
- "codeunitName": "Payment Methods E2E",
- "method": "TestCreatePaymentMethods"
- },
- {
- "codeunitId": 139714,
- "codeunitName": "Payment Methods E2E",
- "method": "TestDeletePaymentMethods"
- },
- {
- "codeunitId": 139714,
- "codeunitName": "Payment Methods E2E",
- "method": "TestGetPaymentMethods"
- },
- {
- "codeunitId": 139714,
- "codeunitName": "Payment Methods E2E",
- "method": "TestModifyPaymentMethods"
- },
- {
- "codeunitId": 139715,
- "codeunitName": "APIV1 - Balance Sheet E2E",
- "method": "TestGetBalanceSheetRecords"
- },
- {
- "codeunitId": 139716,
- "codeunitName": "APIV1 - Income Statement E2E",
- "method": "TestGetIncomeStatementRecords"
- },
- {
- "codeunitId": 139717,
- "codeunitName": "APIV1 - CashFlow Statement E2E",
- "method": "TestGetCashFlowRecords"
- },
- {
- "codeunitId": 139718,
- "codeunitName": "APIV1 - Trial Balance E2E",
- "method": "TestGetTrialBalanceRecords"
- },
- {
- "codeunitId": 139719,
- "codeunitName": "APIV1 - Aged AP E2E",
- "method": "TestGetAgedAPRecords"
- },
- {
- "codeunitId": 139720,
- "codeunitName": "APIV1 - Aged AR E2E",
- "method": "TestGetAgedARRecords"
- },
- {
- "codeunitId": 139721,
- "codeunitName": "APIV1 - Ret. Earnings E2E",
- "method": "TestRetainedEarningsStatementRecords"
- },
- {
- "codeunitId": 139722,
- "codeunitName": "APIV1 - Employees E2E",
- "method": "TestCreateEmployee"
- },
- {
- "codeunitId": 139722,
- "codeunitName": "APIV1 - Employees E2E",
- "method": "TestDeleteEmployee"
- },
- {
- "codeunitId": 139722,
- "codeunitName": "APIV1 - Employees E2E",
- "method": "TestGetEmployee"
- },
- {
- "codeunitId": 139722,
- "codeunitName": "APIV1 - Employees E2E",
- "method": "TestModifyEmployee"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestActionMakeInvoiceFromQuote"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestActionMakeOrderFromQuote"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestActionSendQuote"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestClearingManualDiscounts"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestCreateQuoteThroughPageAndAPI"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestDeleteQuotes"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestEmptyModifyQuotes"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestGetQuotes"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestGetQuotesAppliesDiscountPct"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestGetQuotesRedistributesDiscountAmt"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestModifyQuotes"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestModifyQuoteSetManualDiscount"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestPartialModifyQuotes"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestPostQuotes"
- },
- {
- "codeunitId": 139723,
- "codeunitName": "APIV1 - Sales Quotes E2E",
- "method": "TestPostQuoteWithCurrency"
- },
- {
- "codeunitId": 139724,
- "codeunitName": "APIV1 - Dimensions E2E",
- "method": "TestGetDimensions"
- },
- {
- "codeunitId": 139724,
- "codeunitName": "APIV1 - Dimensions E2E",
- "method": "TestGetDimensionValues"
- },
- {
- "codeunitId": 139727,
- "codeunitName": "APIV1 - Journals E2E",
- "method": "TestActionPostGenJournalBatch"
- },
- {
- "codeunitId": 139727,
- "codeunitName": "APIV1 - Journals E2E",
- "method": "TestCreateJournal"
- },
- {
- "codeunitId": 139727,
- "codeunitName": "APIV1 - Journals E2E",
- "method": "TestDeleteJournal"
- },
- {
- "codeunitId": 139727,
- "codeunitName": "APIV1 - Journals E2E",
- "method": "TestGetJournals"
- },
- {
- "codeunitId": 139727,
- "codeunitName": "APIV1 - Journals E2E",
- "method": "TestModifyJournal"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestActionCancelAndSendCorrectiveCreditMemo"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestActionCancelCorrectiveCreditMemo"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestActionPostAndSendCreditMemo"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestActionPostCreditMemo"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestActionSendCancelledCreditMemo"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestActionSendPostedCreditMemo"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestClearingManualDiscounts"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestCreateCreditMemoThroughPageAndAPI"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestDeleteCreditMemo"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestEmptyModifyCreditMemos"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestGetCreditMemos"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestGetCreditMemosAppliesDiscountPct"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestGetCreditMemosRedistributesDiscountAmt"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestModifyCreditMemos"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestModifyCreditMemoSetManualDiscount"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestPartialModifyCreditMemos"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestPostCreditMemos"
- },
- {
- "codeunitId": 139728,
- "codeunitName": "APIV1 - Sales Credit Memos E2E",
- "method": "TestPostCreditMemoWithCurrency"
- },
- {
- "codeunitId": 139729,
- "codeunitName": "APIV1 - Purchase Invoices E2E",
- "method": "TestActionPostPurchaseInvoice"
- },
- {
- "codeunitId": 139729,
- "codeunitName": "APIV1 - Purchase Invoices E2E",
- "method": "TestCreateInvoiceThroughPageAndAPI"
- },
- {
- "codeunitId": 139729,
- "codeunitName": "APIV1 - Purchase Invoices E2E",
- "method": "TestDeleteInvoice"
- },
- {
- "codeunitId": 139729,
- "codeunitName": "APIV1 - Purchase Invoices E2E",
- "method": "TestEmptyModifyInvoices"
- },
- {
- "codeunitId": 139729,
- "codeunitName": "APIV1 - Purchase Invoices E2E",
- "method": "TestGetInvoices"
- },
- {
- "codeunitId": 139729,
- "codeunitName": "APIV1 - Purchase Invoices E2E",
- "method": "TestModifyInvoices"
- },
- {
- "codeunitId": 139729,
- "codeunitName": "APIV1 - Purchase Invoices E2E",
- "method": "TestPartialModifyInvoices"
- },
- {
- "codeunitId": 139729,
- "codeunitName": "APIV1 - Purchase Invoices E2E",
- "method": "TestPostInvoices"
- },
- {
- "codeunitId": 139729,
- "codeunitName": "APIV1 - Purchase Invoices E2E",
- "method": "TestPostPurchaseInvoiceWithCurrency"
- },
- {
- "codeunitId": 139729,
- "codeunitName": "APIV1 - Purchase Invoices E2E",
- "method": "TestPurchaseInvoiceWithPaymentDiscount"
- },
- {
- "codeunitId": 139730,
- "codeunitName": "APIV1 - GLEntries E2E",
- "method": "TestGetGLEntries"
- },
- {
- "codeunitId": 139731,
- "codeunitName": "APIV1 - Automation RS Package",
- "method": "TestApplyRSPackage"
- },
- {
- "codeunitId": 139731,
- "codeunitName": "APIV1 - Automation RS Package",
- "method": "TestCreateRSPackage"
- },
- {
- "codeunitId": 139731,
- "codeunitName": "APIV1 - Automation RS Package",
- "method": "TestImportRSPackage"
- },
- {
- "codeunitId": 139731,
- "codeunitName": "APIV1 - Automation RS Package",
- "method": "TestImportWrongRSPackage"
- },
- {
- "codeunitId": 139731,
- "codeunitName": "APIV1 - Automation RS Package",
- "method": "TestUploadRSPackageFile"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestCreateDraftInvoiceAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestCreateDraftPurchaseInvoiceAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestCreateGLEntryAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestCreateJournalLineAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestCreatePostedInvoiceAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestCreatePostedPurchaseInvoiceAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestCreateQuoteAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestDeleteDraftInvoiceAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestDeleteDraftPurchaseInvoiceAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestDeleteGLEntryAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestDeleteJournalLineAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestDeletePostedInvoiceAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestDeletePostedPurchaseInvoiceAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestDeleteQuoteAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetDraftInvoiceAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetDraftInvoiceAttachments"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetDraftPurchaseInvoiceAttachments"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetGLEntryAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetGLEntryAttachments"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetJournalAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetJournalLineAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetJournalLineAttachments"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetPostedInvoiceAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetPostedInvoiceAttachments"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetPostedPurchaseInvoiceAttachments"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetQuoteAttachment"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestGetQuoteAttachments"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestLinkedAttachmentContentChangeKeepsOtherFieldsUnchanged"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestLinkedAttachmentDocumentIdChangeNotAllowed"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestLinkedAttachmentFileNameChangeKeepsOtherFieldsUnchanged"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestLinkedAttachmentIdChangeNotAllowed"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestTransferAttachmentFromDraftToPostedInvoice"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestTransferAttachmentFromDraftToPostedPurchaseInvoice"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestUpdateGenJournalLineAttachmentBinaryContent"
- },
- {
- "codeunitId": 139733,
- "codeunitName": "APIV1 - Attachments E2E",
- "method": "TestUpdateGLEntryAttachmentBinaryContent"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestCreateLineThroughPageAndAPI"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestDeleteInvoiceLine"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestDeletingLineKeepsInvoiceDiscountAmt"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestDeletingLineMovesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestDeletingLineRemovesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestGetInvoiceLineDirectly"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestGetInvoiceLines"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestGetInvoiceLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestGetPostedInvoiceLines"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestGettingLinesWithDifferentTypes"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestInsertingLineUpdatesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestModifyingLineKeepsInvoiceDiscountAmt"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestModifyingLineUpdatesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestModifyInvoiceLine"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestModifyInvoiceLineWithUoM"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestPatchingTheIdToAccountChangesLineType"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestPatchingTheIdToItemChangesLineType"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestPatchingTheTypeBlanksIds"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestPostingBlankLineDefaultsToItemType"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestPostingCommentLine"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestPostInvoiceLines"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestPostInvoiceLinesWithItemVariant"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestPostInvoiceLinesWithUoM"
- },
- {
- "codeunitId": 139734,
- "codeunitName": "APIV1 - Sales Inv. Lines E2E",
- "method": "TestPostInvoiceLineWithSequence"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestCreateLineThroughPageAndAPI"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestDeleteOrderLine"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestDeletingLineKeepsOrderDiscountAmt"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestDeletingLineMovesOrderDiscountPct"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestDeletingLineRemovesOrderDiscountPct"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestGetOrderLineDirectly"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestGetOrderLines"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestGetOrderLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestGettingLinesWithDifferentTypes"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestInsertingLineUpdatesOrderDiscountPct"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestModifyingLineKeepsOrderDiscountAmt"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestModifyingLineUpdatesOrderDiscountPct"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestModifyOrderLines"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestPatchingTheIdToAccountChangesLineType"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestPatchingTheIdToItemChangesLineType"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestPatchingTheTypeBlanksIds"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestPostingBlankLineDefaultsToItemType"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestPostingCommentLine"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestPostOrderLines"
- },
- {
- "codeunitId": 139735,
- "codeunitName": "APIV1 - Sales Order Lines E2E",
- "method": "TestPostOrderLineWithItemVariant"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestDeleteQuoteLine"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestDeletingLineKeepsQuoteDiscountAmt"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestDeletingLineMovesQuoteDiscountPct"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestDeletingLineRemovesQuoteDiscountPct"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestGetQuoteLineDirectly"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestGetQuoteLines"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestGetQuoteLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestInsertingLineKeepsQuoteDiscountAmt"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestInsertingLineUpdatesQuoteDiscountPct"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestModifyingLineKeepsQuoteDiscountAmt"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestModifyingLineUpdatesQuoteDiscountPct"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestModifyQuoteLines"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestPatchingTheTypeBlanksIds"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestPostingBlankLineDefaultsToItemType"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestPostingCommentLine"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestPostQuoteLines"
- },
- {
- "codeunitId": 139736,
- "codeunitName": "APIV1 - Sales Quote Lines E2E",
- "method": "TestPostQuoteLinesWithItemVariant"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestCreateLineThroughPageAndAPI"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestDeleteCreditMemoLine"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestDeletePostedCreditMemoLine"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestDeletingLineKeepsCreditMemoDiscountAmt"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestDeletingLineMovesCreditMemoDiscountPct"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestDeletingLineRemovesCreditMemoDiscountPct"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestGetCreditMemoLineDirectly"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestGetCreditMemoLines"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestGetCreditMemoLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestGetPostedCreditMemoLines"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestGettingLinesWithDifferentTypes"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestInsertingLineUpdatesCreditMemoDiscountPct"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestModifyCreditMemoLines"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestModifyingLineKeepsCreditMemoDiscountAmt"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestModifyingLineUpdatesCreditMemoDiscountPct"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestPatchingTheIdToAccountChangesLineType"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestPatchingTheIdToItemChangesLineType"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestPatchingTheTypeBlanksIds"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestPostCreditMemoLines"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestPostCreditMemoLinesWithItemVariant"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestPostCreditMemoLineWithSequence"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestPostingBlankLineDefaultsToItemType"
- },
- {
- "codeunitId": 139737,
- "codeunitName": "APIV1 - Sales CrMemo Lines E2E",
- "method": "TestPostingCommentLine"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestCreateLineThroughPageAndAPI"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestDeleteInvoiceLine"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestDeletingLineRemovesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestGetInvoiceLineDirectly"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestGetInvoiceLines"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestGetInvoiceLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestGetPostedInvoiceLines"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestInsertingLineUpdatesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestModifyingLineUpdatesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestModifyInvoiceLines"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestPatchingTheTypeBlanksIds"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestPostingBlankLineDefaultsToItemType"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestPostingCommentLine"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestPostInvoiceLines"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestPostInvoiceLinesWithItemVariant"
- },
- {
- "codeunitId": 139738,
- "codeunitName": "APIV1 - Purchase Inv Lines E2E",
- "method": "TestPostInvoiceLineWithSequence"
- },
- {
- "codeunitId": 139743,
- "codeunitName": "APIV1 - Customer Payments E2E",
- "method": "TestAppliesToInvoiceNoAndIdSync"
- },
- {
- "codeunitId": 139743,
- "codeunitName": "APIV1 - Customer Payments E2E",
- "method": "TestCreateCustomerPayment"
- },
- {
- "codeunitId": 139743,
- "codeunitName": "APIV1 - Customer Payments E2E",
- "method": "TestCreateCustomerPaymentWithInvoiceId"
- },
- {
- "codeunitId": 139743,
- "codeunitName": "APIV1 - Customer Payments E2E",
- "method": "TestCreateCustomerPaymentWithoutDocNo"
- },
- {
- "codeunitId": 139743,
- "codeunitName": "APIV1 - Customer Payments E2E",
- "method": "TestCustomerAutofillDoesNotOverwrite"
- },
- {
- "codeunitId": 139743,
- "codeunitName": "APIV1 - Customer Payments E2E",
- "method": "TestCustomerAutofillWhenGivingInvoiceNumber"
- },
- {
- "codeunitId": 139743,
- "codeunitName": "APIV1 - Customer Payments E2E",
- "method": "TestCustomerNoAndIdSync"
- },
- {
- "codeunitId": 139743,
- "codeunitName": "APIV1 - Customer Payments E2E",
- "method": "TestDeleteCustomerPayment"
- },
- {
- "codeunitId": 139743,
- "codeunitName": "APIV1 - Customer Payments E2E",
- "method": "TestGetCustomerPayment"
- },
- {
- "codeunitId": 139743,
- "codeunitName": "APIV1 - Customer Payments E2E",
- "method": "TestModifyCustomerPayment"
- },
- {
- "codeunitId": 139743,
- "codeunitName": "APIV1 - Customer Payments E2E",
- "method": "TestModifyCustomerPaymentWithRandomDocNo"
- },
- {
- "codeunitId": 139744,
- "codeunitName": "APIV1 - PDF Document E2E",
- "method": "TestGetPDFPurchaseInvoice"
- },
- {
- "codeunitId": 139744,
- "codeunitName": "APIV1 - PDF Document E2E",
- "method": "TestGetPDFSalesCreditMemo"
- },
- {
- "codeunitId": 139744,
- "codeunitName": "APIV1 - PDF Document E2E",
- "method": "TestGetPDFSalesInvoice"
- },
- {
- "codeunitId": 139744,
- "codeunitName": "APIV1 - PDF Document E2E",
- "method": "TestGetPDFSalesQuote"
- },
- {
- "codeunitId": 139745,
- "codeunitName": "APIV1 - Journal Lines E2E",
- "method": "TestCreateJournalLineWithDimensionsOnAccountWithDimensionSetup"
- },
- {
- "codeunitId": 139745,
- "codeunitName": "APIV1 - Journal Lines E2E",
- "method": "TestCreateJournalLineWithDisabledCopyVATSetup"
- },
- {
- "codeunitId": 139745,
- "codeunitName": "APIV1 - Journal Lines E2E",
- "method": "TestCreateJournalLineWithoutDimensionsOnAccountWithDimensionSetup"
- },
- {
- "codeunitId": 139745,
- "codeunitName": "APIV1 - Journal Lines E2E",
- "method": "TestCreateJournalLineWithOverridenDefaultDimension"
- }
-]
diff --git a/src/DisabledTests/_Exclude_APIV2__Tests/_Exclude_APIV2__Tests.DisabledTest.json b/src/DisabledTests/_Exclude_APIV2__Tests/_Exclude_APIV2__Tests.DisabledTest.json
index 9c764cbf7e2..63514a3f50d 100644
--- a/src/DisabledTests/_Exclude_APIV2__Tests/_Exclude_APIV2__Tests.DisabledTest.json
+++ b/src/DisabledTests/_Exclude_APIV2__Tests/_Exclude_APIV2__Tests.DisabledTest.json
@@ -1,3582 +1,47 @@
[
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestCreateItemWithCategoryCode"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestCreateItemWithCategoryId"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestCreateItemWithTemplate"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestCreateItemWithTemplateIgnoresFieldsSet"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestCreateItemWithUoMCode"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestCreateItemWithUoMId"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestCreateSimpleItem"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestDeleteItem"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestGetItemWithCategory"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestGetRelatedEntities"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestGetSimpleItem"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestModifyItem"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestModifyItemInventory"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestPatchItemWithCategoryCode"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestPatchItemWithCategoryId"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestPatchItemWithGenProdPostingGroup"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestPatchItemWithInventoryPostingGroup"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestUnassignGenProdPostingGroup"
- },
- {
- "codeunitId": 139800,
- "codeunitName": "APIV2 - Items E2E",
- "method": "TestUnassignInventoryPostingGroup"
- },
- {
- "codeunitId": 139801,
- "codeunitName": "APIV2 - Accounts E2E",
- "method": "TestGetAccounts"
- },
- {
- "codeunitId": 139804,
- "codeunitName": "APIV2 - Payment Terms E2E",
- "method": "TestGetPaymentTerms"
- },
- {
- "codeunitId": 139805,
- "codeunitName": "APIV2 - Shipment Methods E2E",
- "method": "TestGetShipmentMethods"
- },
- {
- "codeunitId": 139806,
- "codeunitName": "APIV2 - Company Info. E2E",
- "method": "TestGetCompanyInformation"
- },
- {
- "codeunitId": 139806,
- "codeunitName": "APIV2 - Company Info. E2E",
- "method": "TestModifyCompanyInformation"
- },
- {
- "codeunitId": 139806,
- "codeunitName": "APIV2 - Company Info. E2E",
- "method": "TestModifyInvalidExperinceTier"
- },
- {
- "codeunitId": 139806,
- "codeunitName": "APIV2 - Company Info. E2E",
- "method": "TestModifyValidExperinceTier"
- },
- {
- "codeunitId": 139807,
- "codeunitName": "APIV2 - Item Categories E2E",
- "method": "TestCreateItemCategory"
- },
- {
- "codeunitId": 139807,
- "codeunitName": "APIV2 - Item Categories E2E",
- "method": "TestDeleteItemCategory"
- },
- {
- "codeunitId": 139807,
- "codeunitName": "APIV2 - Item Categories E2E",
- "method": "TestGetItemCategories"
- },
- {
- "codeunitId": 139807,
- "codeunitName": "APIV2 - Item Categories E2E",
- "method": "TestModifyItemCategory"
- },
- {
- "codeunitId": 139808,
- "codeunitName": "APIV2 - Tax Groups E2E",
- "method": "TestCreateTaxGroup"
- },
- {
- "codeunitId": 139808,
- "codeunitName": "APIV2 - Tax Groups E2E",
- "method": "TestDeleteTaxGroup"
- },
- {
- "codeunitId": 139808,
- "codeunitName": "APIV2 - Tax Groups E2E",
- "method": "TestGetTaxGroup"
- },
- {
- "codeunitId": 139808,
- "codeunitName": "APIV2 - Tax Groups E2E",
- "method": "TestGetTaxGroups"
- },
- {
- "codeunitId": 139808,
- "codeunitName": "APIV2 - Tax Groups E2E",
- "method": "TestModifyTaxGroup"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestActionCancelAndSendInvoice"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestActionCancelInvoice"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestActionMakeCorrectiveCreditMemo"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestActionPostAndSendInvoice"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestActionPostInvoice"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestActionSendCancelledInvoice"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestActionSendDraftInvoice"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestActionSendPostedInvoice"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestClearingManualDiscounts"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestCreateInvoiceThroughPageAndAPI"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestDeleteInvoice"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestEmptyModifyInvoices"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestGetInvoiceFromPostedOrderCorrectOrderIdAndNo"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestGetInvoices"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestGetInvoicesAppliesDiscountPct"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestGetInvoicesRedistributesDiscountAmt"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestGetSalesInvoiceFromDraftId"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestModifyingWithBlankIdEmptiesTheCodeAndTheId"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestModifyInvoiceNumberForDraftInvoice"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestModifyInvoices"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestModifyInvoiceSetManualDiscount"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestPartialModifyInvoices"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestPostInvoices"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestPostInvoiceWithCurrency"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestPostInvoiceWithDates"
- },
- {
- "codeunitId": 139809,
- "codeunitName": "APIV2 - Sales Invoices E2E",
- "method": "TestPostInvoiceWithEmail"
- },
- {
- "codeunitId": 139810,
- "codeunitName": "APIV2 - Countries/Regions E2E",
- "method": "TestCreateCountriesRegions"
- },
- {
- "codeunitId": 139810,
- "codeunitName": "APIV2 - Countries/Regions E2E",
- "method": "TestDeleteCountriesRegions"
- },
- {
- "codeunitId": 139810,
- "codeunitName": "APIV2 - Countries/Regions E2E",
- "method": "TestGetCountriesRegions"
- },
- {
- "codeunitId": 139810,
- "codeunitName": "APIV2 - Countries/Regions E2E",
- "method": "TestModifyCountriesRegions"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestActionShipAndInvoice"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestClearingManualDiscounts"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestCreateOrderThroughPageAndAPI"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestDeleteOrders"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestEmptyModifyOrders"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestGetOrders"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestGetOrdersAppliesDiscountPct"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestGetOrdersRedistributesDiscountAmt"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestModifyOrders"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestModifyOrderSetManualDiscount"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestPartialModifyOrders"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestPostOrderForCustomerWithLocationCode"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestPostOrders"
- },
- {
- "codeunitId": 139811,
- "codeunitName": "APIV2 - Sales Orders E2E",
- "method": "TestPostOrderWithCurrency"
- },
- {
- "codeunitId": 139812,
- "codeunitName": "APIV2 - UofM E2E",
- "method": "TestDeleteUnitOfMeasure"
- },
- {
- "codeunitId": 139812,
- "codeunitName": "APIV2 - UofM E2E",
- "method": "TestGetUnitOfMeasure"
- },
- {
- "codeunitId": 139812,
- "codeunitName": "APIV2 - UofM E2E",
- "method": "TestInsertUnitOfMeasure"
- },
- {
- "codeunitId": 139812,
- "codeunitName": "APIV2 - UofM E2E",
- "method": "TestModifyUnitOfMeasure"
- },
- {
- "codeunitId": 139813,
- "codeunitName": "APIV2 - Currencies E2E",
- "method": "TestCreateCurrency"
- },
- {
- "codeunitId": 139813,
- "codeunitName": "APIV2 - Currencies E2E",
- "method": "TestDeleteCurrency"
- },
- {
- "codeunitId": 139813,
- "codeunitName": "APIV2 - Currencies E2E",
- "method": "TestGetCurrencies"
- },
- {
- "codeunitId": 139813,
- "codeunitName": "APIV2 - Currencies E2E",
- "method": "TestModifyCurrency"
- },
- {
- "codeunitId": 139814,
- "codeunitName": "APIV2 - Payment Methods E2E",
- "method": "TestCreatePaymentMethods"
- },
- {
- "codeunitId": 139814,
- "codeunitName": "APIV2 - Payment Methods E2E",
- "method": "TestDeletePaymentMethods"
- },
- {
- "codeunitId": 139814,
- "codeunitName": "APIV2 - Payment Methods E2E",
- "method": "TestGetPaymentMethods"
- },
- {
- "codeunitId": 139814,
- "codeunitName": "APIV2 - Payment Methods E2E",
- "method": "TestModifyPaymentMethods"
- },
- {
- "codeunitId": 139815,
- "codeunitName": "APIV2 - Balance Sheet E2E",
- "method": "TestGetBalanceSheetRecords"
- },
- {
- "codeunitId": 139816,
- "codeunitName": "APIV2 - Income Statement E2E",
- "method": "TestGetIncomeStatementRecords"
- },
- {
- "codeunitId": 139817,
- "codeunitName": "APIV2 - CashFlow Statement E2E",
- "method": "TestGetCashFlowRecords"
- },
- {
- "codeunitId": 139818,
- "codeunitName": "APIV2 - Trial Balance E2E",
- "method": "TestGetTrialBalanceRecords"
- },
- {
- "codeunitId": 139819,
- "codeunitName": "APIV2 - Aged AP E2E",
- "method": "TestGetAgedAPRecords"
- },
- {
- "codeunitId": 139820,
- "codeunitName": "APIV2 - Aged AR E2E",
- "method": "TestGetAgedARRecords"
- },
- {
- "codeunitId": 139821,
- "codeunitName": "APIV2 - Ret. Earnings E2E",
- "method": "TestRetainedEarningsStatementRecords"
- },
- {
- "codeunitId": 139822,
- "codeunitName": "APIV2 - Employees E2E",
- "method": "TestCreateEmployee"
- },
- {
- "codeunitId": 139822,
- "codeunitName": "APIV2 - Employees E2E",
- "method": "TestDeleteEmployee"
- },
- {
- "codeunitId": 139822,
- "codeunitName": "APIV2 - Employees E2E",
- "method": "TestGetEmployee"
- },
- {
- "codeunitId": 139822,
- "codeunitName": "APIV2 - Employees E2E",
- "method": "TestModifyEmployee"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestActionMakeInvoiceFromQuote"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestActionMakeOrderFromQuote"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestActionSendQuote"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestClearingManualDiscounts"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestCreateQuoteThroughPageAndAPI"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestDeleteQuotes"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestEmptyModifyQuotes"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestGetQuotes"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestGetQuotesAppliesDiscountPct"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestGetQuotesRedistributesDiscountAmt"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestModifyQuotes"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestModifyQuoteSetManualDiscount"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestPartialModifyQuotes"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestPostQuotes"
- },
- {
- "codeunitId": 139823,
- "codeunitName": "APIV2 - Sales Quotes E2E",
- "method": "TestPostQuoteWithCurrency"
- },
- {
- "codeunitId": 139824,
- "codeunitName": "APIV2 - Dimensions E2E",
- "method": "TestGetDimensions"
- },
- {
- "codeunitId": 139824,
- "codeunitName": "APIV2 - Dimensions E2E",
- "method": "TestGetDimensionValues"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestCreateDoesntWorkWithAlreadyExistingCode"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestCreateJournalLineDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestCreatePurchaseCrMemoDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestCreatePurchaseInvoiceDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestCreatePurchaseOrderDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestCreateSalesCrMemoDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestCreateSalesInvoiceDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestCreateSalesOrderDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestCreateSalesQuoteDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestCreateTimeRegEntryDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestDeleteDimensionSetLineOfGenJournalLines"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestDeletePurchaseCrMemoDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestDeletePurchaseInvoiceDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestDeletePurchaseOrderDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestDeleteSalesCrMemoDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestDeleteSalesInvoiceDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestDeleteSalesOrderDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestDeleteSalesQuoteDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestDeleteTimeRegEntryDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestGetDimensionSetLinesOfGLEntry"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestGetDimensionSetLinesOfJournalLines"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestGetDimensionSetLinesOfPurchaseCrMemo"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestGetDimensionSetLinesOfPurchaseInvoice"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestGetDimensionSetLinesOfPurchaseOrder"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestGetDimensionSetLinesOfSalesCrMemo"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestGetDimensionSetLinesOfSalesInvoice"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestGetDimensionSetLinesOfSalesOrder"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestGetDimensionSetLinesOfSalesQuote"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestGetDimensionSetLinesOfTimeRegEntry"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestModifyDimensionSetLineOfGenJournalLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestModifyDimensionSetLineOfSalesOrder"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestModifyDimensionSetLineOfSalesQuote"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestModifyOfDimensionCodeDoesntWork"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestModifyPurchaseCrMemoDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestModifyPurchaseInvoiceDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestModifyPurchaseOrderDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestModifySalesCrMemoDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestModifySalesInvoiceDimensionSetLine"
- },
- {
- "codeunitId": 139825,
- "codeunitName": "APIV2 - Dim. Set Lines E2E",
- "method": "TestModifyTimeRegEntryDimensionSetLine"
- },
- {
- "codeunitId": 139827,
- "codeunitName": "APIV2 - Journals E2E",
- "method": "TestActionPostGenJournalBatch"
- },
- {
- "codeunitId": 139827,
- "codeunitName": "APIV2 - Journals E2E",
- "method": "TestCreateJournal"
- },
- {
- "codeunitId": 139827,
- "codeunitName": "APIV2 - Journals E2E",
- "method": "TestDeleteJournal"
- },
- {
- "codeunitId": 139827,
- "codeunitName": "APIV2 - Journals E2E",
- "method": "TestGetJournals"
- },
- {
- "codeunitId": 139827,
- "codeunitName": "APIV2 - Journals E2E",
- "method": "TestModifyJournal"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestActionCancelAndSendCorrectiveCreditMemo"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestActionCancelCorrectiveCreditMemo"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestActionPostAndSendCreditMemo"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestActionPostCreditMemo"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestActionSendCancelledCreditMemo"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestActionSendPostedCreditMemo"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestClearingManualDiscounts"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestCreateCreditMemoThroughPageAndAPI"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestDeleteCreditMemo"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestEmptyModifyCreditMemos"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestGetCreditMemos"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestGetCreditMemosAppliesDiscountPct"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestGetCreditMemosRedistributesDiscountAmt"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestModifyCreditMemos"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestModifyCreditMemoSetManualDiscount"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestPartialModifyCreditMemos"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestPostCreditMemos"
- },
- {
- "codeunitId": 139828,
- "codeunitName": "APIV2 - Sales Credit Memos E2E",
- "method": "TestPostCreditMemoWithCurrency"
- },
- {
- "codeunitId": 139829,
- "codeunitName": "APIV2 - Purchase Invoices E2E",
- "method": "TestActionPostPurchaseInvoice"
- },
- {
- "codeunitId": 139829,
- "codeunitName": "APIV2 - Purchase Invoices E2E",
- "method": "TestCreateInvoiceThroughPageAndAPI"
- },
- {
- "codeunitId": 139829,
- "codeunitName": "APIV2 - Purchase Invoices E2E",
- "method": "TestDeleteInvoice"
- },
- {
- "codeunitId": 139829,
- "codeunitName": "APIV2 - Purchase Invoices E2E",
- "method": "TestEmptyModifyInvoices"
- },
- {
- "codeunitId": 139829,
- "codeunitName": "APIV2 - Purchase Invoices E2E",
- "method": "TestGetInvoiceFromPostedOrderCorrectOrderIdAndNo"
- },
- {
- "codeunitId": 139829,
- "codeunitName": "APIV2 - Purchase Invoices E2E",
- "method": "TestGetInvoices"
- },
- {
- "codeunitId": 139829,
- "codeunitName": "APIV2 - Purchase Invoices E2E",
- "method": "TestGetPurchaseInvoiceFromDraftId"
- },
- {
- "codeunitId": 139829,
- "codeunitName": "APIV2 - Purchase Invoices E2E",
- "method": "TestModifyInvoices"
- },
- {
- "codeunitId": 139829,
- "codeunitName": "APIV2 - Purchase Invoices E2E",
- "method": "TestPartialModifyInvoices"
- },
- {
- "codeunitId": 139829,
- "codeunitName": "APIV2 - Purchase Invoices E2E",
- "method": "TestPostInvoices"
- },
- {
- "codeunitId": 139829,
- "codeunitName": "APIV2 - Purchase Invoices E2E",
- "method": "TestPostPurchaseInvoiceWithCurrency"
- },
- {
- "codeunitId": 139830,
- "codeunitName": "APIV2 - GLEntries E2E",
- "method": "TestGetGLEntries"
- },
- {
- "codeunitId": 139831,
- "codeunitName": "APIV2 - Automation RS Package",
- "method": "TestApplyRSPackage"
- },
- {
- "codeunitId": 139831,
- "codeunitName": "APIV2 - Automation RS Package",
- "method": "TestCreateRSPackage"
- },
- {
- "codeunitId": 139831,
- "codeunitName": "APIV2 - Automation RS Package",
- "method": "TestImportRSPackage"
- },
- {
- "codeunitId": 139831,
- "codeunitName": "APIV2 - Automation RS Package",
- "method": "TestImportWrongRSPackage"
- },
- {
- "codeunitId": 139831,
- "codeunitName": "APIV2 - Automation RS Package",
- "method": "TestUploadRSPackageFile"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestCreateDraftInvoiceAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestCreateDraftOrderAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestCreateDraftPurchaseCreditMemoAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestCreateDraftPurchaseInvoiceAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestCreateDraftPurchaseOrderAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestCreateGLEntryAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestCreateJournalLineAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestCreatePostedInvoiceAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestCreatePostedPurchaseCreditMemoAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestCreatePostedPurchaseInvoiceAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestCreateQuoteAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestDeleteDraftInvoiceAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestDeleteDraftPurchaseCreditMemoAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestDeleteDraftPurchaseInvoiceAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestDeleteGLEntryAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestDeleteJournalLineAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestDeletePostedInvoiceAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestDeletePostedPurchaseCreditMemoAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestDeletePostedPurchaseInvoiceAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestDeleteQuoteAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetDraftInvoiceAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetDraftInvoiceAttachments"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetDraftOrderAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetDraftOrderAttachments"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetDraftPurchaseCreditMemoAttachments"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetDraftPurchaseInvoiceAttachments"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetDraftPurchaseOrderAttachments"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetGLEntryAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetGLEntryAttachments"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetJournalAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetJournalLineAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetJournalLineAttachments"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetPostedInvoiceAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetPostedInvoiceAttachments"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetPostedPurchaseCreditMemoAttachments"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetPostedPurchaseInvoiceAttachments"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetQuoteAttachment"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestGetQuoteAttachments"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestLinkedAttachmentContentChangeKeepsOtherFieldsUnchanged"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestLinkedAttachmentDocumentIdChangeNotAllowed"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestLinkedAttachmentFileNameChangeKeepsOtherFieldsUnchanged"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestTransferAttachmentFromDraftToPostedInvoice"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestTransferAttachmentFromDraftToPostedPurchaseCreditMemo"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestTransferAttachmentFromDraftToPostedPurchaseInvoice"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestUpdateGenJournalLineAttachmentBinaryContent"
- },
- {
- "codeunitId": 139833,
- "codeunitName": "APIV2 - Attachments E2E",
- "method": "TestUpdateGLEntryAttachmentBinaryContent"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestCreateLineThroughPageAndAPI"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestDeleteInvoiceLine"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestDeletingLineKeepsInvoiceDiscountAmt"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestDeletingLineMovesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestDeletingLineRemovesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestGetInvoiceLineDirectly"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestGetInvoiceLines"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestGetInvoiceLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestGetPostedInvoiceLines"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestGettingLinesWithDifferentTypes"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestInsertingLineKeepsInvoiceDiscountAmt"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestInsertingLineUpdatesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestModifyingLineKeepsInvoiceDiscountAmt"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestModifyingLineUpdatesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestModifyInvoiceLine"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestModifyInvoiceLineWithUoM"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestPatchingTheIdToAccountChangesLineType"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestPatchingTheIdToItemChangesLineType"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestPatchingTheTypeBlanksIds"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestPostingBlankLineDefaultsToCommentType"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestPostingCommentLine"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestPostInvoiceLines"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestPostInvoiceLinesWithItemVariant"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestPostInvoiceLinesWithUoM"
- },
- {
- "codeunitId": 139834,
- "codeunitName": "APIV2 - Sales Inv. Lines E2E",
- "method": "TestPostInvoiceLineWithSequence"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestCreateLineThroughPageAndAPI"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestCreatingOrderLineWithAssemblyBOM"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestDeleteOrderLine"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestDeletingLineKeepsOrderDiscountAmt"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestDeletingLineMovesOrderDiscountPct"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestDeletingLineRemovesOrderDiscountPct"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestExpandReturnsCorrectDocumentLines"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestExpandReturnsCorrectDocumentLinesWithMultipleDocuments"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestGetOrderLineDirectly"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestGetOrderLines"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestGetOrderLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestGettingLinesWithDifferentTypes"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestInsertingLineKeepsOrderDiscountAmt"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestInsertingLineUpdatesOrderDiscountPct"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestModifyingLineKeepsOrderDiscountAmt"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestModifyingLineUpdatesOrderDiscountPct"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestModifyOrderLines"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestPatchingTheIdToAccountChangesLineType"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestPatchingTheIdToItemChangesLineType"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestPatchingTheTypeBlanksIds"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestPostingBlankLineDefaultsToCommentType"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestPostingCommentLine"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestPostOrderLines"
- },
- {
- "codeunitId": 139835,
- "codeunitName": "APIV2 - Sales Order Lines E2E",
- "method": "TestPostOrderLineWithItemVariant"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestDeleteQuoteLine"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestDeletingLineKeepsQuoteDiscountAmt"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestDeletingLineMovesQuoteDiscountPct"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestDeletingLineRemovesQuoteDiscountPct"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestGetQuoteLineDirectly"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestGetQuoteLines"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestGetQuoteLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestInsertingLineKeepsQuoteDiscountAmt"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestInsertingLineUpdatesQuoteDiscountPct"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestModifyingLineKeepsQuoteDiscountAmt"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestModifyingLineUpdatesQuoteDiscountPct"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestModifyQuoteLines"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestPatchingTheTypeBlanksIds"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestPostingBlankLineDefaultsToCommentType"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestPostingCommentLine"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestPostQuoteLines"
- },
- {
- "codeunitId": 139836,
- "codeunitName": "APIV2 - Sales Quote Lines E2E",
- "method": "TestPostQuoteLinesWithItemVariant"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestCreateLineThroughPageAndAPI"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestDeleteCreditMemoLine"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestDeletePostedCreditMemoLine"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestDeletingLineKeepsCreditMemoDiscountAmt"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestDeletingLineMovesCreditMemoDiscountPct"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestDeletingLineRemovesCreditMemoDiscountPct"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestGetCreditMemoLineDirectly"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestGetCreditMemoLines"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestGetCreditMemoLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestGetPostedCreditMemoLines"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestGettingLinesWithDifferentTypes"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestInsertingLineKeepsCreditMemoDiscountAmt"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestInsertingLineUpdatesCreditMemoDiscountPct"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestModifyCreditMemoLines"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestModifyingLineKeepsCreditMemoDiscountAmt"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestModifyingLineUpdatesCreditMemoDiscountPct"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestPatchingTheIdToAccountChangesLineType"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestPatchingTheIdToItemChangesLineType"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestPatchingTheTypeBlanksIds"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestPostCreditMemoLines"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestPostCreditMemoLinesWithItemVariant"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestPostCreditMemoLineWithSequence"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestPostingBlankLineDefaultsToCommentType"
- },
- {
- "codeunitId": 139837,
- "codeunitName": "APIV2 - Sales CrMemo Lines E2E",
- "method": "TestPostingCommentLine"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestCreateLineThroughPageAndAPI"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestDeleteInvoiceLine"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestDeletingLineRemovesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestGetInvoiceLineDirectly"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestGetInvoiceLines"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestGetInvoiceLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestGetPostedInvoiceLines"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestInsertingLineKeepsInvoiceDiscountAmt"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestInsertingLineUpdatesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestModifyingLineUpdatesInvoiceDiscountPct"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestModifyInvoiceLines"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestPatchingTheTypeBlanksIds"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestPostingBlankLineDefaultsToCommentType"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestPostingCommentLine"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestPostInvoiceLines"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestPostInvoiceLinesWithItemVariant"
- },
- {
- "codeunitId": 139838,
- "codeunitName": "APIV2 - Purchase Inv Lines E2E",
- "method": "TestPostInvoiceLineWithSequence"
- },
- {
- "codeunitId": 139839,
- "codeunitName": "APIV2 - Item Variants E2E",
- "method": "TestCreateItemVariantWithItemId"
- },
- {
- "codeunitId": 139839,
- "codeunitName": "APIV2 - Item Variants E2E",
- "method": "TestCreateItemVariantWithItemNumber"
- },
- {
- "codeunitId": 139839,
- "codeunitName": "APIV2 - Item Variants E2E",
- "method": "TestCreateItemVariantWithItemNumberAndItemId"
- },
- {
- "codeunitId": 139839,
- "codeunitName": "APIV2 - Item Variants E2E",
- "method": "TestDeleteInUse"
- },
- {
- "codeunitId": 139839,
- "codeunitName": "APIV2 - Item Variants E2E",
- "method": "TestDeleteItemVariant"
- },
- {
- "codeunitId": 139839,
- "codeunitName": "APIV2 - Item Variants E2E",
- "method": "TestGetItemVariant"
- },
- {
- "codeunitId": 139839,
- "codeunitName": "APIV2 - Item Variants E2E",
- "method": "TestModifyItemVariant"
- },
- {
- "codeunitId": 139839,
- "codeunitName": "APIV2 - Item Variants E2E",
- "method": "TestModifyItemVariantItemId"
- },
- {
- "codeunitId": 139839,
- "codeunitName": "APIV2 - Item Variants E2E",
- "method": "TestModifyItemVariantItemNumber"
- },
- {
- "codeunitId": 139840,
- "codeunitName": "APIV2 - Customer Payments E2E",
- "method": "TestAppliesToInvoiceNoAndIdSync"
- },
- {
- "codeunitId": 139840,
- "codeunitName": "APIV2 - Customer Payments E2E",
- "method": "TestCreateCustomerPayment"
- },
- {
- "codeunitId": 139840,
- "codeunitName": "APIV2 - Customer Payments E2E",
- "method": "TestCreateCustomerPaymentWithInvoiceId"
- },
- {
- "codeunitId": 139840,
- "codeunitName": "APIV2 - Customer Payments E2E",
- "method": "TestCreateCustomerPaymentWithoutDocNo"
- },
- {
- "codeunitId": 139840,
- "codeunitName": "APIV2 - Customer Payments E2E",
- "method": "TestCustomerAutofillDoesNotOverwrite"
- },
- {
- "codeunitId": 139840,
- "codeunitName": "APIV2 - Customer Payments E2E",
- "method": "TestCustomerAutofillWhenGivingInvoiceNumber"
- },
- {
- "codeunitId": 139840,
- "codeunitName": "APIV2 - Customer Payments E2E",
- "method": "TestCustomerNoAndIdSync"
- },
- {
- "codeunitId": 139840,
- "codeunitName": "APIV2 - Customer Payments E2E",
- "method": "TestDeleteCustomerPayment"
- },
- {
- "codeunitId": 139840,
- "codeunitName": "APIV2 - Customer Payments E2E",
- "method": "TestGetCustomerPayment"
- },
- {
- "codeunitId": 139840,
- "codeunitName": "APIV2 - Customer Payments E2E",
- "method": "TestModifyCustomerPayment"
- },
- {
- "codeunitId": 139840,
- "codeunitName": "APIV2 - Customer Payments E2E",
- "method": "TestModifyCustomerPaymentWithRandomDocNo"
- },
- {
- "codeunitId": 139841,
- "codeunitName": "APIV2 - PDF Document E2E",
- "method": "TestGetPDFPurchaseCreditMemo"
- },
- {
- "codeunitId": 139841,
- "codeunitName": "APIV2 - PDF Document E2E",
- "method": "TestGetPDFPurchaseInvoice"
- },
- {
- "codeunitId": 139841,
- "codeunitName": "APIV2 - PDF Document E2E",
- "method": "TestGetPDFSalesCreditMemo"
- },
- {
- "codeunitId": 139841,
- "codeunitName": "APIV2 - PDF Document E2E",
- "method": "TestGetPDFSalesInvoice"
- },
- {
- "codeunitId": 139841,
- "codeunitName": "APIV2 - PDF Document E2E",
- "method": "TestGetPDFSalesOrder"
- },
- {
- "codeunitId": 139841,
- "codeunitName": "APIV2 - PDF Document E2E",
- "method": "TestGetPDFSalesQuote"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureMetadataContact"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureMetadataContactWithoutPicture"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureMetadataCustomer"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureMetadataCustomerWithoutPicture"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureMetadataEmployee"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureMetadataEmployeeWithoutPicture"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureMetadataItem"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureMetadataVendor"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureMetadataVendorWithoutPicture"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureMetadatItemWithoutPicture"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureValueContact"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureValueContactWithoutPicture"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureValueCustomer"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureValueCustomerWithoutPicture"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureValueEmployee"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureValueEmployeeWithoutPicture"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureValueItem"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureValueItemWithoutPicture"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureValueVendor"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestGetPictureValueVendorWithoutPicture"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureDeleteContact"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureDeleteCustomer"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureDeleteEmployee"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureDeleteItem"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureDeleteVendor"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureReplaceContact"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureReplaceCustomer"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureReplaceEmployee"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureReplaceItem"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureReplaceVendor"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureUploadContact"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureUploadCustomer"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureUploadEmployee"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureUploadItem"
- },
- {
- "codeunitId": 139842,
- "codeunitName": "APIV2 - Pictures E2E",
- "method": "TestPictureUploadVendor"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestAppliesToInvoiceNoAndIdSync"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestAppliesToInvoiceNumberEmptyForNonInvoiceApplication"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestCreateVendorPayment"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestCreateVendorPaymentWithInvoiceId"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestCreateVendorPaymentWithoutDocNo"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestDeleteVendorPayment"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestGetVendorPayment"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestGetVendorPaymentWithoutInvoiceApplicationIsVisible"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestModifyVendorPayment"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestModifyVendorPaymentWithRandomDocNo"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestVendorAutofillDoesNotOverwrite"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestVendorAutofillWhenGivingInvoiceNumber"
- },
- {
- "codeunitId": 139843,
- "codeunitName": "APIV2 - Vendor Payments E2E",
- "method": "TestVendorNoAndIdSync"
- },
- {
- "codeunitId": 139847,
- "codeunitName": "APIV2 - Sales Shipments E2E",
- "method": "TestExpandDimensions"
- },
- {
- "codeunitId": 139847,
- "codeunitName": "APIV2 - Sales Shipments E2E",
- "method": "TestGetSalesShipments"
- },
- {
- "codeunitId": 139848,
- "codeunitName": "APIV2 - Sales Ship. Lines E2E",
- "method": "TestExpandDimensions"
- },
- {
- "codeunitId": 139848,
- "codeunitName": "APIV2 - Sales Ship. Lines E2E",
- "method": "TestGetLineDirectly"
- },
- {
- "codeunitId": 139848,
- "codeunitName": "APIV2 - Sales Ship. Lines E2E",
- "method": "TestGetShipmentLines"
- },
- {
- "codeunitId": 139848,
- "codeunitName": "APIV2 - Sales Ship. Lines E2E",
- "method": "TestGetShipmentLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139849,
- "codeunitName": "APIV2 - Purchase Receipts E2E",
- "method": "TestExpandDimensions"
- },
- {
- "codeunitId": 139849,
- "codeunitName": "APIV2 - Purchase Receipts E2E",
- "method": "TestGetPurchaseReceipts"
- },
- {
- "codeunitId": 139850,
- "codeunitName": "APIV2 - Purch. Rcpt. Lines E2E",
- "method": "TestExpandDimensions"
- },
- {
- "codeunitId": 139850,
- "codeunitName": "APIV2 - Purch. Rcpt. Lines E2E",
- "method": "TestGetLineDirectly"
- },
- {
- "codeunitId": 139850,
- "codeunitName": "APIV2 - Purch. Rcpt. Lines E2E",
- "method": "TestGetReceiptLines"
- },
- {
- "codeunitId": 139850,
- "codeunitName": "APIV2 - Purch. Rcpt. Lines E2E",
- "method": "TestGetReceiptLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestActionRecieveAndInvoice"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestClearingManualDiscounts"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestCreateOrderThroughPageAndAPI"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestDeleteOrders"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestEmptyModifyOrders"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestGetOrders"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestGetOrdersAppliesDiscountPct"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestGetOrdersRedistributesDiscountAmt"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestModifyOrders"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestModifyOrderSetManualDiscount"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestPartialModifyOrders"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestPostOrderForCustomerWithLocationCode"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestPostOrders"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestPostOrdersWithEmptyShippingAddress"
- },
- {
- "codeunitId": 139851,
- "codeunitName": "APIV2 - Purchase Orders E2E",
- "method": "TestPostOrderWithCurrency"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestCreateLineThroughPageAndAPI"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestDeleteOrderLine"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestDeletingLineKeepsOrderDiscountAmt"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestDeletingLineMovesOrderDiscountPct"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestDeletingLineRemovesOrderDiscountPct"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestGetOrderLineDirectly"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestGetOrderLines"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestGetOrderLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestGettingLinesWithDifferentTypes"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestInsertingLineKeepsOrderDiscountAmt"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestInsertingLineUpdatesOrderDiscountPct"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestModifyingLineKeepsOrderDiscountAmt"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestModifyingLineUpdatesOrderDiscountPct"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestModifyOrderLines"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestPatchingTheIdToAccountChangesLineType"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestPatchingTheIdToItemChangesLineType"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestPatchingTheTypeBlanksIds"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestPostingBlankLineDefaultsToCommentType"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestPostingCommentLine"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestPostOrderLines"
- },
- {
- "codeunitId": 139852,
- "codeunitName": "APIV2 - Purch. Order Lines E2E",
- "method": "TestPostOrderLineWithItemVariant"
- },
- {
- "codeunitId": 139853,
- "codeunitName": "APIV2 - Contacts Inf. E2E",
- "method": "TestGetCustomerContactInformation"
- },
- {
- "codeunitId": 139853,
- "codeunitName": "APIV2 - Contacts Inf. E2E",
- "method": "TestGetCustomerContactsInformation"
- },
- {
- "codeunitId": 139853,
- "codeunitName": "APIV2 - Contacts Inf. E2E",
- "method": "TestGetVendorContactInformation"
- },
- {
- "codeunitId": 139853,
- "codeunitName": "APIV2 - Contacts Inf. E2E",
- "method": "TestGetVendorContactsInformation"
- },
- {
- "codeunitId": 139854,
- "codeunitName": "APIV2 - Item Ledg. Entries E2E",
- "method": "TestGetItemLedgerEntries"
- },
- {
- "codeunitId": 139855,
- "codeunitName": "APIV2 - Opportunities E2E",
- "method": "TestCannotPatchContactNoOfWonOpportunity"
- },
- {
- "codeunitId": 139855,
- "codeunitName": "APIV2 - Opportunities E2E",
- "method": "TestCannotPatchSPCodeOfWonOpportunity"
- },
- {
- "codeunitId": 139855,
- "codeunitName": "APIV2 - Opportunities E2E",
- "method": "TestCreateOpportunity"
- },
- {
- "codeunitId": 139855,
- "codeunitName": "APIV2 - Opportunities E2E",
- "method": "TestCreateOpportunityContactNo"
- },
- {
- "codeunitId": 139855,
- "codeunitName": "APIV2 - Opportunities E2E",
- "method": "TestGetOpportunities"
- },
- {
- "codeunitId": 139855,
- "codeunitName": "APIV2 - Opportunities E2E",
- "method": "TestPatchOpportunity"
- },
- {
- "codeunitId": 139856,
- "codeunitName": "APIV2 - GenProdPostGroup E2E",
- "method": "TestGetGenProdPostGroups"
- },
- {
- "codeunitId": 139857,
- "codeunitName": "APIV2 - InventoryPostGroup E2E",
- "method": "TestGetInventoryPostGroups"
- },
- {
- "codeunitId": 139858,
- "codeunitName": "APIV2 Currency Exch. Rate E2E",
- "method": "TestGetCurrencyExchangeRates"
- },
- {
- "codeunitId": 139858,
- "codeunitName": "APIV2 Currency Exch. Rate E2E",
- "method": "TestSingleGetCurrencyExchangeRate"
- },
- {
- "codeunitId": 139859,
- "codeunitName": "APIV2 - Accounting Periods E2E",
- "method": "TestGetAccountingPeriods"
- },
- {
- "codeunitId": 139860,
- "codeunitName": "APIV2 - G/L Setup E2E",
- "method": "TestGetGLSetup"
- },
- {
- "codeunitId": 139861,
- "codeunitName": "APIV2JobQueueLogEntriesE2E",
- "method": "TestGetJobQueueLogEntry"
- },
- {
- "codeunitId": 139862,
- "codeunitName": "APIV2JobQueueEntriesE2E",
- "method": "TestGetCorrespondingJobQueueLogEntryFromExpand"
- },
- {
- "codeunitId": 139862,
- "codeunitName": "APIV2JobQueueEntriesE2E",
- "method": "TestGetCorrespondingJobQueueLogEntryFromSubPage"
- },
- {
- "codeunitId": 139862,
- "codeunitName": "APIV2JobQueueEntriesE2E",
- "method": "TestGetJobQueueEntry"
- },
- {
- "codeunitId": 139862,
- "codeunitName": "APIV2JobQueueEntriesE2E",
- "method": "TestRescheduleJobQueueEntry"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestActionCancelCorrectiveCreditMemo"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestActionPostCreditMemo"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestClearingManualDiscounts"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestCreateCreditMemoThroughPageAndAPI"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestDeleteCreditMemo"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestEmptyModifyCreditMemos"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestGetCreditMemos"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestModifyCreditMemos"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestModifyCreditMemoSetManualDiscount"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestPartialModifyCreditMemos"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestPostCreditMemos"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestPostCreditMemoWithCurrency"
- },
- {
- "codeunitId": 139865,
- "codeunitName": "APIV2 - Purch. Cr. Memos E2E",
- "method": "TestPostCreditMemoWithVendorCreditMemoNo"
- },
- {
- "codeunitId": 139866,
- "codeunitName": "APIV2 - Contacts E2E",
- "method": "TestDeleteContact"
- },
- {
- "codeunitId": 139866,
- "codeunitName": "APIV2 - Contacts E2E",
- "method": "TestGetContactWithAddressAndSpecialCharacters"
- },
- {
- "codeunitId": 139866,
- "codeunitName": "APIV2 - Contacts E2E",
- "method": "TestGetSimpleContact"
- },
- {
- "codeunitId": 139866,
- "codeunitName": "APIV2 - Contacts E2E",
- "method": "TestModifyContactWithAddress"
- },
- {
- "codeunitId": 139867,
- "codeunitName": "APIV2 - Apply Vendor Ent. E2E",
- "method": "TestApplyVendorEntryAppliesPayment"
- },
- {
- "codeunitId": 139867,
- "codeunitName": "APIV2 - Apply Vendor Ent. E2E",
- "method": "TestGetApplyVendorEntriesFailsWhenNoVendor"
- },
- {
- "codeunitId": 139867,
- "codeunitName": "APIV2 - Apply Vendor Ent. E2E",
- "method": "TestGetApplyVendorEntriesReturnsOpenEntries"
- },
- {
- "codeunitId": 139868,
- "codeunitName": "APIV2 - Locations E2E",
- "method": "TestCreateLocation"
- },
- {
- "codeunitId": 139868,
- "codeunitName": "APIV2 - Locations E2E",
- "method": "TestCreateSalesOrderLineWithLocation"
- },
- {
- "codeunitId": 139868,
- "codeunitName": "APIV2 - Locations E2E",
- "method": "TestDeleteLocation"
- },
- {
- "codeunitId": 139868,
- "codeunitName": "APIV2 - Locations E2E",
- "method": "TestGetLocation"
- },
- {
- "codeunitId": 139868,
- "codeunitName": "APIV2 - Locations E2E",
- "method": "TestModifyLocationWithAddress"
- },
- {
- "codeunitId": 139869,
- "codeunitName": "APIV2 - Cust. Ret. Reasons E2E",
- "method": "TestCreateReasonCode"
- },
- {
- "codeunitId": 139869,
- "codeunitName": "APIV2 - Cust. Ret. Reasons E2E",
- "method": "TestDeleteReasonCode"
- },
- {
- "codeunitId": 139869,
- "codeunitName": "APIV2 - Cust. Ret. Reasons E2E",
- "method": "TestGetReasonCode"
- },
- {
- "codeunitId": 139869,
- "codeunitName": "APIV2 - Cust. Ret. Reasons E2E",
- "method": "TestModifyReasonCode"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestCreateLineThroughPageAndAPI"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestDeleteCreditMemoLine"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestDeletePostedCreditMemoLine"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestGetCreditMemoLineDirectly"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestGetCreditMemoLines"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestGetCreditMemoLinesDirectlyWithDocumentIdFilter"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestGetPostedCreditMemoLines"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestGettingLinesWithDifferentTypes"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestModifyCreditMemoLines"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestPatchingTheIdToAccountChangesLineType"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestPatchingTheIdToItemChangesLineType"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestPatchingTheTypeBlanksIds"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestPostCreditMemoLines"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestPostCreditMemoLinesWithItemVariant"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestPostCreditMemoLineWithSequence"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestPostingBlankLineDefaultsToCommentType"
- },
- {
- "codeunitId": 139874,
- "codeunitName": "APIV2 - Purch. Cr.M. Lines E2E",
- "method": "TestPostingCommentLine"
- },
- {
- "codeunitId": 139882,
- "codeunitName": "APIV2 - Salesperson/Purch E2E",
- "method": "CreateSalespersonPurchaser"
- },
- {
- "codeunitId": 139882,
- "codeunitName": "APIV2 - Salesperson/Purch E2E",
- "method": "DeleteSalespersonPurchaser"
- },
- {
- "codeunitId": 139882,
- "codeunitName": "APIV2 - Salesperson/Purch E2E",
- "method": "GetSalespersonPurchaser"
- },
- {
- "codeunitId": 139882,
- "codeunitName": "APIV2 - Salesperson/Purch E2E",
- "method": "ModifySalespersonPurchaserJobTitle"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestCreateCustomerAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestCreateDraftInvoiceAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestCreateDraftOrderAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestCreateDraftPurchaseCreditMemoAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestCreateDraftPurchaseInvoiceAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestCreateDraftPurchaseOrderAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestCreatePostedInvoiceAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestCreatePostedPurchaseCreditMemoAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestCreatePostedPurchaseInvoiceAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestCreateQuoteAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestCreateVendorAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestDeleteDraftInvoiceAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestDeleteDraftPurchaseCreditMemoAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestDeleteDraftPurchaseInvoiceAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestDeleteEmployeeAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestDeleteJobAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestDeletePostedInvoiceAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestDeletePostedPurchaseCreditMemoAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestDeletePostedPurchaseInvoiceAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestDeleteQuoteAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestDeleteVendorAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetCustomerAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetDraftInvoiceAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetDraftInvoiceAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetDraftOrderAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetDraftPurchaseCreditMemoAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetDraftPurchaseInvoiceAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetDraftPurchaseOrderAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetEmployeeAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetItemAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetJobAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetPostedInvoiceAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetPostedInvoiceAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetPostedPurchaseCreditMemoAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetPostedPurchaseInvoiceAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetQuoteAttachment"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetQuoteAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestGetVendorAttachments"
- },
- {
- "codeunitId": 139899,
- "codeunitName": "APIV2 - Document Attach. E2E",
- "method": "TestUpdateCustomerAttachmentBinaryContent"
- },
- {
- "codeunitId": 139906,
- "codeunitName": "APIV2 - FA Locations E2E",
- "method": "TestCreateFALocation"
- },
- {
- "codeunitId": 139906,
- "codeunitName": "APIV2 - FA Locations E2E",
- "method": "TestDeleteFALocation"
- },
- {
- "codeunitId": 139906,
- "codeunitName": "APIV2 - FA Locations E2E",
- "method": "TestGetFALocation"
- },
- {
- "codeunitId": 139906,
- "codeunitName": "APIV2 - FA Locations E2E",
- "method": "TestModifyFALocation"
- },
- {
- "codeunitId": 139907,
- "codeunitName": "APIV2 - Fixed Assets E2E",
- "method": "TestCreateFixedAsset"
- },
- {
- "codeunitId": 139907,
- "codeunitName": "APIV2 - Fixed Assets E2E",
- "method": "TestDeleteFixedAsset"
- },
- {
- "codeunitId": 139907,
- "codeunitName": "APIV2 - Fixed Assets E2E",
- "method": "TestGetFixedAsset"
- },
- {
- "codeunitId": 139907,
- "codeunitName": "APIV2 - Fixed Assets E2E",
- "method": "TestModifyFixedAsset"
- },
- {
- "codeunitId": 139908,
- "method": "TestGetBlanketPurchaseOrders",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestGetBlanketPurchaseOrderById",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestGetBlanketSalesOrders",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestGetBlanketSalesOrderById",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139917,
- "method": "TestGetApprovalEntries",
- "codeunitName": "APIV2 - Approval Entries E2E"
- },
- {
- "codeunitId": 139918,
- "method": "TestGetApprovalUserSetup",
- "codeunitName": "APIV2 - Approval UserSetup E2E"
- },
- {
- "codeunitId": 139919,
- "method": "TestGetPostedApprovalEntries",
- "codeunitName": "APIV2 PstdApprovalEntries E2E"
- },
- {
- "codeunitId": 139920,
- "method": "TestGetApprovalEntries",
- "codeunitName": "APIV2 - Workflow Approvers E2E"
- },
- {
- "codeunitId": 139921,
- "method": "TestGetApprovalEntries",
- "codeunitName": "APIV2 - Workflows E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestGetPurchaseQuotes",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestGetPurchaseQuoteById",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestGetPurchaseReturnOrders",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestGetPurchaseReturnOrderById",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestGetSalesReturnOrders",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestGetSalesReturnOrderById",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
{
"codeunitId": 139925,
- "method": "TestGetAssemblyOrders",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestGetAssemblyOrderById",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestGetTransferOrders",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestGetTransferOrderById",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139927,
- "method": "TestGetSalesOrderArchives",
- "codeunitName": "APIV2 - Sales Ord. Arch. E2E"
- },
- {
- "codeunitId": 139927,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Sales Ord. Arch. E2E"
- },
- {
- "codeunitId": 139927,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Sales Ord. Arch. E2E"
- },
- {
- "codeunitId": 139927,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Sales Ord. Arch. E2E"
- },
- {
- "codeunitId": 139928,
- "method": "TestGetPurchaseReturnShipments",
- "codeunitName": "APIV2 - Purch. Ret. Shpts. E2E"
- },
- {
- "codeunitId": 139928,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Purch. Ret. Shpts. E2E"
- },
- {
- "codeunitId": 139928,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Purch. Ret. Shpts. E2E"
- },
- {
- "codeunitId": 139928,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Purch. Ret. Shpts. E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestGetBlanketPurchaseOrders",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestGetBlanketPurchaseOrderById",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139908,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
+ "codeunitName": "APIV2 - Assembly Orders E2E",
+ "method": "*"
},
{
"codeunitId": 139908,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Bl. Purch. Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestGetBlanketSalesOrders",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestGetBlanketSalesOrderById",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
+ "codeunitName": "APIV2 - Bl. Purch. Orders E2E",
+ "method": "*"
},
{
"codeunitId": 139909,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139909,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Bl. Sales Orders E2E"
- },
- {
- "codeunitId": 139917,
- "method": "TestGetApprovalEntries",
- "codeunitName": "APIV2 - Approval Entries E2E"
- },
- {
- "codeunitId": 139918,
- "method": "TestGetApprovalUserSetup",
- "codeunitName": "APIV2 - Approval UserSetup E2E"
- },
- {
- "codeunitId": 139919,
- "method": "TestGetPostedApprovalEntries",
- "codeunitName": "APIV2 PstdApprovalEntries E2E"
- },
- {
- "codeunitId": 139920,
- "method": "TestGetApprovalEntries",
- "codeunitName": "APIV2 - Workflow Approvers E2E"
- },
- {
- "codeunitId": 139921,
- "method": "TestGetApprovalEntries",
- "codeunitName": "APIV2 - Workflows E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestGetPurchaseQuotes",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
+ "codeunitName": "APIV2 - Bl. Sales Orders E2E",
+ "method": "*"
},
{
"codeunitId": 139922,
- "method": "TestGetPurchaseQuoteById",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139922,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Purch. Quotes E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestGetPurchaseReturnOrders",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestGetPurchaseReturnOrderById",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139923,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
+ "codeunitName": "APIV2 - Purch. Quotes E2E",
+ "method": "*"
},
{
"codeunitId": 139923,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Purch. Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestGetSalesReturnOrders",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestGetSalesReturnOrderById",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
- {
- "codeunitId": 139924,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
+ "codeunitName": "APIV2 - Purch. Ret. Orders E2E",
+ "method": "*"
},
{
- "codeunitId": 139924,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
+ "codeunitId": 139928,
+ "codeunitName": "APIV2 - Purch. Ret. Shpts. E2E",
+ "method": "*"
},
{
- "codeunitId": 139924,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
+ "codeunitId": 139927,
+ "codeunitName": "APIV2 - Sales Ord. Arch. E2E",
+ "method": "*"
},
{
"codeunitId": 139924,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Sales Ret. Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestGetAssemblyOrders",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestGetAssemblyOrderById",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139925,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Assembly Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestGetTransferOrders",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestGetTransferOrderById",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139926,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Transfer Orders E2E"
+ "codeunitName": "APIV2 - Sales Ret. Orders E2E",
+ "method": "*"
},
{
"codeunitId": 139926,
- "method": "TestExpandLines",
- "codeunitName": "APIV2 - Transfer Orders E2E"
- },
- {
- "codeunitId": 139927,
- "method": "TestGetSalesOrderArchives",
- "codeunitName": "APIV2 - Sales Ord. Arch. E2E"
- },
- {
- "codeunitId": 139927,
- "method": "TestExpandDimensionSetLines",
- "codeunitName": "APIV2 - Sales Ord. Arch. E2E"
- },
- {
- "codeunitId": 139927,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Sales Ord. Arch. E2E"
- },
- {
- "codeunitId": 139927,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Sales Ord. Arch. E2E"
- },
- {
- "codeunitId": 139928,
- "method": "TestGetPurchaseReturnShipments",
- "codeunitName": "APIV2 - Purch. Ret. Shpts. E2E"
- },
- {
- "codeunitId": 139928,
- "method": "TestExpandAttachments",
- "codeunitName": "APIV2 - Purch. Ret. Shpts. E2E"
- },
- {
- "codeunitId": 139928,
- "method": "TestExpandDocumentAttachments",
- "codeunitName": "APIV2 - Purch. Ret. Shpts. E2E"
- },
- {
- "codeunitId": 139928,
- "method": "TestExpandPdfDocument",
- "codeunitName": "APIV2 - Purch. Ret. Shpts. E2E"
+ "codeunitName": "APIV2 - Transfer Orders E2E",
+ "method": "*"
}
]
diff --git a/src/Layers/APAC/Tests/Prepayment/ERMPrepaymentII.Codeunit.al b/src/Layers/APAC/Tests/Prepayment/ERMPrepaymentII.Codeunit.al
index be7ad2bb239..514e712534e 100644
--- a/src/Layers/APAC/Tests/Prepayment/ERMPrepaymentII.Codeunit.al
+++ b/src/Layers/APAC/Tests/Prepayment/ERMPrepaymentII.Codeunit.al
@@ -2694,7 +2694,6 @@ codeunit 134101 "ERM Prepayment II"
GenJournalLine.Modify(true);
LibraryERM.PostGeneralJnlLine(GenJournalLine);
end;
-
local procedure SelectGenJournalBatch(var GenJournalBatch: Record "Gen. Journal Batch")
begin
// Select General Journal Batch and clear General Journal Lines to make sure that no line exist before creating
diff --git a/src/Layers/NA/Tests/Prepayment/ERMPrepaymentII.Codeunit.al b/src/Layers/NA/Tests/Prepayment/ERMPrepaymentII.Codeunit.al
index e514b0407b0..6cc9605ec93 100644
--- a/src/Layers/NA/Tests/Prepayment/ERMPrepaymentII.Codeunit.al
+++ b/src/Layers/NA/Tests/Prepayment/ERMPrepaymentII.Codeunit.al
@@ -2632,7 +2632,6 @@ codeunit 134101 "ERM Prepayment II"
GenJournalLine.Modify(true);
LibraryERM.PostGeneralJnlLine(GenJournalLine);
end;
-
local procedure SelectGenJournalBatch(var GenJournalBatch: Record "Gen. Journal Batch")
begin
// Select General Journal Batch and clear General Journal Lines to make sure that no line exist before creating
diff --git a/src/Layers/W1/BaseApp/Purchases/eServices/EDocument/ReturnShptPDFDocHandler.Codeunit.al b/src/Layers/W1/BaseApp/Purchases/eServices/EDocument/ReturnShptPDFDocHandler.Codeunit.al
index 22cc094eec4..d9a2ed5f429 100644
--- a/src/Layers/W1/BaseApp/Purchases/eServices/EDocument/ReturnShptPDFDocHandler.Codeunit.al
+++ b/src/Layers/W1/BaseApp/Purchases/eServices/EDocument/ReturnShptPDFDocHandler.Codeunit.al
@@ -36,7 +36,7 @@ codeunit 4999 "Return Shpt. PDF Doc.Handler" implements IPdfDocumentHandler
exit(false);
ReturnShipment.SetRange("No.", ReturnShipment."No.");
- ReportUsage := "Report Selection Usage"::"P.Return";
+ ReportUsage := "Report Selection Usage"::"P.Ret.Shpt.";
ReportSelections.GetPdfReportForVend(TempBlob, ReportUsage, ReturnShipment, ReturnShipment."Buy-from Vendor No.");
DocumentMailing.GetAttachmentFileName(Name, ReturnShipment."No.", ReturnShipmentLbl, ReportUsage.AsInteger());
exit(PDFDocumentManagement.AddToTempAttachmentEntityBuffer(DocumentId, DocumentType, TempBlob, Name, TempAttachmentEntityBuffer));
diff --git a/src/Layers/W1/Tests/Graph/IRS1099CodeEntityE2ETest.Codeunit.al b/src/Layers/W1/Tests/Graph/IRS1099CodeEntityE2ETest.Codeunit.al
index 80c99fa6f1c..277a2410582 100644
--- a/src/Layers/W1/Tests/Graph/IRS1099CodeEntityE2ETest.Codeunit.al
+++ b/src/Layers/W1/Tests/Graph/IRS1099CodeEntityE2ETest.Codeunit.al
@@ -5,6 +5,7 @@ codeunit 135519 "IRS 1099 Code Entity E2E Test"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
// [FEATURE] [Graph] [IRS 1099 Form-Box]
end;
diff --git a/src/Layers/W1/Tests/Graph/WFWHSubscriptionE2ETests.Codeunit.al b/src/Layers/W1/Tests/Graph/WFWHSubscriptionE2ETests.Codeunit.al
index f5b8e0f9859..2c92a572e94 100644
--- a/src/Layers/W1/Tests/Graph/WFWHSubscriptionE2ETests.Codeunit.al
+++ b/src/Layers/W1/Tests/Graph/WFWHSubscriptionE2ETests.Codeunit.al
@@ -5,6 +5,7 @@ codeunit 135528 "WFWH Subscription E2E Tests"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
// [FEATURE] [Graph] [Workflow] [Webhook] [Subscription]
end;
diff --git a/src/Layers/W1/Tests/Integration/ApiRoutesE2E.Codeunit.al b/src/Layers/W1/Tests/Integration/ApiRoutesE2E.Codeunit.al
index 6744a7e1cb5..9dda4bef438 100644
--- a/src/Layers/W1/Tests/Integration/ApiRoutesE2E.Codeunit.al
+++ b/src/Layers/W1/Tests/Integration/ApiRoutesE2E.Codeunit.al
@@ -5,6 +5,7 @@ codeunit 135548 "API Routes E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
// [FEATURE] [API] [Route]
end;
diff --git a/src/Layers/W1/Tests/Integration/WebhookLogsE2E.Codeunit.al b/src/Layers/W1/Tests/Integration/WebhookLogsE2E.Codeunit.al
index a5aad9c9707..d2dc7f88760 100644
--- a/src/Layers/W1/Tests/Integration/WebhookLogsE2E.Codeunit.al
+++ b/src/Layers/W1/Tests/Integration/WebhookLogsE2E.Codeunit.al
@@ -5,6 +5,7 @@ codeunit 135547 "Webhook Logs E2E"
trigger OnRun()
begin
+ LibraryGraphMgt.EnsureAuthenticationAvailable();
// [FEATURE] [API] [Webhook]
end;
diff --git a/src/Layers/W1/Tests/Prepayment/ERMPrepaymentII.Codeunit.al b/src/Layers/W1/Tests/Prepayment/ERMPrepaymentII.Codeunit.al
index 27e8b022b74..ac9aa24db4e 100644
--- a/src/Layers/W1/Tests/Prepayment/ERMPrepaymentII.Codeunit.al
+++ b/src/Layers/W1/Tests/Prepayment/ERMPrepaymentII.Codeunit.al
@@ -2575,7 +2575,6 @@ codeunit 134101 "ERM Prepayment II"
GenJournalLine.Modify(true);
LibraryERM.PostGeneralJnlLine(GenJournalLine);
end;
-
local procedure SelectGenJournalBatch(var GenJournalBatch: Record "Gen. Journal Batch")
begin
// Select General Journal Batch and clear General Journal Lines to make sure that no line exist before creating
@@ -3145,4 +3144,3 @@ codeunit 134101 "ERM Prepayment II"
PurchaseHeader.TestField(Status, ExpectedStatus);
end;
}
-
diff --git a/src/Layers/W1/Tests/TestLibraries/LibraryGraphAuthMgt.Codeunit.al b/src/Layers/W1/Tests/TestLibraries/LibraryGraphAuthMgt.Codeunit.al
new file mode 100644
index 00000000000..f9a16e0e525
--- /dev/null
+++ b/src/Layers/W1/Tests/TestLibraries/LibraryGraphAuthMgt.Codeunit.al
@@ -0,0 +1,142 @@
+// ------------------------------------------------------------------------------------------------
+// Copyright (c) Microsoft Corporation. All rights reserved.
+// Licensed under the MIT License. See License.txt in the project root for license information.
+// ------------------------------------------------------------------------------------------------
+
+namespace Microsoft.TestLibraries.ERP;
+
+using System;
+using System.Azure.KeyVault;
+using System.Environment;
+using System.Integration;
+using System.Security.AccessControl;
+using System.Utilities;
+
+codeunit 131022 "Library - Graph Auth Mgt."
+{
+ Access = Internal;
+
+ var
+ ApiTestPasswordFileTok: Label 'C:\Run\my\ApiTestPassword', Locked = true;
+ NavServerUserPasswordKeyTok: Label 'NavServerUserPassword', Locked = true;
+ CachedAuthenticationPassword: SecretText;
+ AuthenticationResolved: Boolean;
+ AuthenticationRequired: Boolean;
+ ContainerPasswordReadErr: Label 'The API test password could not be read from %1.', Comment = '%1 - Password file path';
+ KeyVaultPasswordReadErr: Label 'The API test password could not be retrieved from the %1 secret.', Comment = '%1 - Azure Key Vault secret name';
+ PasswordRetrievalFailedErr: Label 'The API test password could not be retrieved.';
+
+ [NonDebuggable]
+ internal procedure AddAuthentication(var HttpWebRequestMgt: Codeunit "Http Web Request Mgt."; TargetURL: Text)
+ var
+ Password: SecretText;
+ begin
+ if not IsCurrentTestServiceURL(TargetURL) then
+ exit;
+ if not GetAuthenticationPassword(Password) then
+ exit;
+
+ AddUserPasswordAuthentication(HttpWebRequestMgt, Password);
+ end;
+
+ [NonDebuggable]
+ internal procedure EnsureAuthenticationAvailable()
+ var
+ Password: SecretText;
+ begin
+ GetAuthenticationPassword(Password);
+ end;
+
+ [NonDebuggable]
+ local procedure GetAuthenticationPassword(var Password: SecretText): Boolean
+ var
+ User: Record User;
+ EnvironmentInfo: Codeunit "Environment Information";
+ begin
+ if AuthenticationResolved then begin
+ if AuthenticationRequired then
+ Password := CachedAuthenticationPassword;
+ exit(AuthenticationRequired);
+ end;
+
+ if EnvironmentInfo.IsSaaSInfrastructure() then
+ exit(CacheAuthenticationResult(Password, false));
+ if ContainerPasswordFileExists() then begin
+ if not TryGetContainerPassword(Password) then
+ Error(ContainerPasswordReadErr, ApiTestPasswordFileTok);
+ exit(CacheAuthenticationResult(Password, true));
+ end;
+
+ if not User.Get(UserSecurityId()) then
+ exit(CacheAuthenticationResult(Password, false));
+ if User."Windows Security ID" <> '' then
+ exit(CacheAuthenticationResult(Password, false));
+
+ if not TryGetNavEnlistmentPassword(Password) then
+ Error(KeyVaultPasswordReadErr, NavServerUserPasswordKeyTok);
+
+ exit(CacheAuthenticationResult(Password, true));
+ end;
+
+ [NonDebuggable]
+ local procedure CacheAuthenticationResult(Password: SecretText; IsRequired: Boolean): Boolean
+ begin
+ AuthenticationRequired := IsRequired;
+ AuthenticationResolved := true;
+ if IsRequired then
+ CachedAuthenticationPassword := Password;
+ exit(IsRequired);
+ end;
+
+ [NonDebuggable]
+ local procedure AddUserPasswordAuthentication(var HttpWebRequestMgt: Codeunit "Http Web Request Mgt."; Password: SecretText)
+ begin
+ HttpWebRequestMgt.AddBasicAuthentication(UserId(), Password);
+ end;
+
+ local procedure IsCurrentTestServiceURL(TargetURL: Text): Boolean
+ var
+ CurrentServiceUri: Codeunit Uri;
+ TargetUri: Codeunit Uri;
+ begin
+ CurrentServiceUri.Init(GetUrl(ClientType::Api));
+ TargetUri.Init(TargetURL);
+ exit(LowerCase(TargetUri.GetAuthority()) = LowerCase(CurrentServiceUri.GetAuthority()));
+ end;
+
+ [Scope('OnPrem')]
+ local procedure ContainerPasswordFileExists(): Boolean
+ var
+ File: DotNet File;
+ begin
+ exit(File.Exists(ApiTestPasswordFileTok));
+ end;
+
+ [NonDebuggable]
+ [TryFunction]
+ local procedure TryGetContainerPassword(var Password: SecretText)
+ var
+ AzureKeyVault: Codeunit "Azure Key Vault";
+ LibraryAzureKVMockMgmt: Codeunit "Library - Azure KV Mock Mgmt.";
+ begin
+ LibraryAzureKVMockMgmt.InitMockAzureKeyvaultSecretProvider();
+ LibraryAzureKVMockMgmt.AddMockAzureKeyvaultSecretProviderMappingFromFile(NavServerUserPasswordKeyTok, ApiTestPasswordFileTok);
+ LibraryAzureKVMockMgmt.UseAzureKeyvaultSecretProvider();
+ if not AzureKeyVault.GetAzureKeyVaultSecret(NavServerUserPasswordKeyTok, Password) then
+ Error(PasswordRetrievalFailedErr);
+ if Password.IsEmpty() then
+ Error(PasswordRetrievalFailedErr);
+ end;
+
+ [NonDebuggable]
+ [TryFunction]
+ local procedure TryGetNavEnlistmentPassword(var Password: SecretText)
+ var
+ AzureKeyVault: Codeunit "Azure Key Vault";
+ begin
+ if not AzureKeyVault.GetAzureKeyVaultSecret(NavServerUserPasswordKeyTok, Password) then
+ Error(PasswordRetrievalFailedErr);
+ if Password.IsEmpty() then
+ Error(PasswordRetrievalFailedErr);
+ end;
+}
diff --git a/src/Layers/W1/Tests/TestLibraries/LibraryGraphDocumentTools.Codeunit.al b/src/Layers/W1/Tests/TestLibraries/LibraryGraphDocumentTools.Codeunit.al
index cc281f04818..7c52e935343 100644
--- a/src/Layers/W1/Tests/TestLibraries/LibraryGraphDocumentTools.Codeunit.al
+++ b/src/Layers/W1/Tests/TestLibraries/LibraryGraphDocumentTools.Codeunit.al
@@ -582,17 +582,16 @@ codeunit 130619 "Library - Graph Document Tools"
VATBusinessPostingGroup: Record "VAT Business Posting Group";
FixedAsset: Record "Fixed Asset";
GLAccount: Record "G/L Account";
- VATPostingSetup: Record "VAT Posting Setup";
begin
LibraryInventory.CreateItemCharge(ItemCharge);
+ EnsureVATPostingSetupExists(
+ SalesHeader."VAT Bus. Posting Group", ItemCharge."VAT Prod. Posting Group");
LibrarySales.CreateSalesLine(SalesLineCharge, SalesHeader, SalesLineCharge.Type::"Charge (Item)", ItemCharge."No.", 1);
LibraryERM.FindVATBusinessPostingGroup(VATBusinessPostingGroup);
LibraryResource.CreateResource(Resource, VATBusinessPostingGroup.Code);
- VATPostingSetup.SetRange("VAT Bus. Posting Group", SalesHeader."VAT Bus. Posting Group");
- VATPostingSetup.SetRange("VAT Prod. Posting Group", Resource."VAT Prod. Posting Group");
- if not VATPostingSetup.FINDFIRST() then
- LibraryERM.CreateVATPostingSetup(VATPostingSetup, SalesHeader."VAT Bus. Posting Group", Resource."VAT Prod. Posting Group");
+ EnsureVATPostingSetupExists(
+ SalesHeader."VAT Bus. Posting Group", Resource."VAT Prod. Posting Group");
LibrarySales.CreateSalesLine(SalesLineResource, SalesHeader, SalesLineResource.Type::Resource, Resource."No.", 1);
LibraryFixedAsset.CreateFixedAsset(FixedAsset);
@@ -619,6 +618,8 @@ codeunit 130619 "Library - Graph Document Tools"
GLAccount: Record "G/L Account";
begin
LibraryInventory.CreateItemCharge(ItemCharge);
+ EnsureVATPostingSetupExists(
+ PurchaseHeader."VAT Bus. Posting Group", ItemCharge."VAT Prod. Posting Group");
LibraryPurchase.CreatePurchaseLine(
PurchaseLineCharge, PurchaseHeader, PurchaseLineCharge.Type::"Charge (Item)", ItemCharge."No.", 1);
@@ -636,10 +637,27 @@ codeunit 130619 "Library - Graph Document Tools"
GLAccount.SetRange("Direct Posting", true);
#pragma warning restore AA0210
GLAccount.FindFirst();
+ EnsureVATPostingSetupExists(
+ PurchaseHeader."VAT Bus. Posting Group", GLAccount."VAT Prod. Posting Group");
LibraryPurchase.CreatePurchaseLine(
PurchaseLineGLAccount, PurchaseHeader, PurchaseLineGLAccount.Type::"G/L Account", GLAccount."No.", 1);
end;
+ /// Creates VAT posting setup when the specified posting-group combination does not exist.
+ /// VAT business posting group.
+ /// VAT product posting group.
+ procedure EnsureVATPostingSetupExists(VATBusPostingGroup: Code[20]; VATProdPostingGroup: Code[20])
+ var
+ VATPostingSetup: Record "VAT Posting Setup";
+ begin
+ if (VATBusPostingGroup = '') and (VATProdPostingGroup = '') then
+ exit;
+ if VATPostingSetup.Get(VATBusPostingGroup, VATProdPostingGroup) then
+ exit;
+
+ LibraryERM.CreateVATPostingSetup(VATPostingSetup, VATBusPostingGroup, VATProdPostingGroup);
+ end;
+
[Scope('OnPrem')]
procedure VerifySalesObjectTxtDescription(SalesLine: Record "Sales Line"; JObjectTxt: Text)
var
@@ -895,4 +913,3 @@ codeunit 130619 "Library - Graph Document Tools"
Assert.AreEqual(ExpectedDiscountAmount, ActualInvoiceDiscountAmount, 'Invoice discount amount was not set');
end;
}
-
diff --git a/src/Layers/W1/Tests/TestLibraries/LibraryGraphJournalLines.Codeunit.al b/src/Layers/W1/Tests/TestLibraries/LibraryGraphJournalLines.Codeunit.al
index ea303197684..32ecc3d62b2 100644
--- a/src/Layers/W1/Tests/TestLibraries/LibraryGraphJournalLines.Codeunit.al
+++ b/src/Layers/W1/Tests/TestLibraries/LibraryGraphJournalLines.Codeunit.al
@@ -235,6 +235,11 @@ codeunit 130622 "Library - Graph Journal Lines"
begin
JournalName := LibraryUtility.GenerateRandomCode(GenJournalBatch.FieldNo(Name), DATABASE::"Gen. Journal Batch");
LibraryAPIGeneralJournal.EnsureGenJnlBatchExists(GraphMgtJournal.GetDefaultVendorPaymentsTemplateName(), JournalName);
+ GenJournalBatch.Get(GraphMgtJournal.GetDefaultVendorPaymentsTemplateName(), JournalName);
+ if GenJournalBatch."No. Series" = '' then begin
+ GenJournalBatch.Validate("No. Series", LibraryERM.CreateNoSeriesCode());
+ GenJournalBatch.Modify(true);
+ end;
exit(JournalName);
end;
@@ -321,4 +326,3 @@ codeunit 130622 "Library - Graph Journal Lines"
Assert.AreEqual(NewDate, GenJournalLine."Posting Date", 'Journal Line ' + PostingDateNameTxt + ' should be changed');
end;
}
-
diff --git a/src/Layers/W1/Tests/TestLibraries/LibraryGraphMgt.Codeunit.al b/src/Layers/W1/Tests/TestLibraries/LibraryGraphMgt.Codeunit.al
index b82c12f9943..9b06fc41945 100644
--- a/src/Layers/W1/Tests/TestLibraries/LibraryGraphMgt.Codeunit.al
+++ b/src/Layers/W1/Tests/TestLibraries/LibraryGraphMgt.Codeunit.al
@@ -7,12 +7,40 @@ codeunit 130618 "Library - Graph Mgt"
var
Assert: Codeunit Assert;
+ LibraryGraphAuthMgt: Codeunit Microsoft.TestLibraries.ERP."Library - Graph Auth Mgt.";
IncorrectValueErr: Label 'Incorrect value found in JSON for %1 property.', Comment = '%1 - Name of property';
GraphCollectionMgtItem: Codeunit "Graph Collection Mgt - Item";
UnexpectedResponseCodeErr: Label 'Response code %1 (%2) differs from the expected %3.', Comment = '%1 - Actual response code number, %2 - Actual response code, %3 - Expected response code number';
FailedRequestErr: Label '%1 request failed. Response code is %2 (%3). %4', Comment = '%1 - request method, %2 - response code number, %3 - response code, %4 - error message';
FailedRequestWithUnexpectedResponseCodeErr: Label '%1 request failed. Response code is %2 (%3), expected code is %4. %5', Comment = '%1 - request method, %2 - response code number, %3 - response code, %4 - expected response code, %5 - error message';
+ /// Verifies that authentication is available for local API test requests.
+ procedure EnsureAuthenticationAvailable()
+ begin
+ LibraryGraphAuthMgt.EnsureAuthenticationAvailable();
+ end;
+
+ /// Sets the work date to November 15 in the current year to stay within test-license date limits.
+ procedure SetLicenseSafeWorkDate()
+ begin
+ WorkDate := DMY2Date(15, 11, Date2DMY(Today, 3));
+ end;
+
+ /// Adds a field to the ignored-field buffer when the field exists in the source table.
+ /// Temporary ignored-field buffer.
+ /// Source table number.
+ /// Source field name.
+ procedure AddFieldToIgnoreIfExists(var TempIgnoredFields: Record 2000000041 temporary; SourceTableNo: Integer; SourceFieldName: Text)
+ var
+ RecordField: Record Field;
+ LibraryUtility: Codeunit "Library - Utility";
+ begin
+ RecordField.SetRange(TableNo, SourceTableNo);
+ RecordField.SetRange(FieldName, SourceFieldName);
+ if RecordField.FindFirst() then
+ LibraryUtility.AddTempField(TempIgnoredFields, RecordField."No.", SourceTableNo);
+ end;
+
procedure EnsureWebServiceExist(ServiceNameTxt: Text[240]; PageNumber: Integer)
var
WebService: Record "Web Service";
@@ -136,6 +164,7 @@ codeunit 130618 "Library - Graph Mgt"
begin
HttpWebRequestMgt.Initialize(TargetURL);
OnAfterInitializeWebRequestWithURL(HttpWebRequestMgt);
+ LibraryGraphAuthMgt.AddAuthentication(HttpWebRequestMgt, TargetURL);
end;
procedure PatchToWebServiceAndCheckResponseCode(TargetURL: Text; JSONBody: Text; var ResponseText: Text; ExpectedResponseCode: Integer)
@@ -285,6 +314,33 @@ codeunit 130618 "Library - Graph Mgt"
exit(TargetURL);
end;
+ /// Appends a path before any query string in an API target URL.
+ /// API target URL.
+ /// Path to append.
+ /// The URL with the appended path.
+ procedure AppendPathToTargetURL(TargetURL: Text; Path: Text): Text
+ var
+ QueryPosition: Integer;
+ begin
+ QueryPosition := StrPos(TargetURL, '?');
+ if QueryPosition = 0 then
+ exit(TargetURL + Path);
+
+ exit(CopyStr(TargetURL, 1, QueryPosition - 1) + Path + CopyStr(TargetURL, QueryPosition));
+ end;
+
+ /// Appends a query parameter using the appropriate query separator.
+ /// API target URL.
+ /// Query parameter to append.
+ /// The URL with the appended query parameter.
+ procedure AppendQueryParameterToTargetURL(TargetURL: Text; QueryParameter: Text): Text
+ begin
+ if StrPos(TargetURL, '?') = 0 then
+ exit(TargetURL + '?' + QueryParameter);
+
+ exit(TargetURL + '&' + QueryParameter);
+ end;
+
[Normal]
procedure STRREPLACE(String: Text; ReplaceWhat: Text; ReplaceWith: Text): Text
var
@@ -818,9 +874,14 @@ codeunit 130618 "Library - Graph Mgt"
var
TargetURL: Text;
begin
- TargetURL := GetODataTargetURL(ObjectType::Page, PageNumber);
- TargetURL := AppendSubpageToTargetURL(ID, TargetURL, ServiceNameTxt, ServiceSubPageTxt);
- exit(AppendSubpageToTargetURL(SubPageID, TargetURL, ServiceSubPageTxt, ServiceSubSubPageTxt));
+ TargetURL := CreateTargetURL(ID, PageNumber, ServiceNameTxt);
+ TargetURL := AppendPathToTargetURL(TargetURL, '/' + ServiceSubPageTxt);
+ if SubPageID <> '' then
+ TargetURL := AppendPathToTargetURL(
+ TargetURL, '(' + StripBrackets(SubPageID) + ')');
+ if ServiceSubSubPageTxt <> '' then
+ TargetURL := AppendPathToTargetURL(TargetURL, '/' + ServiceSubSubPageTxt);
+ exit(TargetURL);
end;
[IntegrationEvent(false, false)]
@@ -833,4 +894,3 @@ codeunit 130618 "Library - Graph Mgt"
begin
end;
}
-