public void ProcessPublishEvent_MarksFieldAsPublished()
        {
            // Arrange.
            var fieldEdit = Mock.Create<FieldEdit>(Behavior.Loose);
            var section = Mock.Create<ProcessSectionViewModel>(Constructor.Mocked, Behavior.Loose);
            var eventAggregator = Mock.Create<IEventAggregator>(Behavior.Loose);
            var processEdit = Mock.Create<ProcessEdit>(Behavior.Loose);
            var publishTask = Mock.Create<Task>(Behavior.Loose);

            Mock.Arrange(() => fieldEdit.GetParent<ProcessEdit>()).Returns(processEdit);
            Mock.Arrange(() => fieldEdit.IsPublished).Returns(false);
            Mock.Arrange(() => fieldEdit.MarkPublished()).DoInstead(() => Mock.Arrange(() => fieldEdit.IsPublished).Returns(true));

            var fieldViewModel = new ProcessFieldViewModel(fieldEdit, section) { EventAggregator = eventAggregator };

            bool? isPublished = null;
            fieldViewModel.PropertyChanged += (sender, args) =>
                {
                    if (args.PropertyName == TestsHelper.ExtractPropertyName(() => fieldViewModel.IsPublished))
                        isPublished = fieldViewModel.IsPublished;
                };

            // Act.
            fieldViewModel.HandleEvent(new ProcessPublishEvent(processEdit, publishTask));

            // Assert.
            Assert.AreEqual(true, isPublished);
            Mock.Assert(() => fieldEdit.MarkPublished(), Occurs.Once());
        }