public void ShouldOnlyPollUpdatedViewModels() { // Arrange var viewModelToken1 = _knockoutMapper.ConstructViewModel(typeof(TestViewModel)).RefToken; var viewModelToken2 = _knockoutMapper.ConstructViewModel(typeof(TestViewModel)).RefToken; var viewModel2 = (TestViewModel)_knockoutMapper.GetViewModelObject(viewModelToken2); // Act var pollThread = new Thread(() => _knockoutMapper.Subscribe(viewModelToken1)); pollThread.Start(); viewModel2.StringProperty.Set("New string value"); pollThread.Join(); // Assert _monitorCollectionMock.Verify(x => x.Wait(viewModelToken1, It.IsAny <int>()), Times.Once()); _monitorCollectionMock.Verify(x => x.Pulse(viewModelToken2), Times.Once()); }
public void ShouldPublishPendingChanges() { // Arrange _knockoutMapper = new KnockoutMapper(_operationRegistryMock.Object, new MonitorCollection()); var viewModelToken = _knockoutMapper.ConstructViewModel(typeof(TestViewModel)).RefToken; // Act List <ChangeEntry> changeEntries = null; var pollThread = new Thread(() => changeEntries = _knockoutMapper.Subscribe(viewModelToken)); pollThread.Start(); TestViewModel.Instance.StringProperty.Set("New string value"); pollThread.Join(); // Assert Assert.That(changeEntries.Count, Is.EqualTo(1)); Assert.That(changeEntries[0].PropertyName, Is.EqualTo("StringProperty")); Assert.That(changeEntries[0].NewValue, Is.EqualTo("New string value")); }
public void ShouldPublishPendingChanges() { // Arrange _knockoutMapper = new KnockoutMapper(_operationRegistryMock.Object, new MonitorCollection()); var viewModelToken = _knockoutMapper.ConstructViewModel(typeof(TestViewModel)).RefToken; // Act List<ChangeEntry> changeEntries = null; var pollThread = new Thread(() => changeEntries = _knockoutMapper.Subscribe(viewModelToken)); pollThread.Start(); TestViewModel.Instance.StringProperty.Set("New string value"); pollThread.Join(); // Assert Assert.That(changeEntries.Count, Is.EqualTo(1)); Assert.That(changeEntries[0].PropertyName, Is.EqualTo("StringProperty")); Assert.That(changeEntries[0].NewValue, Is.EqualTo("New string value")); }