Ejemplo n.º 1
0
        public void WhenCreated_ThenConnectsServiceAndIsAvailable()
        {
            var serviceMock = new Mock<IChatService>(MockBehavior.Strict);
            serviceMock.SetupSet(svc => svc.Connected = true);
            serviceMock.SetupGet(svc => svc.Connected).Returns(true);
            serviceMock.Setup(svc => svc.GetContacts(It.IsAny<Action<IOperationResult<IEnumerable<Contact>>>>()));

            var viewModel = new ChatViewModel(serviceMock.Object);

            Assert.AreEqual("Available", viewModel.ConnectionStatus);

            serviceMock.VerifyAll();
        }
Ejemplo n.º 2
0
        public void WhenCreated_ThenGetsContactsFromService()
        {
            Action<IOperationResult<IEnumerable<Contact>>> getContactsCallback = null;
            var serviceMock = new Mock<IChatService>();
            serviceMock
                .SetupGet(svc => svc.Connected)
                .Returns(true);
            serviceMock
                .Setup(svc => svc.GetContacts(It.IsAny<Action<IOperationResult<IEnumerable<Contact>>>>()))
                .Callback<Action<IOperationResult<IEnumerable<Contact>>>>(c => getContactsCallback = c);

            var viewModel = new ChatViewModel(serviceMock.Object);

            Assert.IsNotNull(getContactsCallback);
        }
Ejemplo n.º 3
0
        public void WhenReceivingContacts_ThenUpdatesContactsCollection()
        {
            Action<IOperationResult<IEnumerable<Contact>>> getContactsCallback = null;
            var serviceMock = new Mock<IChatService>();
            serviceMock
                .SetupGet(svc => svc.Connected)
                .Returns(true);
            serviceMock
                .Setup(svc => svc.GetContacts(It.IsAny<Action<IOperationResult<IEnumerable<Contact>>>>()))
                .Callback<Action<IOperationResult<IEnumerable<Contact>>>>(c => getContactsCallback = c);

            var contacts = new[] { new Contact(), new Contact() };
            var resultMock = new Mock<IOperationResult<IEnumerable<Contact>>>();
            resultMock.SetupGet(r => r.Result).Returns(contacts);

            var viewModel = new ChatViewModel(serviceMock.Object);

            getContactsCallback(resultMock.Object);

            CollectionAssert.AreEqual(contacts, viewModel.Contacts);
        }
Ejemplo n.º 4
0
 public ShowDetailsCommandImplementation(ChatViewModel owner)
 {
     this.owner = owner;
 }
Ejemplo n.º 5
0
        public void WhenChangingConnectionStatus_ThenUpdatesServiceAndNotifiesPropertyChange()
        {
            var serviceMock = new Mock<IChatService>(MockBehavior.Strict);
            serviceMock
                .SetupSet(svc => svc.Connected = true);
            serviceMock
                .SetupSet(svc => svc.Connected = false)
                .Raises(svc => svc.ConnectionStatusChanged += null, EventArgs.Empty);
            serviceMock
                .Setup(svc => svc.GetContacts(It.IsAny<Action<IOperationResult<IEnumerable<Contact>>>>()));
            var viewModel = new ChatViewModel(serviceMock.Object);

            var tracker = new PropertyChangeTracker(viewModel);

            viewModel.ConnectionStatus = "Unavailable";

            CollectionAssert.AreEqual(new[] { "ConnectionStatus" }, tracker.ChangedProperties);

            serviceMock.VerifyAll();
        }
