public async Task Consume_RoomDoesExist_DoesNotCreateAnother() { var @event = new RoomCreatedEvent() { ClubId = Guid.NewGuid(), RoomId = Guid.NewGuid() }; using (var context = _factory.CreateContext()) { context.Clubs.Add(new Club() { ClubId = @event.ClubId }); context.Rooms.Add(new Room() { ClubId = @event.ClubId, RoomId = @event.RoomId }); context.SaveChanges(); } await SendEvent(@event); using (var context = _factory.CreateContext()) { Assert.That(context.Rooms.Count(), Is.EqualTo(1)); } }
public void Execute(CreateRoomCommand command) { var room = new Room(); if (_repo.RoomExists(command.RoomName)) { throw new FunctionalException(new FunctionalError("US003.1", $"A room with the name '{command.RoomName}' already exists")); } room.Create(command.RoomName, command.GameID); _repo.Create(room); room.Join(command.PlayerID, command.Colour); _repo.Save(room); var createdEvent = new RoomCreatedEvent() { RoomName = room.Name, GameID = room.GameID }; _publisher.Publish(createdEvent); var joinedEvent = new PlayerJoinedRoomEvent() { RoomName = room.Name, PlayerID = command.PlayerID, Colour = command.Colour }; _publisher.Publish(joinedEvent); }
public static RoomCreated FromDomainEvent(RoomCreatedEvent domainEvent) { return(new RoomCreated { HostPlayerId = domainEvent.HostPlayerId.ToString(), RoomCode = domainEvent.RoomCode.ToString(), RoomId = domainEvent.RoomId.ToString(), }); }
public async Task Consume_ClubDoesNotExist_DoesNotAddRoom() { var @event = new RoomCreatedEvent() { ClubId = Guid.NewGuid(), RoomId = Guid.NewGuid(), }; await SendEvent(@event); using (var context = _factory.CreateContext()) { Assert.That(context.Clubs.Count(), Is.EqualTo(0)); Assert.That(context.Rooms.Count(), Is.EqualTo(0)); } }
public Room StartGame(CreateRoomCommand command) { var room = new Room() { Name = command.RoomName }; _repository.Insert(room); // (optional) throw RoomCreatedEvent var roomCreatedEvent = new RoomCreatedEvent() { GUID = Guid.NewGuid().ToString(), RoutingKey = "Minor.GameRooms", TimeStamp = DateTime.UtcNow }; _publisher.Publish(roomCreatedEvent); return(room); }
public void RoomCreatedHandler(RoomCreatedEvent rce) { }