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); }
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); }
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(); }
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(); }
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(); }
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); }
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); }
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(); }