public async Task CreatePhraseCommand_Test() { var phraseId = await PhraseModule.ExecuteCommandAsync(new CreatePhraseCommand( PhraseSampleData.MatchId, PhraseSampleData.TeamId, PhraseSampleData.CreatedByUserId, PhraseSampleData.Description, PhraseSampleData.Positive)); var phrase = await PhraseModule.ExecuteQueryAsync(new GetPhraseQuery(phraseId)); Assert.That(phrase.MatchId, Is.EqualTo(PhraseSampleData.MatchId)); Assert.That(phrase.TeamId, Is.EqualTo(PhraseSampleData.TeamId)); Assert.That(phrase.CreatedByUserId, Is.EqualTo(PhraseSampleData.CreatedByUserId)); Assert.That(phrase.Description, Is.EqualTo(PhraseSampleData.Description)); Assert.That(phrase.Positive, Is.EqualTo(PhraseSampleData.Positive)); var connection = new SqlConnection(ConnectionString); var messagesList = await OutboxMessagesHelper.GetOutboxMessages(connection); Assert.That(messagesList.Count, Is.EqualTo(1)); var newUserRegisteredNotification = await GetLastOutboxMessage <PhraseCreatedNotification>(); Assert.That(newUserRegisteredNotification.DomainEvent.MatchId.Value, Is.EqualTo(PhraseSampleData.MatchId)); Assert.That(newUserRegisteredNotification.DomainEvent.TeamId.Value, Is.EqualTo(PhraseSampleData.TeamId)); Assert.That(newUserRegisteredNotification.DomainEvent.CreatedByUserId.Value, Is.EqualTo(PhraseSampleData.CreatedByUserId)); Assert.That(newUserRegisteredNotification.DomainEvent.Description, Is.EqualTo(PhraseSampleData.Description)); Assert.That(newUserRegisteredNotification.DomainEvent.Positive, Is.EqualTo(PhraseSampleData.Positive)); }
public void ShouldGetPhrase() { MockedDatabase <Phrase> database; PhraseModule module; Phrase result; database = new MockedDatabase <Phrase>(false, 1, (t) => new Phrase() { Key = t.ToString(), CountryCode = "EN" }); module = new PhraseModule(NullLogger.Instance, database); result = module.GetPhrase("1", "EN"); Assert.IsNotNull(result); Assert.AreEqual("0", result.Key); }
public void ShouldNotGetPhrasesAndLogError() { MockedDatabase <Phrase> database; PhraseModule module; MemoryLogger logger; logger = new MemoryLogger(); database = new MockedDatabase <Phrase>(true, 3, (t) => new Phrase() { Key = t.ToString(), CountryCode = "EN" }); module = new PhraseModule(logger, database); Assert.ThrowsException <PIODataException>(() => module.GetPhrases("EN")); Assert.IsNotNull(logger.Logs.FirstOrDefault(item => (item.Level == LogLevels.Error) && (item.ComponentName == module.ModuleName))); }
public async Task DownvotePhraseCommand_Test() { var phraseId = await PhraseModule.ExecuteCommandAsync(new CreatePhraseCommand( PhraseSampleData.MatchId, PhraseSampleData.TeamId, PhraseSampleData.CreatedByUserId, PhraseSampleData.Description, PhraseSampleData.Positive)); var userId = Guid.NewGuid(); await PhraseModule.ExecuteCommandAsync(new DownvotePhraseCommand(phraseId, userId)); var phrase = await PhraseModule.ExecuteQueryAsync(new GetPhraseQuery(phraseId)); Assert.That(phrase.Score, Is.EqualTo(0)); }
public void ShouldCreatePhrase() { MockedDatabase <Phrase> database; PhraseModule module; Phrase result; database = new MockedDatabase <Phrase>(false, 1, (t) => new Phrase() { Key = t.ToString(), CountryCode = "EN" }); module = new PhraseModule(NullLogger.Instance, database); result = module.CreatePhrase("1", "EN", "New phrase"); Assert.IsNotNull(result); Assert.AreEqual(Phrase.GenerateID("1", "EN"), result.PhraseID); Assert.AreEqual("1", result.Key); Assert.AreEqual(1, database.InsertedCount); }
public void ShouldGetPhrases() { MockedDatabase <Phrase> database; PhraseModule module; Phrase[] results; database = new MockedDatabase <Phrase>(false, 3, (t) => new Phrase() { Key = t.ToString(), CountryCode = "EN" }); module = new PhraseModule(NullLogger.Instance, database); results = module.GetPhrases("EN"); Assert.IsNotNull(results); Assert.AreEqual(3, results.Length); for (int t = 0; t < 3; t++) { Assert.IsNotNull(results[t]); Assert.AreEqual(t.ToString(), results[t].Key); } }
static void Main(string[] args) { ILogger logger; VersionControlModule versionControlModule; ServiceHostModule pioServiceHostModule; ServiceHostModule taskCallbackServiceHostModule; SchedulerModule schedulerModule; IPIOService pioService; ITaskCallbackService taskCallbackService; IDatabase database; IConnectionFactory connectionFactory; ICommandBuilder commandBuilder; IDatabaseCreator databaseCreator; IPlanetGeneratorModule planetGeneratorModule; IPhraseModule phraseModule; IPlanetModule planetModule; ICellModule cellModule; IBuildingModule buildingModule; IWorkerModule workerModule; IBuilderModule factoryBuilderModule; IStackModule stackModule; IResourceTypeModule resourceTypeModule; IBuildingTypeModule buildingTypeModule; ITaskTypeModule taskTypeModule; IMaterialModule materialModule; IIngredientModule ingredientModule; IProductModule productModule; ITaskModule taskModule; IIdlerModule idlerModule; IResourceCheckerModule resourceCheckerModule; ILocationCheckerModule locationCheckerModule; IProducerModule producerModule; IHarvesterModule harvesterModule; IMoverModule moverModule; ITakerModule takerModule; IStorerModule storerModule; 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.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 PIOVersionControl(database)); if (!versionControlModule.InitializeDatabase(Properties.Settings.Default.DropDatabase)) { return; } phraseModule = new PhraseModule(logger, database); planetModule = new PlanetModule(logger, database); cellModule = new CellModule(logger, database); buildingModule = new BuildingModule(logger, database); workerModule = new WorkerModule(logger, database); stackModule = new StackModule(logger, database); resourceTypeModule = new ResourceTypeModule(logger, database); buildingTypeModule = new BuildingTypeModule(logger, database); taskTypeModule = new TaskTypeModule(logger, database); materialModule = new MaterialModule(logger, database); ingredientModule = new IngredientModule(logger, database); productModule = new ProductModule(logger, database); taskModule = new TaskModule(logger, database); factoryBuilderModule = new BuilderModule(logger, taskModule, workerModule, buildingModule, buildingTypeModule, stackModule, materialModule);; idlerModule = new IdlerModule(logger, taskModule, workerModule); resourceCheckerModule = new ResourceCheckerModule(logger, buildingModule, stackModule, ingredientModule, materialModule); locationCheckerModule = new LocationCheckerModule(logger, workerModule, buildingModule); producerModule = new ProducerModule(logger, taskModule, workerModule, buildingModule, buildingTypeModule, stackModule, ingredientModule, productModule); harvesterModule = new HarvesterModule(logger, taskModule, workerModule, buildingModule, buildingTypeModule, stackModule, productModule); moverModule = new MoverModule(logger, taskModule, workerModule, buildingModule); takerModule = new TakerModule(logger, taskModule, workerModule, buildingModule, stackModule); storerModule = new StorerModule(logger, taskModule, workerModule, buildingModule, stackModule); planetGeneratorModule = new PlanetGeneratorModule(logger, phraseModule, resourceTypeModule, buildingTypeModule, taskTypeModule, materialModule, ingredientModule, productModule, planetModule, cellModule, buildingModule, workerModule); if (!planetGeneratorModule.Generate()) { return; } schedulerModule = new SchedulerModule(logger, taskModule, idlerModule, producerModule, harvesterModule, moverModule, takerModule, storerModule, factoryBuilderModule); schedulerModule.Start(); pioService = new PIOService( logger, phraseModule, planetModule, cellModule, buildingModule, workerModule, stackModule, resourceTypeModule, buildingTypeModule, taskTypeModule, materialModule, ingredientModule, productModule, taskModule, schedulerModule, resourceCheckerModule, locationCheckerModule, idlerModule, producerModule, harvesterModule, moverModule, takerModule, storerModule, factoryBuilderModule); pioServiceHostModule = new ServiceHostModule(logger, pioService); pioServiceHostModule.Start(); taskCallbackService = new TaskCallbackService(logger, schedulerModule); taskCallbackServiceHostModule = new ServiceHostModule(logger, taskCallbackService); taskCallbackServiceHostModule.Start(); WaitHandle.WaitAny(new WaitHandle[] { quitEvent }, -1); taskCallbackServiceHostModule.Stop(); pioServiceHostModule.Stop(); schedulerModule.Stop(); Console.CancelKeyPress -= new ConsoleCancelEventHandler(Console_CancelKeyPress); }