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); }
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); }
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); }
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); } }
public static string InferTemplateName(string templateName) { return(_itemValidationService.Infer(templateName)); }