public void Setup() { // Remove existing dbs and collections to make sure the test environment is always the same var client = new MongoClient(MongoConnectionString); var server = client.GetServer(); server.Connect(); if (server.GetDatabaseNames().Any(n => n == TestDbName)) { var db = server.GetDatabase(TestDbName); if (db.CollectionExists(MongoDbAggregateStore.AggregateEventCollectionName)) { db.DropCollection(MongoDbAggregateStore.AggregateEventCollectionName); } if (db.CollectionExists(MongoDbUserReadModelStore.GetCollectionNameByType <UserModel>())) { db.DropCollection(MongoDbUserReadModelStore.GetCollectionNameByType <UserModel>()); } } server.Disconnect(); }
public void TestToCreateAndChangeUserViaApi() { var aggregateStore = new MongoDbAggregateStore(MongoConnectionString); var aggregates = new Store.Aggregates(aggregateStore); var readModelStore = new MongoDbUserReadModelStore(MongoConnectionString); var readModelHandler = new UserReadModelHandler(readModelStore); var commands = new UserCommands(aggregates); var queries = new UserQueries(readModelStore); var context = new UserContext(commands, queries, readModelHandler); var uid = Guid.NewGuid(); context.Process(new CreateUser { Id = uid, Name = "Rüdiger", EMail = "rü[email protected]", Password = "******" }); context.Process(new ChangeUser { Id = uid, Name = "Horst Horstmann", EMail = "*****@*****.**", Password = "******" }); var user = context.ExecuteQuery <UserModel>(new GetUser { Id = uid }); user.Name.ShouldBeEquivalentTo("Horst Horstmann"); user.EMail.ShouldBeEquivalentTo("*****@*****.**"); user.Password.ShouldBeEquivalentTo("abc"); }
public void TestToGetAllUsers() { var aggregateStore = new MongoDbAggregateStore(MongoConnectionString); var aggregates = new Store.Aggregates(aggregateStore); var readModelStore = new MongoDbUserReadModelStore(MongoConnectionString); var readModelHandler = new UserReadModelHandler(readModelStore); var commands = new UserCommands(aggregates); var queries = new UserQueries(readModelStore); var context = new UserContext(commands, queries, readModelHandler); for (var i = 0; i < 500; i++) { context.Process(new CreateUser { Id = Guid.NewGuid(), Name = string.Format("User_{0}", i), EMail = string.Format("user_{0}@mail.com", i), Password = (i * 123).ToString(CultureInfo.InvariantCulture) }); } var users = context.ExecuteQuery <List <UserModel> >(new GetAllUsers()); users.Count.ShouldBeEquivalentTo(500); }
public void TestToDeleteUser() { var aggregateStore = new MongoDbAggregateStore(MongoConnectionString); var aggregates = new Store.Aggregates(aggregateStore); var readModelStore = new MongoDbUserReadModelStore(MongoConnectionString); var readModelHandler = new UserReadModelHandler(readModelStore); var commands = new UserCommands(aggregates); var queries = new UserQueries(readModelStore); var context = new UserContext(commands, queries, readModelHandler); var id = Guid.NewGuid(); context.Process(new CreateUser { Id = id, Name = "Testuser", EMail = "*****@*****.**", Password = "******" }); var user = context.ExecuteQuery <UserModel>(new GetUser { Id = id }); user.Should().NotBeNull(); context.Process(new DeleteUser { Id = id }); user = context.ExecuteQuery <UserModel>(new GetUser { Id = id }); user.Should().BeNull(); }
public void TestToCreateTwoUsersAndChangeOneOfThem() { var aggregateStore = new MongoDbAggregateStore(MongoConnectionString); var aggregates = new Store.Aggregates(aggregateStore); var readModelStore = new MongoDbUserReadModelStore(MongoConnectionString); var readModelHandler = new UserReadModelHandler(readModelStore); var commands = new UserCommands(aggregates); var queries = new UserQueries(readModelStore); var context = new UserContext(commands, queries, readModelHandler); var uid1 = Guid.NewGuid(); var uid2 = Guid.NewGuid(); context.Process(new CreateUser { Id = uid1, Name = "Horst", EMail = "*****@*****.**", Password = "******" }); context.Process(new CreateUser { Id = uid2, Name = "Egon", EMail = "*****@*****.**", Password = "******" }); context.Process(new ChangeUser { Id = uid2, Name = "Egon Müller", EMail = "*****@*****.**", Password = "******" }); var user = context.ExecuteQuery <UserModel>(new GetUser { Id = uid2 }); user.Name.ShouldBeEquivalentTo("Egon Müller"); user.EMail.ShouldBeEquivalentTo("*****@*****.**"); user.Password.ShouldBeEquivalentTo("123abc"); }