Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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.");
        }
Exemplo n.º 3
0
        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
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
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.");
        }
Exemplo n.º 6
0
        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.");
        }
Exemplo n.º 7
0
        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.");
        }
Exemplo n.º 8
0
        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.");
                    }
                }
            }
        }
Exemplo n.º 9
0
        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();
        }
Exemplo n.º 10
0
        public void InstanceFromFactory()
        {
            IProcessTemplates processTemplates = ProcessTemplateFactory.CreateProcessTemplateMananger(TestConstants.TfsCollectionUri);

            Assert.IsInstanceOfType(processTemplates, typeof(IProcessTemplates));
        }