private CharacterNameGenerator CreateCharacterNameGenerator(AncestryDetailsModel detailModel) { var mockRepository = new Mock <ICharacterNameRepository>(); mockRepository.Setup(x => x.GetAncestry(detailModel.Code)).ReturnsAsync(detailModel); var rng = new RandomNumberGenerator(); var ris = new RandomItemSelector(rng); var mockNumberGenerator = new Mock <IRandomNumberGenerator>(); var generator = new CharacterNameGenerator(mockRepository.Object, ris, rng); return(generator); }
private CharacterNameResultModel CreateCharacterName(AncestryDetailsModel ancestry, AncestryDetailsModel.AncestryOptionsModel selectedOption) { var segment = _randomItemSelector.GetRandomWeightedItem(selectedOption.SegmentGroups); var nameParts = GetNameDefinitions(segment, ancestry.NameParts); var name = CreateNameFromParts(nameParts, selectedOption.SeperatorChancePercentage, selectedOption.NamePartSeperators); return(new CharacterNameResultModel { AncestryCode = ancestry.Code, AncestryName = ancestry.Name, Definitions = nameParts.Where(x => x.Meanings?.Any() == true).ToArray(), Name = name, OptionCode = selectedOption.Code, OptionName = selectedOption.Name, }); }