public void ShouldGetWaitingHarvestOrdersForPlanet() { HarvestOrderModule module; HarvestOrder[] results; IDatabase database; database = Substitute.For <IDatabase>(); database.Execute <HarvestOrder>(Arg.Any <ISelect>()).Returns(new HarvestOrder[] { new HarvestOrder() { HarvestOrderID = 1 }, new HarvestOrder() { HarvestOrderID = 2 }, new HarvestOrder() { HarvestOrderID = 3 } }); module = new HarvestOrderModule(NullLogger.Instance, database); results = module.GetWaitingHarvestOrders(1); Assert.IsNotNull(results); Assert.AreEqual(3, results.Length); for (int t = 0; t < 3; t++) { Assert.IsNotNull(results[t]); Assert.AreEqual(t + 1, results[t].HarvestOrderID); } }
public void ShouldNotCreateHarvestOrderAndLogError() { HarvestOrderModule module; MemoryLogger logger; IDatabase database; logger = new MemoryLogger(); database = Substitute.For <IDatabase>(); database.When(x => x.Execute(Arg.Any <IQuery[]>())).Do(x => { throw new Exception(); }); module = new HarvestOrderModule(logger, database); Assert.ThrowsException <PIODataException>(() => module.CreateHarvestOrder(1, 2)); Assert.IsNotNull(logger.Logs.FirstOrDefault(item => (item.Level == LogLevels.Error) && (item.ComponentName == module.ModuleName))); }
public void ShouldNotGetWaitingHarvestOrdersForPlanetAndLogError() { HarvestOrderModule module; MemoryLogger logger; IDatabase database; logger = new MemoryLogger(); database = Substitute.For <IDatabase>(); database.Execute <HarvestOrder>(Arg.Any <ISelect>()).Returns((x) => { throw new Exception(); }); module = new HarvestOrderModule(logger, database); Assert.ThrowsException <PIODataException>(() => module.GetWaitingHarvestOrders(1)); Assert.IsNotNull(logger.Logs.FirstOrDefault(item => (item.Level == LogLevels.Error) && (item.ComponentName == module.ModuleName))); }
public void ShouldCreateHarvestOrder() { HarvestOrderModule module; HarvestOrder result; IDatabase database; int inserted = 0; database = Substitute.For <IDatabase>(); database.When(x => x.Execute(Arg.Any <IQuery[]>())).Do(x => inserted++); module = new HarvestOrderModule(NullLogger.Instance, database); result = module.CreateHarvestOrder(1, 2); Assert.IsNotNull(result); Assert.AreEqual(2, inserted); }
public void ShouldGetHarvestOrder() { HarvestOrderModule module; HarvestOrder result; IDatabase database; database = Substitute.For <IDatabase>(); database.Execute <HarvestOrder>(Arg.Any <ISelect>()).Returns(new HarvestOrder[] { new HarvestOrder() { HarvestOrderID = 1 } }); module = new HarvestOrderModule(NullLogger.Instance, database); result = module.GetHarvestOrder(1); Assert.IsNotNull(result); Assert.AreEqual(1, result.HarvestOrderID); }
static void Main(string[] args) { ILogger logger; VersionControlModule versionControlModule; //ServiceHostModule serviceHostModule; //IBotsService service; RESTServer server; IRouteManager routeManager; IDatabase database; IConnectionFactory connectionFactory; ICommandBuilder commandBuilder; IDatabaseCreator databaseCreator; IBotModule botModule; IOrderModule orderModule; IOrderManagerModule orderManagerModule; IProduceOrderModule produceOrderModule; IHarvestOrderModule harvestOrderModule; IBuildOrderModule buildOrderModule; IBotSchedulerModule botSchedulerModule; PIOServiceClient client; quitEvent = new AutoResetEvent(false); Console.CancelKeyPress += new ConsoleCancelEventHandler(Console_CancelKeyPress); //logger = new ConsoleLogger(new DefaultLogFormatter()); logger = new UnicastLogger(IPAddress.Loopback, Properties.Settings.Default.UnicastPort); //logger = new FileLogger(new DefaultLogFormatter(), "PIO.Bots.ServerHost.Log"); databaseCreator = new SqlDatabaseCreator(Properties.Settings.Default.Server, Properties.Settings.Default.DatabaseName); connectionFactory = new SqlConnectionFactory(Properties.Settings.Default.Server, Properties.Settings.Default.DatabaseName); commandBuilder = new SqlCommandBuilder(); database = new Database(connectionFactory, commandBuilder); versionControlModule = new VersionControlModule(logger, databaseCreator, new BotsVersionControl(database)); if (!versionControlModule.InitializeDatabase(Properties.Settings.Default.DropDatabase)) { Console.ReadLine(); return; } client = new PIOServiceClient(new BasicHttpBinding(), new EndpointAddress($@"http://127.0.0.1:8733/PIO/Service/")); client.Open(); botModule = new BotModule(logger, database); orderModule = new OrderModule(logger, database); produceOrderModule = new ProduceOrderModule(logger, database); harvestOrderModule = new HarvestOrderModule(logger, database); buildOrderModule = new BuildOrderModule(logger, database); orderManagerModule = new OrderManagerModule(logger, client, orderModule, produceOrderModule, harvestOrderModule, buildOrderModule, 10); botSchedulerModule = new BotSchedulerModule(logger, client, botModule, orderManagerModule, 5); botSchedulerModule.Start(); routeManager = new RouteManager(new RouteParser(), new ResponseSerializer()); routeManager.AddRouteHandler(new BotRouteHandler(botModule)); routeManager.AddRouteHandler(new ProduceOrderRouteHandler(produceOrderModule)); routeManager.AddRouteHandler(new HarvestOrderRouteHandler(harvestOrderModule)); routeManager.AddRouteHandler(new BuildOrderRouteHandler(buildOrderModule)); server = new RESTServer(logger, routeManager, "http://127.0.0.1:8734/"); server.Start(); WaitHandle.WaitAny(new WaitHandle[] { quitEvent }, -1); server.Stop(); //serviceHostModule.Stop(); botSchedulerModule.Stop(); client.Close(); logger.Dispose(); Console.CancelKeyPress -= new ConsoleCancelEventHandler(Console_CancelKeyPress); }