Inheritance: IConnectControlSingleton
 public void ConnectControlSingleton_Constructor_ServerProviderReturnsNoEnvironment_WillHaveAtLeastOneEnvironmentLoaded()
 {
     var studioResourceRepository = new Mock<IStudioResourceRepository>();
     var asyncWorker = new Mock<IAsyncWorker>();
     var serverProvider = new Mock<IEnvironmentModelProvider>();
     var environmentRepository = new Mock<IEnvironmentRepository>();
     List<IEnvironmentModel> environmentModels = new List<IEnvironmentModel>();
     serverProvider.Setup(s => s.Load()).Returns(environmentModels);
     //------------Execute Test---------------------------
     IConnectControlSingleton connectControlSingleton = new ConnectControlSingleton(studioResourceRepository.Object, asyncWorker.Object, serverProvider.Object, environmentRepository.Object);
     //------------Assert Results-------------------------
     Assert.IsNotNull(connectControlSingleton);
     Assert.IsNotNull(connectControlSingleton.Servers);
     Assert.AreEqual(1, connectControlSingleton.Servers.Count);
     Assert.AreEqual(ConnectControlSingleton.NewServerText, connectControlSingleton.Servers[0].DisplayName);
 }
 public void ConnectControlSingleton_SetConnectionState_WhenThereIsASubscriber_RaisesAnEvent()
 {
     var studioResourceRepository = new Mock<IStudioResourceRepository>();
     var asyncWorker = new Mock<IAsyncWorker>();
     var serverProvider = new Mock<IEnvironmentModelProvider>();
     List<IEnvironmentModel> environmentModels = new List<IEnvironmentModel>
         {
             new TestEnvironmentModel(new Mock<IEventAggregator>().Object, Guid.NewGuid(), CreateConnection(false).Object, new Mock<IResourceRepository>().Object, false)
         };
     serverProvider.Setup(s => s.Load()).Returns(environmentModels);
     var environmentRepository = new Mock<IEnvironmentRepository>();
     var expectedServerId = Guid.NewGuid();
     var actualId = Guid.Empty;
     const ConnectionEnumerations.ConnectedState expectedConnectedState = ConnectionEnumerations.ConnectedState.Busy;
     ConnectionEnumerations.ConnectedState actualConnectedState = ConnectionEnumerations.ConnectedState.Disconnected;
     IConnectControlSingleton connectControlSingleton = new ConnectControlSingleton(studioResourceRepository.Object, asyncWorker.Object, serverProvider.Object, environmentRepository.Object);
     connectControlSingleton.ConnectedStatusChanged += (s, a) =>
     {
         actualId = a.EnvironmentId;
         actualConnectedState = a.ConnectedStatus;
     };
     //------------Execute Test---------------------------
     connectControlSingleton.SetConnectionState(expectedServerId, expectedConnectedState);
     //------------Assert Results-------------------------
     Assert.AreEqual(expectedServerId, actualId);
     Assert.AreEqual(expectedConnectedState, actualConnectedState);
 }
        public void ConnectControlSingleton_ResourcesLoadedHandler_ServerIdIsNotFound_RaisesConnectedEventWithDisconnectedState()
        {
            var studioResourceRepository = new Mock<IStudioResourceRepository>();
            var asyncWorker = new Mock<IAsyncWorker>();
            var serverProvider = new Mock<IEnvironmentModelProvider>();
            var environmentRepository = new Mock<IEnvironmentRepository>();
            var serverId = Guid.NewGuid();
            List<IEnvironmentModel> environmentModels = new List<IEnvironmentModel>
                {
                    new TestEnvironmentModel(new Mock<IEventAggregator>().Object, serverId, CreateConnection(false).Object, new Mock<IResourceRepository>().Object, false)
                };
            serverProvider.Setup(s => s.Load()).Returns(environmentModels);
            var connectControlSingleton = new ConnectControlSingleton(studioResourceRepository.Object, asyncWorker.Object, serverProvider.Object, environmentRepository.Object);

            ConnectionEnumerations.ConnectedState actualConnectedState = ConnectionEnumerations.ConnectedState.Busy;

            connectControlSingleton.ConnectedStatusChanged += (sender, arg) =>
            {
                actualConnectedState = arg.ConnectedStatus;
            };
            //------------Execute Test---------------------------
            connectControlSingleton.ResourcesLoadedHandler(Guid.NewGuid());
            //------------Assert Results-------------------------
            Assert.AreEqual(ConnectionEnumerations.ConnectedState.Disconnected, actualConnectedState);
        }
        public void ConnectControlSingleton_Refresh_SelectedServerIsConnected_StudioRepositoryLoadIsCalled()
        {
            var studioResourceRepository = new Mock<IStudioResourceRepository>();
            studioResourceRepository.Setup(s => s.Disconnect(It.IsAny<Guid>()))
                                    .Verifiable();
            var asyncWorker = new Mock<IAsyncWorker>();
            var serverProvider = new Mock<IEnvironmentModelProvider>();
            var environmentRepository = new Mock<IEnvironmentRepository>();
            List<IEnvironmentModel> environmentModels = new List<IEnvironmentModel>
                {
                    new TestEnvironmentModel(new Mock<IEventAggregator>().Object, Guid.NewGuid(), CreateConnection(false).Object, new Mock<IResourceRepository>().Object, false)
                };
            serverProvider.Setup(s => s.Load()).Returns(environmentModels);
            IConnectControlSingleton connectControlSingleton = new ConnectControlSingleton(studioResourceRepository.Object, asyncWorker.Object, serverProvider.Object, environmentRepository.Object);
            var selectedServer = connectControlSingleton.Servers[1];
            selectedServer.IsConnected = true;

            ConnectionEnumerations.ConnectedState actualConnectedState = ConnectionEnumerations.ConnectedState.Connected;
            bool actualDoCallback = false;
            Guid environmentId = Guid.Empty;
            var selectedId = selectedServer.EnvironmentModel.ID;
            connectControlSingleton.ConnectedStatusChanged += (sender, arg) =>
            {
                actualConnectedState = arg.ConnectedStatus;
                actualDoCallback = arg.DoCallback;
                environmentId = arg.EnvironmentId;
            };
            //------------Execute Test---------------------------
            connectControlSingleton.Refresh(selectedId);
            //------------Assert Results-------------------------
            Assert.IsNotNull(connectControlSingleton);
            Assert.AreEqual(ConnectionEnumerations.ConnectedState.Busy, actualConnectedState);
            Assert.IsFalse(actualDoCallback);
            Assert.AreEqual(selectedId, environmentId);
            studioResourceRepository.Verify(s => s.Load(It.IsAny<Guid>(), It.IsAny<IAsyncWorker>(), It.IsAny<Action<Guid>>()), Times.Once());
        }
        public void ConnectControlSingleton_Remove_SelectedServerIsConnected_StudioRepositoryDisconnectIsCalled()
        {
            var studioResourceRepository = new Mock<IStudioResourceRepository>();
            studioResourceRepository.Setup(s => s.Disconnect(It.IsAny<Guid>()))
                                      .Verifiable();
            studioResourceRepository.Setup(s => s.RemoveEnvironment(It.IsAny<Guid>()))
                                    .Verifiable();
            var asyncWorker = new Mock<IAsyncWorker>();
            var serverProvider = new Mock<IEnvironmentModelProvider>();
            var environmentRepository = new Mock<IEnvironmentRepository>();
            List<IEnvironmentModel> environmentModels = new List<IEnvironmentModel>
                {
                    new TestEnvironmentModel(new Mock<IEventAggregator>().Object, Guid.NewGuid(), CreateConnection(false).Object, new Mock<IResourceRepository>().Object, false)
                };
            serverProvider.Setup(s => s.Load()).Returns(environmentModels);
            IConnectControlSingleton connectControlSingleton = new ConnectControlSingleton(studioResourceRepository.Object, asyncWorker.Object, serverProvider.Object, environmentRepository.Object);
            var selectedServer = connectControlSingleton.Servers[1];
            selectedServer.IsConnected = true;

            Guid environmentId = Guid.NewGuid();
            var eventRaised = false;
            var selectedId = selectedServer.EnvironmentModel.ID;
            connectControlSingleton.ConnectedServerChanged += (sender, arg) =>
            {
                environmentId = arg.EnvironmentId;
                eventRaised = true;
            };
            //------------Execute Test---------------------------
            connectControlSingleton.Remove(selectedId);
            //------------Assert Results-------------------------
            Assert.IsNotNull(connectControlSingleton);
            Assert.AreEqual(Guid.Empty, environmentId);
            Assert.IsTrue(eventRaised);
            studioResourceRepository.Verify(s => s.Disconnect(It.IsAny<Guid>()), Times.Once());
            studioResourceRepository.Verify(s => s.RemoveEnvironment(It.IsAny<Guid>()), Times.Once());
        }
 public void ConnectControlSingleton_EditConnection_ServerUriIsChangedWhenItsConnected_StudioResourceRepositoryDisconnectIsCalled()
 {
     var studioResourceRepository = new Mock<IStudioResourceRepository>();
     studioResourceRepository.Setup(s => s.Disconnect(It.IsAny<Guid>())).Verifiable();
     var asyncWorker = new Mock<IAsyncWorker>();
     var serverProvider = new Mock<IEnvironmentModelProvider>();
     var server1 = Guid.NewGuid();
     var server2 = Guid.NewGuid();
     var environmentModels = new List<IEnvironmentModel>
         {
             new TestEnvironmentModel(new Mock<IEventAggregator>().Object, server1, CreateConnection(true).Object, new Mock<IResourceRepository>().Object, false),
             new TestEnvironmentModel(new Mock<IEventAggregator>().Object, server2, CreateConnection(false).Object, new Mock<IResourceRepository>().Object, false)
         };
     var environmentRepository = new Mock<IEnvironmentRepository>();
     var environments = new List<IEnvironmentModel>
         {
             new TestEnvironmentModel(new Mock<IEventAggregator>().Object, server1, CreateConnection(false, new Uri("http://azureprivatecloud/machine1:3142")).Object, new Mock<IResourceRepository>().Object, false),
             new TestEnvironmentModel(new Mock<IEventAggregator>().Object, server2, CreateConnection(false, new Uri("http://azureprivatecloud/machine2:3142")).Object, new Mock<IResourceRepository>().Object, false)
         };
     environmentRepository.Setup(e => e.All()).Returns(environments);
     serverProvider.Setup(s => s.Load()).Returns(environmentModels);
     IConnectControlSingleton connectControlSingleton = new ConnectControlSingleton(studioResourceRepository.Object, asyncWorker.Object, serverProvider.Object, environmentRepository.Object);
     var selectedIndex = -1;
     //------------Execute Test---------------------------
     connectControlSingleton.EditConnection(1, index =>
     {
         selectedIndex = index;
     });
     //------------Assert Results-------------------------
     Assert.IsNotNull(connectControlSingleton);
     Assert.AreEqual(1, selectedIndex);
     studioResourceRepository.Verify(s => s.Disconnect(It.IsAny<Guid>()), Times.Once());
 }
 public void ConnectControlSingleton_EditConnection_SelectedServerIndexIsOutOfRange_StudioResourceRepositoryDisconnectIsNotCalled()
 {
     var studioResourceRepository = new Mock<IStudioResourceRepository>();
     studioResourceRepository.Setup(s => s.Disconnect(It.IsAny<Guid>())).Verifiable();
     var asyncWorker = new Mock<IAsyncWorker>();
     var serverProvider = new Mock<IEnvironmentModelProvider>();
     var environmentRepository = new Mock<IEnvironmentRepository>();
     var environmentModels = new List<IEnvironmentModel>
         {
             new TestEnvironmentModel(new Mock<IEventAggregator>().Object, Guid.NewGuid(), CreateConnection(true).Object, new Mock<IResourceRepository>().Object, false),
             new TestEnvironmentModel(new Mock<IEventAggregator>().Object, Guid.NewGuid(), CreateConnection(false).Object, new Mock<IResourceRepository>().Object, false)
         };
     serverProvider.Setup(s => s.Load()).Returns(environmentModels);
     IConnectControlSingleton connectControlSingleton = new ConnectControlSingleton(studioResourceRepository.Object, asyncWorker.Object, serverProvider.Object, environmentRepository.Object);
     var wasCallbackInvoked = false;
     //------------Execute Test---------------------------
     connectControlSingleton.EditConnection(99, index =>
     {
         wasCallbackInvoked = true;
     });
     connectControlSingleton.EditConnection(-1, index =>
     {
         wasCallbackInvoked = true;
     });
     //------------Assert Results-------------------------
     Assert.IsNotNull(connectControlSingleton);
     Assert.IsFalse(wasCallbackInvoked);
     studioResourceRepository.Verify(s => s.Disconnect(It.IsAny<Guid>()), Times.Never());
 }
 public void ConnectControlSingleton_EditConnection_AuthNotChangedOnTheDialog_StudioResourceRepositoryLoadIsNotCalled()
 {
     var studioResourceRepository = new Mock<IStudioResourceRepository>();
     studioResourceRepository.Setup(s => s.Load(It.IsAny<Guid>(), It.IsAny<IAsyncWorker>(), It.IsAny<Action<Guid>>()))
                             .Verifiable();
     var asyncWorker = new Mock<IAsyncWorker>();
     var serverProvider = new Mock<IEnvironmentModelProvider>();
     var server1 = Guid.NewGuid();
     var server2 = Guid.NewGuid();
     var environmentModels = new List<IEnvironmentModel>
         {
             new TestEnvironmentModel(new Mock<IEventAggregator>().Object, server1, CreateConnection(false,new Uri("http://localhost:3142/dsf"),AuthenticationType.Public).Object, new Mock<IResourceRepository>().Object, false),
             new TestEnvironmentModel(new Mock<IEventAggregator>().Object, server2, CreateConnection(false,new Uri("http://localhost:3142/dsf"),AuthenticationType.Public).Object, new Mock<IResourceRepository>().Object, false)
         };
     var environmentRepository = new Mock<IEnvironmentRepository>();
     var environments = new List<IEnvironmentModel>
         {
             new TestEnvironmentModel(new Mock<IEventAggregator>().Object, server1, CreateConnection(false, new Uri("http://localhost:3142/dsf"),AuthenticationType.Public).Object, new Mock<IResourceRepository>().Object, false),
             new TestEnvironmentModel(new Mock<IEventAggregator>().Object, server2, CreateConnection(false, new Uri("http://localhost:3142/dsf"),AuthenticationType.Public).Object, new Mock<IResourceRepository>().Object, false)
         };
     environmentRepository.Setup(e => e.All()).Returns(environments);
     serverProvider.Setup(s => s.Load()).Returns(environmentModels);
     IConnectControlSingleton connectControlSingleton = new ConnectControlSingleton(studioResourceRepository.Object, asyncWorker.Object, serverProvider.Object, environmentRepository.Object);
     connectControlSingleton.ConnectedStatusChanged += (sender, arg) =>
     { };
     //------------Execute Test---------------------------
     connectControlSingleton.EditConnection(1, index =>
     { });
     //------------Assert Results-------------------------
 
     studioResourceRepository.Verify(s => s.Load(It.IsAny<Guid>(), It.IsAny<IAsyncWorker>(), It.IsAny<Action<Guid>>()), Times.Never());
 }
 public void ConnectControlSingleton_EditConnection_AuthChangedOnTheDialog_StudioResourceRepositoryLoadIsCalled()
 {
     var studioResourceRepository = new Mock<IStudioResourceRepository>();
     studioResourceRepository.Setup(s => s.Load(It.IsAny<Guid>(), It.IsAny<IAsyncWorker>(), It.IsAny<Action<Guid>>()))
                             .Verifiable();
     var asyncWorker = new Mock<IAsyncWorker>();
     var serverProvider = new Mock<IEnvironmentModelProvider>();
     var server1 = Guid.NewGuid();
     var server2 = Guid.NewGuid();
     var environmentModels = new List<IEnvironmentModel>
         {
             new TestEnvironmentModel(new Mock<IEventAggregator>().Object, server1, CreateConnection(false).Object, new Mock<IResourceRepository>().Object, false),
             new TestEnvironmentModel(new Mock<IEventAggregator>().Object, server2, CreateConnection(false).Object, new Mock<IResourceRepository>().Object, false)
         };
     var environmentRepository = new Mock<IEnvironmentRepository>();
     var environments = new List<IEnvironmentModel>
         {
             new TestEnvironmentModel(new Mock<IEventAggregator>().Object, server1, CreateConnection(false, new Uri("http://localhost:3142/dsf"),AuthenticationType.Anonymous).Object, new Mock<IResourceRepository>().Object, false),
             new TestEnvironmentModel(new Mock<IEventAggregator>().Object, server2, CreateConnection(false, new Uri("http://localhost:3142/dsf"),AuthenticationType.Public).Object, new Mock<IResourceRepository>().Object, false)
         };
     environmentRepository.Setup(e => e.All()).Returns(environments);
     serverProvider.Setup(s => s.Load()).Returns(environmentModels);
     IConnectControlSingleton connectControlSingleton = new ConnectControlSingleton(studioResourceRepository.Object, asyncWorker.Object, serverProvider.Object, environmentRepository.Object);
     var selectedIndex = -1;
     ConnectionEnumerations.ConnectedState actualConnectedState = ConnectionEnumerations.ConnectedState.Disconnected;
     bool actualDoCallback = false;
     Guid environmentId = Guid.Empty;
     connectControlSingleton.ConnectedStatusChanged += (sender, arg) =>
     {
         actualConnectedState = arg.ConnectedStatus;
         actualDoCallback = arg.DoCallback;
         environmentId = arg.EnvironmentId;
     };
     //------------Execute Test---------------------------
     connectControlSingleton.EditConnection(1, index =>
     {
         selectedIndex = index;
     });
     //------------Assert Results-------------------------
     Assert.IsNotNull(connectControlSingleton);
     Assert.AreEqual(ConnectionEnumerations.ConnectedState.Busy, actualConnectedState);
     Assert.IsFalse(actualDoCallback);
     Assert.AreEqual(server1, environmentId);
     Assert.AreEqual(1, selectedIndex);
     studioResourceRepository.Verify(s => s.Load(It.IsAny<Guid>(), It.IsAny<IAsyncWorker>(), It.IsAny<Action<Guid>>()), Times.Once());
 }
 public void ConnectControlSingleton_EditConnection_ServerUriIsNotChangedOnTheDialog_StudioResourceRepositoryLoadIsNotCalled()
 {
     var studioResourceRepository = new Mock<IStudioResourceRepository>();
     studioResourceRepository.Setup(s => s.Load(It.IsAny<Guid>(), It.IsAny<IAsyncWorker>(), It.IsAny<Action<Guid>>()))
                             .Verifiable();
     var asyncWorker = new Mock<IAsyncWorker>();
     var serverProvider = new Mock<IEnvironmentModelProvider>();
     var environmentModels = new List<IEnvironmentModel>
         {
             new TestEnvironmentModel(new Mock<IEventAggregator>().Object, Guid.NewGuid(), CreateConnection(true).Object, new Mock<IResourceRepository>().Object, false),
             new TestEnvironmentModel(new Mock<IEventAggregator>().Object, Guid.NewGuid(), CreateConnection(false).Object, new Mock<IResourceRepository>().Object, false)
         };
     var environmentRepository = new Mock<IEnvironmentRepository>();
     environmentRepository.Setup(e => e.All()).Returns(environmentModels);
     serverProvider.Setup(s => s.Load()).Returns(environmentModels);
     IConnectControlSingleton connectControlSingleton = new ConnectControlSingleton(studioResourceRepository.Object, asyncWorker.Object, serverProvider.Object, environmentRepository.Object);
     var selectedIndex = -1;
     //------------Execute Test---------------------------
     connectControlSingleton.EditConnection(1, index =>
         {
             selectedIndex = index;
         });
     //------------Assert Results-------------------------
     Assert.IsNotNull(connectControlSingleton);
     Assert.AreEqual(1, selectedIndex);
     studioResourceRepository.Verify(s => s.Load(It.IsAny<Guid>(), It.IsAny<IAsyncWorker>(), It.IsAny<Action<Guid>>()), Times.Never());
 }
        public void ConnectControlSingleton_ToggleConnection_SelectedServerIndexIsOutofRange_StudioRepositoryLoadIsNotCalled()
        {
            var studioResourceRepository = new Mock<IStudioResourceRepository>();
            studioResourceRepository.Setup(s => s.Load(It.IsAny<Guid>(), It.IsAny<IAsyncWorker>(), It.IsAny<Action<Guid>>()))
                                    .Verifiable();
            var asyncWorker = new Mock<IAsyncWorker>();
            var serverProvider = new Mock<IEnvironmentModelProvider>();
            var environmentRepository = new Mock<IEnvironmentRepository>();
            List<IEnvironmentModel> environmentModels = new List<IEnvironmentModel>
                {
                    new TestEnvironmentModel(new Mock<IEventAggregator>().Object, Guid.NewGuid(), CreateConnection(false).Object, new Mock<IResourceRepository>().Object, false)
                };
            serverProvider.Setup(s => s.Load()).Returns(environmentModels);
            IConnectControlSingleton connectControlSingleton = new ConnectControlSingleton(studioResourceRepository.Object, asyncWorker.Object, serverProvider.Object, environmentRepository.Object);
            var eventWasRaised = false;

            connectControlSingleton.ConnectedStatusChanged += (sender, arg) =>
            {
                eventWasRaised = true;
            };
            //------------Execute Test---------------------------
            connectControlSingleton.ToggleConnection(99);
            connectControlSingleton.ToggleConnection(-1);
            //------------Assert Results-------------------------
            Assert.IsNotNull(connectControlSingleton);

            Assert.IsFalse(eventWasRaised);
            studioResourceRepository.Verify(s => s.Load(It.IsAny<Guid>(), It.IsAny<IAsyncWorker>(), It.IsAny<Action<Guid>>()), Times.Never());
        }
 public void ConnectControlSingleton_Constructor_ServerProviderReturnsOneEnvironment_WillHaveTwoEnvironmentsLoaded()
 {
     var studioResourceRepository = new Mock<IStudioResourceRepository>();
     var asyncWorker = new Mock<IAsyncWorker>();
     var serverProvider = new Mock<IEnvironmentModelProvider>();
     var environmentRepository = new Mock<IEnvironmentRepository>();
     List<IEnvironmentModel> environmentModels = new List<IEnvironmentModel>
         {
             new TestEnvironmentModel(new Mock<IEventAggregator>().Object, Guid.NewGuid(), CreateConnection(false).Object, new Mock<IResourceRepository>().Object, false)
         };
     serverProvider.Setup(s => s.Load()).Returns(environmentModels);
     //------------Execute Test---------------------------
     IConnectControlSingleton connectControlSingleton = new ConnectControlSingleton(studioResourceRepository.Object, asyncWorker.Object, serverProvider.Object, environmentRepository.Object);
     //------------Assert Results-------------------------
     Assert.IsNotNull(connectControlSingleton);
     Assert.IsNotNull(connectControlSingleton.Servers);
     Assert.AreEqual(2, connectControlSingleton.Servers.Count);
 }