public async Task ShouldAcceptInvitation()
        {
            // Arrange
            var playerId           = Guid.NewGuid();
            var corporationId      = Guid.NewGuid();
            var expectedInvitation = new CorporationInvitation
            {
                InvitationId  = Guid.NewGuid(),
                PlayerId      = playerId,
                CorporationId = corporationId,
            };

            // Act
            await When(new PlayerCreatedEvent(new Player {
                PlayerId = playerId
            }));
            await When(new CorporationCreatedEvent(new Corporation {
                CorporationId = corporationId, CreatedByPlayerId = playerId
            }, null));
            await When(new PlayerInvitedToCorporationEvent(expectedInvitation.PlayerId, expectedInvitation.CorporationId, expectedInvitation.InvitationId, null));
            await When(new PlayerJoinedCorporationEvent(expectedInvitation.PlayerId, expectedInvitation.CorporationId, null, expectedInvitation.InvitationId));

            // Assert
            using (var dbContext = GetInMemoryDatabase())
            {
                Assert.NotEmpty(dbContext.CorporationInvitations);
                var invitation = dbContext.CorporationInvitations.First();
                Assert.True(invitation.Completed);
                Assert.True(invitation.Accepted);
                var player = dbContext.Players.First();
                Assert.Equal(corporationId, player.CorporationId);
            }
        }
        public async Task ShouldAddCorporationInvitation()
        {
            // Arrange
            var playerId           = Guid.NewGuid();
            var expectedInvitation = new CorporationInvitation
            {
                InvitationId  = Guid.NewGuid(),
                PlayerId      = playerId,
                CorporationId = Guid.NewGuid(),
            };

            // Act
            await When(new PlayerCreatedEvent(new Player {
                PlayerId = playerId
            }));
            await When(new PlayerInvitedToCorporationEvent(expectedInvitation.PlayerId, expectedInvitation.CorporationId, expectedInvitation.InvitationId, null));

            // Assert
            using (var dbContext = GetInMemoryDatabase())
            {
                Assert.NotEmpty(dbContext.CorporationInvitations);
                var invitation = dbContext.CorporationInvitations.First();
                Assert.Equal(expectedInvitation.InvitationId, invitation.InvitationId);
                Assert.Equal(expectedInvitation.PlayerId, invitation.PlayerId);
                Assert.Equal(expectedInvitation.CorporationId, invitation.CorporationId);
            }
        }