예제 #1
0
 public void WhenConstructed_AddsCancelCommand()
 {
     var processEditVM = new ProcessEditViewModel();
     Assert.IsNotNull(processEditVM.WindowCommandItemList.SingleOrDefault(c => c.Command == processEditVM.CancelCommand));
 }
예제 #2
0
        public void Prevent_ExecutePublish_IfAny()
        {
            var vm = new ProcessEditViewModel();

            var cs = new Lazy<ICommunicationService>();
            var val = new CommunicationService();
            Mock.Arrange(() => cs.Value).Returns(val);
            Mock.Arrange(() => vm.CommunicationService).Returns(cs);

            Mock.Arrange(() => vm.CommunicationService.Value.IsPublishingInProgress).Returns(false);

            var popupFactory = new PopupFactory();
            var popupBuilder = new PopupBuilder();
            Mock.Arrange(() => popupBuilder.Show(Arg.IsAny<Action>(), Arg.IsAny<Func<bool>>())).DoInstead((Action ok, Action cancel) => { });
            Mock.Arrange(() => popupFactory.Popup()).Returns(popupBuilder);
            vm.ThePopupFactory = new Lazy<PopupFactory>(() => popupFactory);

            var pvm = new Lazy<PublishViewModel>();
            Mock.Arrange(() => vm.PublishVM).Returns(pvm);

            var prevented = false;
            Mock.Arrange(() => popupBuilder.Message(LanguageService.Translate("Label_PublishingIsInProgress"))).DoInstead(() => prevented = true).Returns(popupBuilder);

            var model = Mock.Create<ProcessEdit>();
            Mock.Arrange(() => vm.Model).Returns(model);
            Mock.Arrange(() => vm.Model.IsValid).Returns(true);
            Mock.Arrange(() => vm.Model.IsDirty).Returns(false);
            Mock.Arrange(() => vm.Model.IsInactive).Returns(false);
            Mock.Arrange(() => Utils.CurrentUserIsReadOnly).Returns(false);

            vm.PublishCommand.Execute(null);
            Assert.IsFalse(prevented);

            Mock.Arrange(() => vm.CommunicationService.Value.IsPublishingInProgress).Returns(true);
            vm.PublishCommand.Execute(null);
            Assert.IsTrue(prevented);
        }