make some methods public for testing purposes

This commit is contained in:
Daniel_I_Am 2020-06-08 22:00:25 +02:00
parent 3c682780a4
commit 5b552ac310
No known key found for this signature in database
GPG Key ID: 80C428FCC9743E84
2 changed files with 124 additions and 89 deletions

View File

@ -11,12 +11,19 @@ namespace ChaosBot.Attribute
public static class AssemblyController
{
private static Logger _logger = Program._logger;
public static void Register()
public static void RegisterAll()
{
Assembly dbEntityAssembly = Assembly.GetAssembly(typeof(DBEntity));
if (dbEntityAssembly != null)
{
foreach (Type type in dbEntityAssembly.GetTypes())
{
RegisterDBEntityType(type);
}
}
}
public static void RegisterDBEntityType(Type type)
{
try
{
@ -48,6 +55,7 @@ namespace ChaosBot.Attribute
{
columnType = DBEntity.DataTypes.GetValueOrDefault(prop.PropertyType).ToString();
}
StringBuilder constraintNameBuilder = new StringBuilder($"{table}_{columnName}");
List<string> constraintsList = new List<string>();
@ -72,8 +80,10 @@ namespace ChaosBot.Attribute
constraintsList.Insert(0, "CONSTRAINT");
constraintsList.Insert(1, constraintName);
}
string constraints = String.Join(" ", constraintsList);
columnList.Add(new Tuple<string, string, string, string>(columnName, columnType, constraintName, constraints));
columnList.Add(
new Tuple<string, string, string, string>(columnName, columnType, constraintName, constraints));
}
// Check table exists
@ -89,7 +99,7 @@ namespace ChaosBot.Attribute
}
else
{
foreach (Tuple<string,string,string,string> column in columnList)
foreach (Tuple<string, string, string, string> column in columnList)
{
try
{
@ -111,6 +121,4 @@ namespace ChaosBot.Attribute
}
}
}
}
}
}

View File

@ -1,12 +1,13 @@
using NLog;
using System;
using System.Runtime.CompilerServices;
using ChaosBot.Discord;
using System.Threading.Tasks;
using ChaosBot.Attribute;
using ChaosBot.Database.Repository;
using Microsoft.Extensions.Configuration;
[assembly: InternalsVisibleTo("ChaosBot.UnitTests")]
namespace ChaosBot
{
internal class Program
@ -27,27 +28,26 @@ namespace ChaosBot
/*
* Load configuration from AppSettings.Json and save as Cfg
*/
ConfigurationRepository.AppSettingsHandler = new ConfigurationBuilder()
.SetBasePath(System.IO.Directory.GetCurrentDirectory())
.AddJsonFile(appsettingsPath, optional: false, reloadOnChange: true).Build();
LoadConfiguration(appsettingsPath);
/*
* Initialize the _logger for logging purposes
*/
_logger = Logging.GenLog();
LoadLogger();
/*
* Attempt to load our custom assemblies
*/
AssemblyController.Register();
RegisterAssemblyController();
/*
* Initialize the Discord Client and Login
*/
_logger.Info($"Starting Up {ConfigurationRepository.GetValue<string>("Bot:Name")} v{ConfigurationRepository.GetValue<string>("Bot:Version")}");
var discordBot = DiscordConnect.StartUp();
WebServer.WebServer.Start(new string[]{});
var discordBot = LoadDiscord();
LoadWebServer();
await discordBot;
}
catch (Exception ex)
@ -55,5 +55,32 @@ namespace ChaosBot
_logger.Error(ex, $"Program.MainFunction: Exception [{ex}] thrown, <[{ex.Message}]>.");
}
}
public static void LoadConfiguration(string appsettingsPath)
{
ConfigurationRepository.AppSettingsHandler = new ConfigurationBuilder()
.SetBasePath(System.IO.Directory.GetCurrentDirectory())
.AddJsonFile(appsettingsPath, optional: false, reloadOnChange: true).Build();
}
public static void LoadLogger()
{
_logger = Logging.GenLog();
}
public static void RegisterAssemblyController()
{
AssemblyController.RegisterAll();
}
public static void LoadWebServer()
{
WebServer.WebServer.Start(new string[]{});
}
public static Task LoadDiscord()
{
return DiscordConnect.StartUp();
}
}
}