Ejemplo n.º 6
0
        public void WhenSendingMessage_ThenUpdatesAndNotifiesSendingMessage()
        {
            var contact = new Contact();
            var message = "message";
            Action<IOperationResult<IEnumerable<Contact>>> getContactsCallback = null;
            Action<IOperationResult> sendMessageCallback = null;

            var serviceMock = new Mock<IChatService>(MockBehavior.Strict);
            serviceMock
                .SetupSet(svc => svc.Connected = true);
            serviceMock
                .Setup(svc => svc.GetContacts(It.IsAny<Action<IOperationResult<IEnumerable<Contact>>>>()))
                .Callback<Action<IOperationResult<IEnumerable<Contact>>>>(cb => getContactsCallback = cb);
            serviceMock
                .Setup(svc => svc.SendMessage(contact, message, It.IsAny<Action<IOperationResult>>()))
                .Callback<Contact, string, Action<IOperationResult>>((c, m, cb) => sendMessageCallback = cb);


            var getContactsOperationMock = new Mock<IOperationResult<IEnumerable<Contact>>>();
            getContactsOperationMock.SetupGet(or => or.Result).Returns(new[] { contact });

            var viewModel = new ChatViewModel(serviceMock.Object);

            InteractionRequestedEventArgs args = null;
            viewModel.SendMessageRequest.Raised += (s, e) => args = e;

            getContactsCallback(getContactsOperationMock.Object);

            viewModel.ContactsView.MoveCurrentTo(contact);

            var tracker = new PropertyChangeTracker(viewModel);

            Assert.IsFalse(viewModel.SendingMessage);

            viewModel.SendMessage();

            Assert.IsFalse(viewModel.SendingMessage);

            var sendMessage = args.Context as SendMessageViewModel;
            sendMessage.Result = true;
            sendMessage.Message = message;

            args.Callback();

            Assert.IsTrue(viewModel.SendingMessage);
            CollectionAssert.AreEqual(new[] { "SendingMessage" }, tracker.ChangedProperties);

            tracker.Reset();

            sendMessageCallback(new Mock<IOperationResult>().Object);

            Assert.IsFalse(viewModel.SendingMessage);
            CollectionAssert.AreEqual(new[] { "SendingMessage" }, tracker.ChangedProperties);
        }
Ejemplo n.º 7
0
        public void WhenCancellingTheSendMessageInteraction_ThenDoesNothing()
        {
            var serviceMock = new Mock<IChatService>(MockBehavior.Strict);
            serviceMock.SetupSet(svc => svc.Connected = true);
            serviceMock.Setup(svc => svc.GetContacts(It.IsAny<Action<IOperationResult<IEnumerable<Contact>>>>()));

            var viewModel = new ChatViewModel(serviceMock.Object);

            InteractionRequestedEventArgs args = null;
            viewModel.SendMessageRequest.Raised += (s, e) => args = e;

            viewModel.SendMessage();

            Assert.IsNotNull(args);

            var sendMessage = args.Context as SendMessageViewModel;
            sendMessage.Result = false;

            args.Callback();

            serviceMock.VerifyAll();
        }
Ejemplo n.º 8
0
        public void WhenAcceptingTheSendMessageInteraction_ThenSendsMessage()
        {
            var contact = new Contact();
            var message = "message";
            Action<IOperationResult<IEnumerable<Contact>>> getContactsCallback = null;
            Action<IOperationResult> sendMessageCallback = null;

            var serviceMock = new Mock<IChatService>(MockBehavior.Strict);
            serviceMock
                .SetupSet(svc => svc.Connected = true);
            serviceMock
                .Setup(svc => svc.GetContacts(It.IsAny<Action<IOperationResult<IEnumerable<Contact>>>>()))
                .Callback<Action<IOperationResult<IEnumerable<Contact>>>>(cb => getContactsCallback = cb);
            serviceMock
                .Setup(svc => svc.SendMessage(contact, message, It.IsAny<Action<IOperationResult>>()))
                .Callback<Contact, string, Action<IOperationResult>>((c, m, cb) => sendMessageCallback = cb);


            var getContactsOperationMock = new Mock<IOperationResult<IEnumerable<Contact>>>();
            getContactsOperationMock.SetupGet(or => or.Result).Returns(new[] { contact });

            var viewModel = new ChatViewModel(serviceMock.Object);

            InteractionRequestedEventArgs args = null;
            viewModel.SendMessageRequest.Raised += (s, e) => args = e;

            getContactsCallback(getContactsOperationMock.Object);

            viewModel.ContactsView.MoveCurrentTo(contact);

            viewModel.SendMessage();

            Assert.IsNotNull(args);

            var sendMessage = args.Context as SendMessageViewModel;
            sendMessage.Result = true;
            sendMessage.Message = message;

            args.Callback();

            serviceMock.VerifyAll();
        }
