public void GetTfsNodeStructure_WithDifferentAreaPath() { var nodeStructure = _services.GetRequiredService <TfsNodeStructure>(); const string targetStructureName = "Area\\test"; const string sourceStructureName = "Area"; nodeStructure.ApplySettings(new TfsNodeStructureSettings { SourceProjectName = "SourceProject", TargetProjectName = "TargetProject", FoundNodes = new Dictionary <string, bool> { { @"TargetProject\Area\test\PUL", true } } }); const string sourceNodeName = @"SourceProject\PUL"; const TfsNodeStructureType nodeStructureType = TfsNodeStructureType.Area; var newNodeName = nodeStructure.GetNewNodeName(sourceNodeName, nodeStructureType, targetStructureName, sourceStructureName); Assert.AreEqual(newNodeName, @"TargetProject\test\PUL"); }
public string GetNewNodeName(string sourceNodeName, TfsNodeStructureType nodeStructureType) { Log.LogDebug("NodeStructureEnricher.GetNewNodeName({sourceNodeName}, {nodeStructureType})", sourceNodeName, nodeStructureType.ToString()); string targetStructureName = NodeStructureTypeToLanguageSpecificName(_sourceLanguageMaps, nodeStructureType); //.ToLower(); string sourceStructureName = NodeStructureTypeToLanguageSpecificName(_targetLanguageMaps, nodeStructureType); //.ToLower(); // Change casing to lower //sourceNodeName = sourceNodeName.ToLower(); // Replace project name with new name (if necessary) and inject nodePath (Area or Iteration) into path for node validation string newNodeName; if (_prefixProjectToNodes) { newNodeName = $@"{_targetProjectName}\{targetStructureName}\{sourceNodeName}"; } else { var regex = new Regex(Regex.Escape(_sourceProjectName), RegexOptions.IgnoreCase); if (sourceNodeName.StartsWith($@"{_sourceProjectName}\{sourceStructureName}\")) { newNodeName = regex.Replace(sourceNodeName, _targetProjectName, 1); } else { newNodeName = regex.Replace(sourceNodeName, $@"{_targetProjectName}\{targetStructureName}", 1); } } // Validate the node exists if (!TargetNodeExists(newNodeName)) { Log.LogWarning("The Node '{newNodeName}' does not exist, leaving as '{newProjectName}'. This may be because it has been renamed or moved and no longer exists, or that you have not migrated the Node Structure yet.", newNodeName, _targetProjectName); newNodeName = _targetProjectName; } // Remove nodePath (Area or Iteration) from path for correct population in work item if (newNodeName.StartsWith(_targetProjectName + '\\' + targetStructureName + '\\')) { newNodeName = newNodeName.Remove(newNodeName.IndexOf($@"{targetStructureName}\"), $@"{targetStructureName}\".Length); } else if (newNodeName.StartsWith(_targetProjectName + '\\' + targetStructureName)) { newNodeName = newNodeName.Remove(newNodeName.IndexOf($@"{targetStructureName}"), $@"{targetStructureName}".Length); } return(newNodeName); }
public string NodeStructureTypeToLanguageSpecificName(IMigrationClient client, TfsNodeStructureType value) { // insert switch statement here switch (value) { case TfsNodeStructureType.Area: return(client.Config.AsTeamProjectConfig().LanguageMaps.AreaPath); case TfsNodeStructureType.Iteration: return(client.Config.AsTeamProjectConfig().LanguageMaps.IterationPath); default: throw new InvalidOperationException("Not a valid NodeStructureType "); } }
private string NodeStructureTypeToLanguageSpecificName(TfsLanguageMapOptions languageMaps, TfsNodeStructureType value) { // insert switch statement here switch (value) { case TfsNodeStructureType.Area: return(languageMaps.AreaPath); case TfsNodeStructureType.Iteration: return(languageMaps.IterationPath); default: throw new InvalidOperationException("Not a valid NodeStructureType "); } }