public void Constructor_Should_RunAllAlertsOperation()
        {
            //arrange
            var view = new Mock <IAlertInputView>();
            var remoteOperationManager = new Mock <IRemoteOperationManager>();

            //act
            var presenter = new AlertInputPresenter(view.Object, new Mock <IAlertService>().Object,
                                                    new Mock <IAlertRepository>().Object, remoteOperationManager.Object);

            //assert
            remoteOperationManager.Verify(r => r.RunWithResultOperation(view.Object, It.IsAny <Func <Task <IEnumerable <Alert> > > >()));
        }
        public void InvokingInputAccepted_Should_RunSendAlertOperation()
        {
            //arrange
            var view = new Mock <IAlertInputView>();
            var remoteOperationManager = new Mock <IRemoteOperationManager>();
            var presenter = new AlertInputPresenter(view.Object, new Mock <IAlertService>().Object,
                                                    new Mock <IAlertRepository>().Object, remoteOperationManager.Object);

            //act
            view.Raise(v => v.InputAccepted += null);

            //assert
            remoteOperationManager.Verify(r => r.RunNoResultOperation(It.IsAny <Func <Task> >()));
        }
        public void InvokingInputCancelled_Should_ResetViewState()
        {
            //arrange
            var view         = new Mock <IAlertInputView>();
            var expectedIcon = ((IEnumerable <Icon>)Enum.GetValues(typeof(Icon))).FirstOrDefault();
            var presenter    = new AlertInputPresenter(view.Object, new Mock <IAlertService>().Object,
                                                       new Mock <IAlertRepository>().Object, new Mock <IRemoteOperationManager>().Object);

            //act
            view.Raise(v => v.InputCancelled += null);

            //assert
            view.VerifySet(v => v.Message = string.Empty);
            view.VerifySet(v => v.ConfirmationRequired = false);
            view.VerifySet(v => v.Icon = expectedIcon);
        }