public void TestFindHighestPrecedenceTemplateIfAllSameGroupIdentity_ReturnsNullIfGroupsAreDifferent()
        {
            List <IFilteredTemplateInfo> templatesToCheck = new List <IFilteredTemplateInfo>();

            templatesToCheck.Add(new FilteredTemplateInfo(
                                     new TemplateInfo()
            {
                Precedence    = 10,
                Name          = "Template1",
                Identity      = "Template1",
                GroupIdentity = "TestGroup"
            }
                                     , null));
            templatesToCheck.Add(new FilteredTemplateInfo(
                                     new TemplateInfo()
            {
                Precedence    = 20,
                Name          = "Template2",
                Identity      = "Template2",
                GroupIdentity = "RealGroup"
            }
                                     , null));
            IFilteredTemplateInfo highestPrecedenceTemplate = TemplateListResolver.FindHighestPrecedenceTemplateIfAllSameGroupIdentity(templatesToCheck);

            Assert.Null(highestPrecedenceTemplate);
        }
        public void RunStarted(object automationObject, Dictionary <string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams)
        {
            DTE dte = ServiceProvider.GlobalProvider.GetService(typeof(SDTE)) as DTE;

            if (dte == null)
            {
                throw new WizardCancelledException("Unable to get DTE");
            }

            Bootstrapper bootstrapper = CreateBoostrapper();

            if (!replacementsDictionary.TryGetValue("$WizardData$", out string wizardData))
            {
                throw new WizardCancelledException("Wizard data not found: Expected a string containing the identity of the template to create");
            }

            wizardData = wizardData.Trim();
            IFilteredTemplateInfo match = bootstrapper.ListTemplates(true, x =>
            {
                if (string.Equals(x.Identity, wizardData, StringComparison.OrdinalIgnoreCase))
                {
                    return(new MatchInfo {
                        Kind = MatchKind.Exact, Location = MatchLocation.Name
                    });
                }

                return(null);
            }).FirstOrDefault(x => x.IsMatch);

            if (match == null)
            {
                throw new WizardCancelledException($"Wizard data malformed: no template found with identity {wizardData}");
            }

            ITemplateInfo info = match.Info;
            // TODO: Determine where to get the baseline name from, as needed. baselineName is a placeholder so template engine builds.
            string          baselineName = null;
            ICreationResult result       = bootstrapper.CreateAsync(info, replacementsDictionary[""], replacementsDictionary[""], ExtractParametersFromReplacementsDictionary(replacementsDictionary), SkipUpdatesCheck, baselineName).Result;

            foreach (ICreationPath path in result.PrimaryOutputs)
            {
                dte.Solution.AddFromFile(path.Path);
            }
        }
        public void TestFindHighestPrecedenceTemplateIfAllSameGroupIdentity()
        {
            List <IFilteredTemplateInfo> templatesToCheck = new List <IFilteredTemplateInfo>();

            templatesToCheck.Add(new FilteredTemplateInfo(
                                     new TemplateInfo()
            {
                Precedence    = 10,
                Name          = "Template1",
                Identity      = "Template1",
                GroupIdentity = "TestGroup"
            }
                                     , null));
            templatesToCheck.Add(new FilteredTemplateInfo(
                                     new TemplateInfo()
            {
                Precedence    = 20,
                Name          = "Template2",
                Identity      = "Template2",
                GroupIdentity = "TestGroup"
            }
                                     , null));
            templatesToCheck.Add(new FilteredTemplateInfo(
                                     new TemplateInfo()
            {
                Precedence    = 0,
                Name          = "Template3",
                Identity      = "Template3",
                GroupIdentity = "TestGroup"
            }
                                     , null));

            IFilteredTemplateInfo highestPrecedenceTemplate = TemplateListResolver.FindHighestPrecedenceTemplateIfAllSameGroupIdentity(templatesToCheck);

            Assert.NotNull(highestPrecedenceTemplate);
            Assert.Equal("Template2", highestPrecedenceTemplate.Info.Identity);
            Assert.Equal(20, highestPrecedenceTemplate.Info.Precedence);
        }
Example #4
0
        public static IFilteredTemplateInfo FindHighestPrecedenceTemplateIfAllSameGroupIdentity(IReadOnlyList <IFilteredTemplateInfo> templateList)
        {
            if (!AreAllTemplatesSameGroupIdentity(templateList))
            {
                return(null);
            }

            IFilteredTemplateInfo highestPrecedenceTemplate = null;

            foreach (IFilteredTemplateInfo template in templateList)
            {
                if (highestPrecedenceTemplate == null)
                {
                    highestPrecedenceTemplate = template;
                }
                else if (template.Info.Precedence > highestPrecedenceTemplate.Info.Precedence)
                {
                    highestPrecedenceTemplate = template;
                }
            }

            return(highestPrecedenceTemplate);
        }