public void CreateTeamProject_PassInTestProjectDetailsWithExistingProjectName_ArgumentExceptionThrown() { // arrange ITeamProjects teamProjects = TeamProjectFactory.CreateTeamProjectMananger(TestConstants.TfsCollectionUri); string projectName = TestConstants.TfsTeamProjectName; IProcessTemplates processTemplates = ProcessTemplateFactory.CreateProcessTemplateMananger(TestConstants.TfsCollectionUri); string processTemplateName = processTemplates.ListProcessTemplates()[0].Name; // act teamProjects.CreateTeamProject(projectName, projectName + " Description", processTemplateName, false, false); // assert bool actual = false; foreach (string project in teamProjects.ListTeamProjectNames()) { if (string.Compare(project, projectName, true) == 0) { actual = true; break; } } Assert.IsTrue(actual); }
public void Should_find_no_difference_between_original_Scrum_project_and_Agile_project_converted_to_Scrum() { PrepareTestEnvironment.ResetCollectionOnce(); TfsConnection.ClientSettingsDirectory = Path.Combine(TestContext.TestRunResultsDirectory, "TfsClient"); var factory = new ProcessTemplateFactory(); var unconverted = factory.FromActiveTeamProject(TestCollectionUri, "Agile-6.1"); var goal = factory.FromActiveTeamProject(TestCollectionUri, "Scrum-2.1"); var agileToScrumDiffEngine = new DiffEngine(ProcessTemplateMaps.Agile61ToScrum21()); var initialDifferences = agileToScrumDiffEngine.CompareProcessTemplates(unconverted, goal); var morphEngine = new MorphEngine(); var actions = morphEngine.GenerateActions(initialDifferences); morphEngine.Apply(TestCollectionUri, "Agile-6.1", actions, TestContext.TestRunResultsDirectory); var emptyMapDiffEngine = new DiffEngine(ProcessTemplateMap.Empty()); var converted = factory.FromActiveTeamProject(TestCollectionUri, "Agile-6.1"); var finalDifferences = emptyMapDiffEngine.CompareProcessTemplates(converted, goal); var reportBuilder = new ReportBuilder(); var report = reportBuilder.WriteDifferencesToXml(finalDifferences); report.Save(Path.Combine(TestContext.TestRunResultsDirectory, TestContext.TestName + ".xml")); Assert.AreEqual(0, finalDifferences.Count(), "Should be zero differences between new Scrum 2.1 project and the converted Agile 6.1 project."); }
static void Main(string[] args) { if (args.Length != 3) { System.Console.WriteLine("usage: {0} <collection uri> <project name to morph> <project name to use as template>", Process.GetCurrentProcess().ProcessName); return; } var collectionUri = new Uri(args[0]); var projectName = args[1]; var templateProjectName = args[2]; var factory = new ProcessTemplateFactory(); var currentTemplate = factory.FromActiveTeamProject(collectionUri, projectName); var goalTemplate = factory.FromActiveTeamProject(collectionUri, templateProjectName); // TODO test for project property showing process template used and update after conversion var diffEngine = new DiffEngine(ProcessTemplateMap.ConvertScrum2ToAgile6()); var differences = diffEngine.CompareProcessTemplates(currentTemplate, goalTemplate); var engine = new MorphEngine(); var actions = engine.GenerateActions(differences); foreach (var action in actions) { System.Console.WriteLine(action.ToString()); } //var filteredActions = actions.Where(a => !(a is DestroyWitdMorphAction)); // TODO optionally skip deleting extra work item items engine.Apply(collectionUri, projectName, actions, Path.GetTempPath()); //TODO replace temp path with something useful }
public void ListProcessTemplates_Defaults_ListGreaterThan0() { // arrange IProcessTemplates processTemplates = ProcessTemplateFactory.CreateProcessTemplateMananger(TestConstants.TfsCollectionUri); // act List <ProcessTemplate> actual = processTemplates.ListProcessTemplates(); // assert Assert.IsNotNull(actual); Assert.IsTrue(actual.Count > 0); }
public void FullDownloadDeleteAndUpload_Default_FileExistsThenTemplateNotInTfsAndThenNewTemplateInTfs() { IProcessTemplates processTemplates = ProcessTemplateFactory.CreateProcessTemplateMananger(TestConstants.TfsCollectionUri); int currentDefaultTemplateID = processTemplates.ListProcessTemplates().OrderBy(o => o.Rank).FirstOrDefault().TemplateId; ProcessTemplate processTemplateToAction = processTemplates.ListProcessTemplates().OrderByDescending(o => o.Rank).FirstOrDefault(); // not the default Assert.IsNotNull(processTemplateToAction); Assert.AreNotEqual(processTemplateToAction.TemplateId, currentDefaultTemplateID, "The selected template is the current default process template, please in sure there is 2 or more templates in the current Tfs Collection."); int templateCountToStartWith = processTemplates.ListProcessTemplates().Count; // download template string downloadedTemplateZipFile = processTemplates.DownloadTemplateAndReturnPathToZip(processTemplateToAction.Name); Assert.IsTrue(File.Exists(downloadedTemplateZipFile), "The template didn't download"); // delete the process template processTemplates.DeleteTemplate(processTemplateToAction.Name); ProcessTemplate processTemplateAfterDelete = processTemplates.ListProcessTemplates().FirstOrDefault(o => string.Compare(o.Name, processTemplateToAction.Name, true) == 0); Assert.IsNull(processTemplateAfterDelete, "The process template didn't delete properly (processTemplateAfterDelete != null)."); int templateCountAfterDelete = processTemplates.ListProcessTemplates().Count; Assert.IsTrue(templateCountToStartWith > templateCountAfterDelete, "The process template didn't delete properly (templateCountToStartWith > templateCountAfterDelete)."); // upload process template processTemplates.UploadTemplate(processTemplateToAction.Name, processTemplateToAction.Description, downloadedTemplateZipFile); ProcessTemplate processTemplateAfterUpload = processTemplates.ListProcessTemplates().FirstOrDefault(o => string.Compare(o.Name, processTemplateToAction.Name, true) == 0); Assert.IsNotNull(processTemplateAfterUpload, "The process template didn't upload properly (processTemplateAfterUpload == null)."); int templateCountAfterUpload = processTemplates.ListProcessTemplates().Count; Assert.IsTrue(templateCountAfterUpload > templateCountAfterDelete, "The process template didn't upload properly (templateCountAfterUpload > templateCountAfterDelete)."); Assert.IsTrue(templateCountToStartWith == templateCountAfterUpload, "The process template didn't upload properly (templateCountToStartWith == templateCountAfterUpload)."); // check first template id is not current template id Assert.IsTrue(processTemplateToAction.TemplateId != processTemplateAfterUpload.TemplateId, "Something didn't work properly."); // check default template id hasn't changed int currentDefaultTemplateAfterWorking = processTemplates.ListProcessTemplates().OrderBy(o => o.Rank).FirstOrDefault().TemplateId; Assert.IsTrue(currentDefaultTemplateID == currentDefaultTemplateAfterWorking, "The Default process template ID has changed."); // Make default template processTemplates.MakeDefaultTemplate(processTemplateAfterUpload.Name); int currentDefaultTemplateAfterMakingDefault = processTemplates.ListProcessTemplates().OrderBy(o => o.Rank).FirstOrDefault().TemplateId; Assert.IsTrue(processTemplateAfterUpload.TemplateId == currentDefaultTemplateAfterMakingDefault, "The Default process template wasn't set correctly."); }
public void Should_find_no_differences_between_Scrum_project_and_template() { Assert.Inconclusive("Templates naturally have differences from the projects they create"); var factory = new ProcessTemplateFactory(); var collectionTemplate = factory.FromCollectionTemplates(TestCollectionUri, "Microsoft Visual Studio Scrum 2.1"); var activeProject = factory.FromActiveTeamProject(TestCollectionUri, "Scrum-2.1"); var diffEngine = new DiffEngine(ProcessTemplateMap.Empty()); var differences = diffEngine.CompareProcessTemplates(activeProject, collectionTemplate); Assert.AreEqual(0, differences.Count(), "Should be zero differences between new Scrum 2.1 project and the template it was created from."); }
public void CreateAndDeleteTeamProject_PassInTestProjectDetails_ProjectListToReturnTheNewProjectInTheListAndThenTheProjectToBeRemovedAndVerifyTheWarnings() { // arrange ITeamProjects teamProjects = TeamProjectFactory.CreateTeamProjectMananger(TestConstants.TfsCollectionUri); string projectName = TestProjectNameBase + Guid.NewGuid().ToString("N"); IProcessTemplates processTemplates = ProcessTemplateFactory.CreateProcessTemplateMananger(TestConstants.TfsCollectionUri); string processTemplateName = processTemplates.ListProcessTemplates()[0].Name; // act teamProjects.CreateTeamProject(projectName, projectName + " Description", processTemplateName, false, false); // assert bool actual = false; foreach (string project in teamProjects.ListTeamProjectNames()) { if (string.Compare(project, projectName, true) == 0) { actual = true; break; } } Assert.IsTrue(actual, "Create Failed."); List <Exception> exceptions; teamProjects.DeleteTeamProject(projectName, out exceptions, true, false); bool actualAfter = false; foreach (string project in teamProjects.ListTeamProjectNames()) { if (string.Compare(project, projectName, true) == 0) { actualAfter = true; break; } } Assert.IsFalse(actualAfter, "Delete Failed."); }
public static void AssemblyInit(TestContext context) { using (ITeamProjectCollections teamProjectCollections = TeamProjectCollectionFactory.CreateTeamProjectCollectionMananger(TestConstants.TfsUri, TestConstants.DefaultCredentials)) { if (!teamProjectCollections.CollectionExists(TestConstants.TfsCollectionName)) { teamProjectCollections.CreateProjectCollection(TestConstants.TfsCollectionName, TestConstants.TfsCollectionDescription); } } using (ITeamProjects teamProjectCollections = TeamProjectFactory.CreateTeamProjectMananger(TestConstants.TfsCollectionUri, TestConstants.DefaultCredentials)) { if (!teamProjectCollections.TeamProjectExists(TestConstants.TfsTeamProjectName)) { string processName = string.Empty; IProcessTemplates processTemplates = ProcessTemplateFactory.CreateProcessTemplateMananger(TestConstants.TfsCollectionUri); processName = processTemplates.ListProcessTemplates()[0].Name; if (!teamProjectCollections.CreateTeamProject(TestConstants.TfsTeamProjectName, TestConstants.TfsTeamProjectDescription, processName, false, false)) { throw new Exception("Failed to create the default project for TFS API Tests."); } } } }
public static void Refresh() { //Administration AreaManagerFactory.Reset(); GlobalListFactory.Reset(); IterationManagerFactory.Reset(); ProcessTemplateFactory.Reset(); TeamManagerFactory.Reset(); TeamProjectFactory.Reset(); TfsTeamProjectCollectionFactory.Reset(); TeamProjectCollectionFactory.Reset(); //Queries QueryRunnerFactory.Reset(); //TestManagement TestCaseFactory.Reset(); TestCaseStepFactory.Reset(); TestSuiteFactory.Reset(); TestSuiteManagerFactory.Reset(); //WorkItemTracking WorkItemStoreFactory.Reset(); }
public void InstanceFromFactory() { IProcessTemplates processTemplates = ProcessTemplateFactory.CreateProcessTemplateMananger(TestConstants.TfsCollectionUri); Assert.IsInstanceOfType(processTemplates, typeof(IProcessTemplates)); }