string ListPropertyDeclarationOfMock(MatchedProperty <GivenClassComplexListProperty> matchedProperty) { var listClassName = $"SpecificationSpecific{matchedProperty.ExcelProperty.ClassName}"; var listPropertyName = ListPropertyName(matchedProperty.ExcelProperty); return($" readonly List<{listClassName}> {listPropertyName} = new List<{listClassName}>();"); }
string ListPropertyMockSetup(MatchedProperty <GivenClassComplexListProperty> matchedProperty) { var interfacePropertyName = matchedProperty.ExcelProperty.Name; var listPropertyName = ListPropertyName(matchedProperty.ExcelProperty); var interfaceUnderTestPropertyName = matchedProperty.ExcelProperty.ClassName; return($" {MockVariableName}.Setup(m => m.{interfacePropertyName}).Returns({listPropertyName}.Select(l => l.{interfaceUnderTestPropertyName}));"); }
string ComplexPropertySetterOnMock(MatchedProperty <GivenClassComplexProperty> matchedProperty) { var functionName = $"{matchedProperty.ExcelProperty.Name}_of"; var parameterName = CamelCase(matchedProperty.ExcelProperty.Name); var interfacePropertyName = matchedProperty.ExcelProperty.Name; var propertyClassName = $"SpecificationSpecific{matchedProperty.ExcelProperty.ClassName}"; var propertyNameOfSutObject = (matchedProperty.ExcelProperty as GivenClassComplexProperty).ClassName; return ($@" internal {SpecificationSpecificClassName} {functionName}({propertyClassName} {parameterName}) {{ AddClassProperty(new ReportSpecificationSetupClass(GetCurrentMethod(), {parameterName})); {MockVariableName}.Setup(m => m.{interfacePropertyName}).Returns({parameterName}?.{propertyNameOfSutObject}); return this; }}{NewLine}"); }
string SimplePropertySetterOnMock(MatchedProperty <GivenClassSimpleProperty> matchedProperty) { var functionName = $"{matchedProperty.ExcelProperty.Name}_of"; var parameterName = CamelCase(matchedProperty.ExcelProperty.Name); var interfacePropertyName = matchedProperty.ExcelProperty.Name; var parameterType = (Nullable.GetUnderlyingType(matchedProperty.CsharpProperty.PropertyType) == null) ? matchedProperty.CsharpProperty.PropertyType.Name : Nullable.GetUnderlyingType(matchedProperty.CsharpProperty.PropertyType).Name + "?"; return ($@" internal {SpecificationSpecificClassName} {functionName}({parameterType} {parameterName}) {{ AddValueProperty(GetCurrentMethod(), {parameterName}); {MockVariableName}.Setup(m => m.{interfacePropertyName}).Returns({parameterName}); return this; }}{NewLine}"); }
string ListPropertySetterOnMock(MatchedProperty <GivenClassComplexListProperty> matchedProperty) { var parameterName = CamelCase(matchedProperty.ExcelProperty.Name); var listParameterName = ListPropertyName(matchedProperty.ExcelProperty); var listPropertyName = ListPropertyName(matchedProperty.ExcelProperty); var listClassName = $"SpecificationSpecific{matchedProperty.ExcelProperty.ClassName}"; return ($@" internal {SpecificationSpecificClassName} {matchedProperty.ExcelProperty.Name}_of({listClassName} {parameterName}) {{ AddClassProperty(new ReportSpecificationSetupClass(GetCurrentMethod(), {parameterName})); this.{listPropertyName}.Add({parameterName}); return this; }} internal {SpecificationSpecificClassName} {matchedProperty.ExcelProperty.Name}_list_of(string listType, List<{listClassName}> {listParameterName}) {{ AddListProperty(new ReportSpecificationSetupList(GetCurrentMethod().Name, listType, {listParameterName})); this.{listPropertyName}.AddRange({listParameterName}); return this; }} internal {SpecificationSpecificClassName} {matchedProperty.ExcelProperty.Name}_table_of(ReportSpecificationSetupClassUsingTable<{listClassName}> {listParameterName}) {{ {listParameterName}.PropertyName = GetCurrentMethod().Name; AddClassTableProperty({listParameterName}); foreach (var row in {listParameterName}.Rows) this.{listPropertyName}.Add(row.Properties); return this; }}"); }