public void GetExistingFolderNames_RootDirectoryDoesNotExist_ShouldReturnEmptyList() { var testScenarioName = "RootDirectoryDoesNotExist"; var directoryDoesNotExist = $"{_testFolder}\\{testScenarioName}"; var actual = Fs.GetExistingFolderNames(directoryDoesNotExist); Assert.Empty(actual); }
public void GetExistingFolderNames_RootExists_ShouldReturnAllExpectedFolderNamesInAlphabeticalOrder() { var testScenarioName = "RootExists"; var directoryExists = $"{_testFolder}\\{testScenarioName}"; FSTestsFixture.CreateFolders(_testFolder, new List <string> { testScenarioName, $"{testScenarioName}\\One", $"{testScenarioName}\\Two", $"{testScenarioName}\\Three" }); var expected = new List <string>() { "One", "Three", "Two" }; var actual = Fs.GetExistingFolderNames(directoryExists); Assert.Equal(3, actual.Count()); Assert.Equal(expected, actual); }
public void GetExistingFolderNames_RootDirectoryEmptyOrNull_ShouldReturnEmptyList(string rootDirectory) { var actual = Fs.GetExistingFolderNames(rootDirectory); Assert.Empty(actual); }
internal static void ValidateUserSelection(UserSelection userSelection, bool isNewProject) { if (isNewProject) { var rootDir = Directory.GetParent(Directory.GetParent(GenContext.Current.DestinationPath).FullName).FullName; var projectNameService = new ProjectNameService(GenContext.ToolBox.Repo.ProjectNameValidationConfig, () => Fs.GetExistingFolderNames(rootDir)); var result = projectNameService.Validate(GenContext.Current.ProjectName); { if (!result.IsValid) { var errors = string.Join(Environment.NewLine, result.Errors.Select(e => $"Error: {e.ErrorType}; Validator: {e.ValidatorName}.")); throw new InvalidDataException(string.Format(StringRes.ErrorProjectNameValidationFailed, GenContext.Current.ProjectName, Environment.NewLine + errors)); } } } foreach (var item in userSelection.Items) { var template = GenContext.ToolBox.Repo.Find(t => t.Identity == item.TemplateId); if (template.GetItemNameEditable()) { Func <IEnumerable <string> > existingNames = () => userSelection.Items.Where(t => t.TemplateId != template.Identity).Select(n => n.Name); var itemNameService = new ItemNameService(GenContext.ToolBox.Repo.ItemNameValidationConfig, existingNames); var validationResult = itemNameService.Validate(item.Name); { if (!validationResult.IsValid) { var errors = string.Join(Environment.NewLine, validationResult.Errors.Select(e => $"Error: {e.ErrorType}; Validator: {e.ValidatorName}.")); throw new InvalidDataException(string.Format(StringRes.ErrorNamingValidationFailed, item.Name, Environment.NewLine + errors)); } } } var dependencies = GenContext.ToolBox.Repo.GetDependencies(template, userSelection.Context, new List <ITemplateInfo>()); foreach (var dependency in dependencies) { if (!userSelection.Items.Any(i => i.TemplateId == dependency.Identity)) { throw new InvalidDataException(string.Format(StringRes.ErrorDependencyMissing, dependency)); } } var requirements = GenContext.ToolBox.Repo.GetRequirements(template, userSelection.Context); if (requirements.Count() > 0 && !userSelection.Items.Any(i => requirements.Select(r => r.Identity).Contains(i.TemplateId))) { throw new InvalidDataException(string.Format(StringRes.ErrorRequirementMissing, requirements.Select(r => r.Name).Aggregate((i, j) => $"{i},{j}"))); } var exclusionTemplates = GenContext.ToolBox.Repo.GetExclusions(template, userSelection.Context); foreach (var exclusion in exclusionTemplates) { if (userSelection.Items.Any(i => i.TemplateId == exclusion.Identity)) { throw new InvalidDataException(string.Format(StringRes.ErrorExcludedTemplatesFound, exclusion.Name)); } } } }