public async Task Processor_Go_Should_Call_Into_The_BotProcessingFactory_For_Every_Bot_Provided()
        {
            // Arrange
            var botProcessingFactory = new Mock <IBotProcessingFactory>();
            var processor            = new Processor.Middleware.Processor(botProcessingFactory.Object);
            var arena = new ArenaDto {
                Width = 4, Height = 6
            };
            var bot1 = new BotDto {
                Id = Guid.NewGuid()
            };
            var bot2 = new BotDto {
                Id = Guid.NewGuid()
            };
            var bot3 = new BotDto {
                Id = Guid.NewGuid()
            };
            var bots = new List <BotDto>(new[] { bot1, bot2, bot3 });
            var processingContext = ProcessingContext.Build(arena, bots);

            // Act
            await processor.Go(processingContext);

            // Assert
            botProcessingFactory.Verify(x => x.Process(It.IsAny <BotDto>(), It.IsAny <ProcessingContext>()), Times.Exactly(3));
        }
    public async Task Processor_Go_Should_Not_Call_Into_The_BotProcessingFactory_If_No_Bots_Are_Provided()
    {
        // Arrange
        var botProcessingFactory = new Mock <IBotProcessingFactory>();
        var processor            = new Processor.Middleware.Processor(botProcessingFactory.Object);
        var arena             = new ArenaDto(4, 6);
        var bots              = new List <BotDto>();
        var processingContext = ProcessingContext.Build(arena, bots);

        // Act
        await processor.Go(processingContext);

        // Assert
        botProcessingFactory.Verify(x => x.Process(It.IsAny <BotDto>(), It.IsAny <ProcessingContext>()), Times.Never);
    }