public void ServerListCommandHandler_ThrowsIfBadParams(params string[] args)
        {
            var mockServersRepository = new Mock <IServersRepository>();
            var mockPresenter         = new Mock <IPresenter>();
            var mockLogger            = new Mock <ILogger>();
            var mockServersApi        = new Mock <IServersApi>();

            var serverListCommandHandler = new ServerListCommandHandler(mockServersApi.Object,
                                                                        mockServersRepository.Object,
                                                                        mockPresenter.Object,
                                                                        mockLogger.Object);

            Exception ex = Assert.Throws <PresentableExeption>(() => serverListCommandHandler.Handle(args));

            Assert.Equal("Invalid arguments.", ex.Message);
        }
        public void ServerListCommandHandler_IsHandlingNoParams()
        {
            var mockServersRepository = new Mock <IServersRepository>();
            var mockPresenter         = new Mock <IPresenter>();
            var mockLogger            = new Mock <ILogger>();
            var mockServersApi        = new Mock <IServersApi>();

            IEnumerable <Server> resultEntities = null;
            List <Server>        displayServers = null;

            List <Server> serversList = new List <Server>()
            {
                new Server()
                {
                    Name = "Germany #79", Distance = 157
                },
                new Server()
                {
                    Name = "United Kingdom #26", Distance = 1360
                }
            };

            mockServersApi
            .Setup(x => x.GetServersAsync())
            .Returns(() => Task.FromResult(serversList));

            mockServersRepository
            .Setup(x => x.AddRange(It.IsAny <IEnumerable <Server> >()))
            .Callback <IEnumerable <Server> >(c => resultEntities = c)
            ;

            mockPresenter
            .Setup(x => x.DisplayServers(It.IsAny <List <Server> >()))
            .Callback <List <Server> >(m => displayServers = m);

            var serverListCommandHandler = new ServerListCommandHandler(mockServersApi.Object,
                                                                        mockServersRepository.Object,
                                                                        mockPresenter.Object,
                                                                        mockLogger.Object);
            var args = new string[] { "server_list" };

            serverListCommandHandler.Handle(args);

            Assert.Equal(serversList, resultEntities);
            Assert.Equal(serversList, displayServers);
        }