Azure / azure-devops-cli-extension

Azure DevOps Extension for Azure CLI
https://docs.microsoft.com/en-us/cli/azure/ext/azure-devops/?view=azure-cli-latest
MIT License
617 stars 239 forks source link

Moving iterations to a new parent erases their start/finish dates #1307

Open jennings opened 1 year ago

jennings commented 1 year ago

Describe the bug

Moving an iteration to be a child of another removes the dates from the moved iteration.

Command Name az boards iteration project update Extension Name: azure-devops. Version: 0.25.0.

To Reproduce:

Steps to reproduce the behavior. Note that argument values have been redacted, as they may contain sensitive information.

# Create the "parent" iteration
> az boards iteration project create --name TestFolder --org $ORG --project $PROJECT
{
  "attributes": null,
  "children": null,
  "hasChildren": false,
  "id": 242,
  "identifier": "...",
  "name": "TestFolder",
  "path": "\\$PROJECT\\Iteration\\TestFolder",
  "structureType": "iteration",
  "url": "$ORG/.../_apis/wit/classificationNodes/Iterations/TestFolder"
}

# Create the "child" iteration with start/finish dates, but not as a child yet
> az boards iteration project create --name TestIteration --org $ORG --project $PROJECT --start-date "2022-01-01" --finish-date "2022-01-07"
{
  "attributes": {
    "finishDate": "2022-01-07T00:00:00Z",
    "startDate": "2022-01-01T00:00:00Z"
  },
  "children": null,
  "hasChildren": false,
  "id": 243,
  "identifier": "...",
  "name": "TestIteration",
  "path": "\\$PROJECT\\Iteration\\TestIteration",
  "structureType": "iteration",
  "url": "$ORG/.../_apis/wit/classificationNodes/Iterations/TestIteration"
}

# Move the second iteration to be a child of the first
> az boards iteration project update --path \$PROJECT\Iteration\TestFolder --org $ORG --project $PROJECT --child-id 243
{
  "attributes": null,
  "children": null,
  "hasChildren": true,
  "id": 242,
  "identifier": "...",
  "name": "TestFolder",
  "path": "\\$PROJECT\\Iteration\\TestFolder",
  "structureType": "iteration",
  "url": "$ORG/.../_apis/wit/classificationNodes/Iterations/TestFolder"
}

# The start/finish dates are no longer populated
> az boards iteration project show --id 243 --org $ORG --project $PROJECT
[
  {
    "attributes": null,
    "children": null,
    "hasChildren": false,
    "id": 243,
    "identifier": "...",
    "name": "TestIteration",
    "path": "\\$PROJECT\\Iteration\\TestFolder\\TestIteration",
    "structureType": "iteration",
    "url": "$ORG/.../_apis/wit/classificationNodes/Iterations/TestFolder/TestIteration"
  }
]

Expected Behavior

The start/finish dates of moved iterations should be unchanged. This matches the behavior when dragging and dropping iterations in the UI. Additionally, the documentation for az boards iteration project update gives no indication that moved iterations will have their dates erased.

Environment Summary

Windows-10-10.0.22000-SP0
Python 3.10.5
Installer: MSI

azure-cli 2.39.0 *

Extensions:
azure-devops 0.25.0

Dependencies:
msal 1.18.0b1
azure-mgmt-resource 21.1.0b1

Additional Context