Ejemplo n.º 9
0
        public void WhenShowDetailsCommandIsExecuted_ThenUpdatesShowingDetails()
        {
            Action<IOperationResult<IEnumerable<Contact>>> getContactsCallback = null;
            var serviceMock = new Mock<IChatService>();
            serviceMock
                .Setup(svc => svc.GetContacts(It.IsAny<Action<IOperationResult<IEnumerable<Contact>>>>()))
                .Callback<Action<IOperationResult<IEnumerable<Contact>>>>(c => getContactsCallback = c);

            var contacts = new[] { new Contact(), new Contact() };
            var resultMock = new Mock<IOperationResult<IEnumerable<Contact>>>();
            resultMock.SetupGet(r => r.Result).Returns(contacts);

            var viewModel = new ChatViewModel(serviceMock.Object);

            getContactsCallback(resultMock.Object);

            viewModel.ContactsView.MoveCurrentTo(contacts[0]);

            var tracker = new PropertyChangeTracker(viewModel);

            Assert.IsFalse(viewModel.ShowDetails);

            viewModel.ShowDetailsCommand.Execute(true);

            Assert.IsTrue(viewModel.ShowDetails);
            CollectionAssert.AreEqual(new[] { "ShowDetails" }, tracker.ChangedProperties);
        }
Ejemplo n.º 10
0
        public void WhenSendingMessage_ThenInitiatesInteraction()
        {
            var serviceMock = new Mock<IChatService>();
            var viewModel = new ChatViewModel(serviceMock.Object);

            bool interactionRaised = false;
            viewModel.SendMessageRequest.Raised += (s, e) => interactionRaised = true;

            viewModel.SendMessage();

            Assert.IsTrue(interactionRaised);
        }
Ejemplo n.º 11
0
        public void WhenContactIsSelected_ThenCommandCanBeExecutedAndNotifiesChange()
        {
            Action<IOperationResult<IEnumerable<Contact>>> getContactsCallback = null;
            var serviceMock = new Mock<IChatService>();
            serviceMock
                .Setup(svc => svc.GetContacts(It.IsAny<Action<IOperationResult<IEnumerable<Contact>>>>()))
                .Callback<Action<IOperationResult<IEnumerable<Contact>>>>(c => getContactsCallback = c);

            var contacts = new[] { new Contact(), new Contact() };
            var resultMock = new Mock<IOperationResult<IEnumerable<Contact>>>();
            resultMock.SetupGet(r => r.Result).Returns(contacts);

            var viewModel = new ChatViewModel(serviceMock.Object);

            getContactsCallback(resultMock.Object);

            bool commandChanged = false;
            viewModel.ShowDetailsCommand.CanExecuteChanged += (s, e) => commandChanged = true;

            viewModel.ContactsView.MoveCurrentTo(contacts[0]);

            Assert.IsTrue(viewModel.ShowDetailsCommand.CanExecute(null));
            Assert.IsTrue(commandChanged);

            serviceMock.VerifyAll();
        }
Ejemplo n.º 12
0
        public void WhenThereIsNoContactSelected_ThenShowDetailsCommandCannotExecute()
        {
            var serviceMock = new Mock<IChatService>(MockBehavior.Strict);
            serviceMock
                .SetupSet(svc => svc.Connected = true);
            serviceMock
                .Setup(svc => svc.GetContacts(It.IsAny<Action<IOperationResult<IEnumerable<Contact>>>>()));
            var viewModel = new ChatViewModel(serviceMock.Object);

            Assert.IsFalse(viewModel.ShowDetailsCommand.CanExecute(null));

            serviceMock.VerifyAll();
        }
Ejemplo n.º 13
0
        public void WhenChangingShowDetails_ThenNotifiesPropertyChange()
        {
            var serviceMock = new Mock<IChatService>(MockBehavior.Strict);
            serviceMock
                .SetupSet(svc => svc.Connected = true);
            serviceMock
                .Setup(svc => svc.GetContacts(It.IsAny<Action<IOperationResult<IEnumerable<Contact>>>>()));
            var viewModel = new ChatViewModel(serviceMock.Object);

            var tracker = new PropertyChangeTracker(viewModel);

            viewModel.ShowDetails = true;

            CollectionAssert.AreEqual(new[] { "ShowDetails" }, tracker.ChangedProperties);

            serviceMock.VerifyAll();
        }
Ejemplo n.º 14
0
 public ShowDetailsCommandImplementation(ChatViewModel owner)
 {
     this.owner = owner;
 }
Ejemplo n.º 15
0
 public SendMessageViewModel(Contact contact, ChatViewModel parent)
 {
     this.contact = contact;
     this.parent  = parent;
 }