BetterCms.Test.Module.Common.ViewModelToStringTest.All_View_Models_Should_Override_ToString_Method C# (CSharp) Method

All_View_Models_Should_Override_ToString_Method() private method

private All_View_Models_Should_Override_ToString_Method ( ) : void
return void
        public void All_View_Models_Should_Override_ToString_Method()
        {
            var viewModelNames = new List<string>();

            foreach (Assembly assembly in KnownAssemblies)
            {
                IList<Type> types = assembly.GetTypes().Where(type => type.IsClass && type.Name.ToLower().EndsWith("viewmodel")).ToList();
                if (types.Count > 0)
                {
                    foreach (Type type in types)
                    {
                        MethodInfo method = type.GetMethod("ToString", BindingFlags.Instance | BindingFlags.Public);
                        if (method.DeclaringType != type)
                        {
                            viewModelNames.Add(type.FullName);
                        }
                    }
                }
            }

            // Format view models name, which didn't have overrided ToString() method:
            var builder = new StringBuilder();
            foreach (string name in viewModelNames)
            {
                builder.Append(name + ", ");
            }

            Assert.AreEqual(0, viewModelNames.Count, string.Format("Not all view models has ToString override methods: {0}", builder));
        }
    }