public void ConnectControlViewModel_OnServerOnNetworkStateChanged_GivenLocalhostAndIsNotConnecting_ResultServerDisconnected()
        {
            //------------Setup for test--------------------------
            _serverMock.Setup(server => server.IsConnected).Returns(false);
            var args = new Mock <INetworkStateChangedEventArgs>();

            args.Setup(eventArgs => eventArgs.State).Returns(ConnectionNetworkState.Disconnected);
            var localhost = new Mock <IServer>();

            localhost.Setup(server => server.IsConnected).Returns(false);
            localhost.Setup(server => server.DisplayName).Returns("localhost (Connected)");
            var connectControlViewModel = new ConnectControlViewModel(_serverMock.Object, new EventAggregator());
            //------------Execute Test---------------------------
            var popupController = new Mock <IPopupController>();

            popupController.Setup(
                controller =>
                controller.Show(It.IsAny <string>(), It.IsAny <string>(), MessageBoxButton.OK, MessageBoxImage.Warning,
                                It.IsAny <string>(), It.IsAny <bool>(), It.IsAny <bool>(), It.IsAny <bool>(), It.IsAny <bool>(),
                                It.IsAny <bool>(), It.IsAny <bool>()));
            var privateObject = new Testing.PrivateObject(connectControlViewModel);

            privateObject.SetProperty("IsConnecting", false);
            privateObject.Invoke("OnServerOnNetworkStateChanged", args.Object, _serverMock.Object);
            //------------Assert Results-------------------------
            Assert.IsFalse(connectControlViewModel.IsConnected);
        }
        public void ConnectControlViewModel_LoadServers_GivenSelectedServer_ResultIsSelectedServer()
        {
            //------------Setup for test--------------------------
            _serverMock.Setup(server => server.IsConnected).Returns(true);
            var store = new Mock <IServer>();

            store.Setup(server => server.DisplayName).Returns("WarewolfStore");

            var mockEnvironmentConnection = SetupMockConnection();

            var intergration = new Mock <IServer>();

            intergration.Setup(server => server.DisplayName).Returns("RemoteIntergration");
            var intergrationId = Guid.NewGuid();

            intergration.Setup(server => server.EnvironmentID).Returns(intergrationId);
            intergration.SetupGet(it => it.Connection).Returns(mockEnvironmentConnection.Object);


            var connectControlViewModel = new ConnectControlViewModel(_serverMock.Object, new EventAggregator());
            //------------Execute Test---------------------------
            var privateObject = new Testing.PrivateObject(connectControlViewModel);

            privateObject.SetField("_selectedId", intergrationId);
            connectControlViewModel.LoadServers();
            connectControlViewModel.SelectedConnection = intergration.Object;
            //------------Assert Results-------------------------
            Assert.AreEqual(intergrationId, connectControlViewModel.SelectedConnection.EnvironmentID);
        }
        public void ConnectControlViewModel_ConnectOrDisconnect_GivenServerIsConnectAndServerHasNotLoaded()
        {
            //------------Setup for test--------------------------
            _serverMock.Setup(server1 => server1.IsConnected).Returns(true);
            //------------Execute Test---------------------------
            var privateObject = new Testing.PrivateObject(_target);

            privateObject.Invoke("ConnectOrDisconnectAsync");
            //------------Assert Results-------------------------
            Assert.IsFalse(_target.IsConnecting);
        }
        public void ConnectControlViewModel_ConnectOrDisconnect_GivenServerNull()
        {
            //------------Setup for test--------------------------
            var connectControlViewModel = new ConnectControlViewModel(_serverMock.Object, new EventAggregator());

            connectControlViewModel.SelectedConnection = null;
            //------------Execute Test---------------------------
            var privateObject = new Testing.PrivateObject(_target);

            privateObject.SetField("_selectedConnection", null);
            privateObject.Invoke("ConnectOrDisconnectAsync");
            //------------Assert Results-------------------------
            Assert.IsFalse(_target.IsConnecting);
        }
        public void ConnectControlViewModel_CheckVersionConflict_ThrowsException()
        {
            _serverMock.Setup(server1 => server1.IsConnected).Returns(true);
            _serverMock.Setup(server1 => server1.GetServerVersion()).Throws(new Exception());
            var popupController = new Mock <IPopupController>();

            popupController.Setup(controller => controller.ShowConnectServerVersionConflict(It.IsAny <string>(), It.IsAny <string>()));
            var connectControlViewModel = new ConnectControlViewModel(_serverMock.Object, new EventAggregator(), popupController.Object);
            //------------Execute Test---------------------------
            var privateObject = new Testing.PrivateObject(connectControlViewModel);

            privateObject.Invoke("CheckVersionConflictAsync");
            //------------Assert Results-------------------------
        }
        public void ConnectControlViewModel_CheckVersionConflict_GivenNoVersionConflicts()
        {
            //------------Setup for test--------------------------
            _serverMock.Setup(server1 => server1.IsConnected).Returns(true);
            _serverMock.Setup(server1 => server1.GetServerVersion()).Returns("0.0.0.5");
            var popupController = new Mock <IPopupController>();

            popupController.Setup(controller => controller.ShowConnectServerVersionConflict(It.IsAny <string>(), It.IsAny <string>()));
            var connectControlViewModel = new ConnectControlViewModel(_serverMock.Object, new EventAggregator(), popupController.Object);
            //------------Execute Test---------------------------
            var privateObject = new Testing.PrivateObject(connectControlViewModel);

            privateObject.Invoke("CheckVersionConflictAsync");
            //------------Assert Results-------------------------
            popupController.Verify(controller => controller.ShowConnectServerVersionConflict(It.IsAny <string>(), It.IsAny <string>()), Times.AtLeastOnce);
        }
        public void ConnectControlViewModel_UpdateRepositoryOnServerSaved_GivenEmptyGuid_Result()
        {
            //------------Setup for test--------------------------
            _serverMock.Setup(server => server.IsConnected).Returns(true);
            var args = new Mock <INetworkStateChangedEventArgs>();

            args.Setup(eventArgs => eventArgs.State).Returns(ConnectionNetworkState.Disconnected);
            var localhost = new Mock <IServer>();

            localhost.Setup(server => server.IsConnected).Returns(false);
            localhost.Setup(server => server.EnvironmentID).Returns(new Guid());
            localhost.Setup(server => server.DisplayName).Returns("localhost (Connected)");
            var connectControlViewModel = new ConnectControlViewModel(_serverMock.Object, new EventAggregator());
            //------------Execute Test---------------------------
            var privateObject = new Testing.PrivateObject(connectControlViewModel);

            privateObject.SetProperty("IsConnecting", false);
            privateObject.Invoke("UpdateRepositoryOnServerSaved", Guid.Empty, false);
            //------------Assert Results-------------------------
        }
        public void ConnectControlViewModel_UpdateRepositoryOnServerSaved_GivenLocalhost_Result()
        {
            //------------Setup for test--------------------------
            var store = new Mock <IServer>();

            store.Setup(server => server.DisplayName).Returns("WarewolfStore");
            var intergration = new Mock <IServer>();

            intergration.Setup(server => server.DisplayName).Returns("RemoteIntergration");
            intergration.Setup(server => server.IsConnected).Returns(true);
            var intergrationId = Guid.NewGuid();

            intergration.Setup(server => server.EnvironmentID).Returns(intergrationId);

            var connectControlViewModel = new ConnectControlViewModel(_serverMock.Object, new EventAggregator());
            //------------Execute Test---------------------------
            var privateObject = new Testing.PrivateObject(connectControlViewModel);

            privateObject.SetProperty("IsConnecting", false);
            privateObject.Invoke("UpdateRepositoryOnServerSaved", intergrationId, false);
            //------------Assert Results-------------------------
            Assert.IsNotNull(connectControlViewModel.SelectedConnection);
        }
        public void ConnectControlViewModel_UpdateRepositoryOnServerSaved()
        {
            var serverGuid        = Guid.NewGuid();
            var uri               = new Uri("http://bravo.com/");
            var serverDisplayName = "johnnyBravoServer";

            var mockShellViewModel        = new Mock <IShellViewModel>();
            var mockExplorerRepository    = new Mock <IExplorerRepository>();
            var mockEnvironmentConnection = new Mock <IEnvironmentConnection>();

            mockEnvironmentConnection.Setup(a => a.AppServerUri).Returns(uri);
            mockEnvironmentConnection.Setup(a => a.UserName).Returns("johnny");
            mockEnvironmentConnection.Setup(a => a.Password).Returns("bravo");
            mockEnvironmentConnection.Setup(a => a.WebServerUri).Returns(uri);
            mockEnvironmentConnection.Setup(a => a.ID).Returns(serverGuid);
            mockEnvironmentConnection.Setup(a => a.IsConnected).Returns(false);
            mockEnvironmentConnection.SetupProperty(a => a.DisplayName);
            mockEnvironmentConnection.Object.DisplayName = serverDisplayName;

            mockExplorerRepository.Setup(
                repository => repository.CreateFolder(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <Guid>()));
            mockExplorerRepository.Setup(
                repository => repository.Rename(It.IsAny <IExplorerItemViewModel>(), It.IsAny <string>())).Returns(true);

            var server = new ServerForTesting(mockExplorerRepository);

            server.EnvironmentID = serverGuid;
            server.ResourceName  = "mr_J_bravo";
            server.Connection    = mockEnvironmentConnection.Object;
            mockShellViewModel.Setup(a => a.ActiveServer).Returns(server);
            mockShellViewModel.Setup(model => model.LocalhostServer).Returns(server);

            CustomContainer.Register <IServer>(server);
            CustomContainer.Register(mockShellViewModel.Object);

            var environmentModel = new Mock <IServer>();

            environmentModel.SetupGet(a => a.Connection).Returns(mockEnvironmentConnection.Object);
            environmentModel.SetupGet(a => a.IsConnected).Returns(true);

            var e1   = new Server(serverGuid, mockEnvironmentConnection.Object);
            var repo = new TestServerRespository(environmentModel.Object, e1)
            {
                ActiveServer = e1
            };
            var environmentRepository = new ServerRepository(repo);

            Assert.IsNotNull(environmentRepository);

            var passed = false;

            mockShellViewModel.Setup(a => a.OpenResource(It.IsAny <Guid>(), It.IsAny <Guid>(), It.IsAny <IServer>()))
            .Callback((Guid id1, Guid id2, IServer a) =>
            {
                passed = a.EnvironmentID == serverGuid;
            });
            //------------Setup for test--------------------------
            var connectControlViewModel = new ConnectControlViewModel(server, new EventAggregator());
            var privateObject           = new Testing.PrivateObject(connectControlViewModel);

            privateObject.SetProperty("IsConnecting", false);
            privateObject.Invoke("UpdateRepositoryOnServerSaved", serverGuid, false);
            //------------Execute Test---------------------------

            //------------Assert Results-------------------------
            Assert.AreEqual("johnnyBravoServer", mockEnvironmentConnection.Object.DisplayName);
        }