Beispiel #1
0
        public void Infer_SuccessfullyAccountsForExistingNamesWithNameUpdate()
        {
            var existingNames = new List <string>()
            {
                "Page1"
            };

            Func <IEnumerable <string> > getExistingNames = () => { return(existingNames); };

            var config = new ItemNameValidationConfig()
            {
                ReservedNames = new string[]
                {
                    "Page",
                },
                ValidateExistingNames = true,
            };

            var validationService = new ItemNameService(config, getExistingNames);
            var result            = validationService.Infer("Page");

            Assert.Equal("Page2", result);

            existingNames.Add("Page2");
            var result2 = validationService.Infer("Page");

            Assert.Equal("Page3", result2);
        }
Beispiel #2
0
        public void Infer_SuccessfullyAccountsForReservedNames()
        {
            var config = new ItemNameValidationConfig()
            {
                ReservedNames = new string[]
                {
                    "Page",
                },
            };

            var validationService = new ItemNameService(config, null);
            var result            = validationService.Infer("Page");

            Assert.Equal("Page1", result);
        }
Beispiel #3
0
        protected async Task <(string ProjectPath, string ProjecName)> AssertGenerationOneByOneAsync(string itemName, UserSelectionContext context, string itemId, bool cleanGeneration = true)
        {
            BaseGenAndBuildFixture.SetCurrentLanguage(context.Language);
            BaseGenAndBuildFixture.SetCurrentPlatform(context.Platform);

            var itemTemplate = _fixture.Templates().FirstOrDefault(t => t.Identity == itemId);
            var finalName    = itemTemplate.GetDefaultName();

            if (itemTemplate.GetItemNameEditable())
            {
                var nameValidationService = new ItemNameService(GenContext.ToolBox.Repo.ItemNameValidationConfig, () => new string[] { });
                finalName = nameValidationService.Infer(finalName);
            }

            var projectName     = $"{ShortProjectType(context.ProjectType)}{finalName}{ShortLanguageName(context.Language)}";
            var destinationPath = Path.Combine(_fixture.TestProjectsPath, projectName, projectName);

            GenContext.Current = new FakeContextProvider
            {
                ProjectName          = projectName,
                DestinationPath      = destinationPath,
                GenerationOutputPath = destinationPath,
            };

            var userSelection = _fixture.SetupProject(context);
            var templateInfo  = GenContext.ToolBox.Repo.GetTemplateInfo(itemTemplate, context);

            _fixture.AddItem(userSelection, templateInfo, BaseGenAndBuildFixture.GetDefaultName);

            await NewProjectGenController.Instance.UnsafeGenerateProjectAsync(userSelection);

            var resultPath = Path.Combine(_fixture.TestProjectsPath, projectName);

            // Assert
            Assert.True(Directory.Exists(resultPath));
            Assert.True(Directory.GetFiles(resultPath, "*.*", SearchOption.AllDirectories).Count() > 2);

            // Clean
            if (cleanGeneration)
            {
                Fs.SafeDeleteDirectory(resultPath);
            }

            return(resultPath, projectName);
        }
Beispiel #4
0
        public void AddItem(UserSelection userSelection, TemplateInfo template, Func <TemplateInfo, string> getName)
        {
            if (template.MultipleInstance || !AlreadyAdded(userSelection, template))
            {
                var itemName  = getName(template);
                var usedNames = userSelection.Pages.Select(p => p.Name)
                                .Concat(userSelection.Features.Select(f => f.Name))
                                .Concat(userSelection.Services.Select(f => f.Name))
                                .Concat(userSelection.Testing.Select(f => f.Name));

                if (template.ItemNameEditable)
                {
                    var itemBameValidationService = new ItemNameService(GenContext.ToolBox.Repo.ItemNameValidationConfig, () => usedNames);
                    itemName = itemBameValidationService.Infer(itemName);
                }
                else
                {
                    itemName = template.DefaultName;
                }

                AddItem(userSelection, itemName, template);
            }
        }
Beispiel #5
0
 public static string InferTemplateName(string templateName)
 {
     return(_itemValidationService.Infer(templateName));
 }