public void WhenSelectAcceptOfConfirmDialog()
        {
            var commandExecutorMock               = new Mock <ICommandExecutor>();
            var acceptCommand                     = new Mock <ICommand>().Object;
            var acceptCommandParameter            = new object();
            var acceptEventArgsConverter          = new Mock <IValueConverter>().Object;
            var acceptEventArgsConverterParameter = new object();
            var acceptEventArgsPropertyPath       = "acceptEventArgsPropertyPath";

            var cancelCommand                     = new Mock <ICommand>().Object;
            var cancelCommandParameter            = new object();
            var cancelEventArgsConverter          = new Mock <IValueConverter>().Object;
            var cancelEventArgsConverterParameter = new object();
            var cancelEventArgsPropertyPath       = "cancelEventArgsPropertyPath";

            var behavior = new DisplayAlertBehavior
            {
                CommandExecutor                   = commandExecutorMock.Object,
                EventName                         = "TestEvent",
                Title                             = "WhenSelectAcceptOfConfirmDialog",
                Message                           = "Message",
                Accept                            = "Accept",
                Cancel                            = "Cancel",
                AcceptCommand                     = acceptCommand,
                AcceptCommandParameter            = acceptCommandParameter,
                AcceptEventArgsConverter          = acceptEventArgsConverter,
                AcceptEventArgsConverterParameter = acceptEventArgsConverterParameter,
                AcceptEventArgsPropertyPath       = acceptEventArgsPropertyPath,
                CancelCommand                     = cancelCommand,
                CancelCommandParameter            = cancelCommandParameter,
                CancelEventArgsConverter          = cancelEventArgsConverter,
                CancelEventArgsConverterParameter = cancelEventArgsConverterParameter,
                CancelEventArgsPropertyPath       = cancelEventArgsPropertyPath
            };
            var page = new PageMock();

            page.Behaviors.Add(behavior);

            MessagingCenter.Subscribe <Page, AlertArguments>(this, Page.AlertSignalName, (page1, arguments) =>
            {
                if (arguments.Title == "WhenSelectAcceptOfConfirmDialog")
                {
                    Assert.Equal("Message", arguments.Message);
                    Assert.Equal("Accept", arguments.Accept);
                    Assert.Equal("Cancel", arguments.Cancel);
                    arguments.SetResult(true);
                }
            });

            page.RiseTestEvent(this, EventArgs.Empty);

            commandExecutorMock.Verify(
                commandExecutor => commandExecutor.Execute(
                    acceptCommand,
                    acceptCommandParameter,
                    EventArgs.Empty,
                    acceptEventArgsConverter,
                    acceptEventArgsConverterParameter,
                    acceptEventArgsPropertyPath),
                Times.Once);
        }
        public void DisplayAlertRequest_WhenCancel()
        {
            var commandExecutorMock               = new Mock <ICommandExecutor>();
            var acceptCommand                     = new Mock <ICommand>().Object;
            var acceptCommandParameter            = new object();
            var acceptEventArgsConverter          = new Mock <IValueConverter>().Object;
            var acceptEventArgsConverterParameter = new object();
            var acceptEventArgsPropertyPath       = "acceptEventArgsPropertyPath";

            var cancelCommand                     = new Mock <ICommand>().Object;
            var cancelCommandParameter            = new object();
            var cancelEventArgsConverter          = new Mock <IValueConverter>().Object;
            var cancelEventArgsConverterParameter = new object();
            var cancelEventArgsPropertyPath       = "cancelEventArgsPropertyPath";

            var request  = new DisplayAlertRequest();
            var behavior = new DisplayAlertBehavior
            {
                CommandExecutor     = commandExecutorMock.Object,
                NotificationRequest = request,
                Title                             = "Title",
                Message                           = "Message",
                Accept                            = "Accept",
                Cancel                            = "Cancel",
                AcceptCommand                     = acceptCommand,
                AcceptCommandParameter            = acceptCommandParameter,
                AcceptEventArgsConverter          = acceptEventArgsConverter,
                AcceptEventArgsConverterParameter = acceptEventArgsConverterParameter,
                AcceptEventArgsPropertyPath       = acceptEventArgsPropertyPath,
                CancelCommand                     = cancelCommand,
                CancelCommandParameter            = cancelCommandParameter,
                CancelEventArgsConverter          = cancelEventArgsConverter,
                CancelEventArgsConverterParameter = cancelEventArgsConverterParameter,
                CancelEventArgsPropertyPath       = cancelEventArgsPropertyPath
            };
            var page = new PageMock();

            page.Behaviors.Add(behavior);

            string noticeTitle   = null;
            string noticeMessage = null;
            string noticeAccept  = null;
            string noticeCancel  = null;

            MessagingCenter.Subscribe <Page, AlertArguments>(this, Page.AlertSignalName, (page1, arguments) =>
            {
                noticeTitle   = arguments.Title;
                noticeMessage = arguments.Message;
                noticeAccept  = arguments.Accept;
                noticeCancel  = arguments.Cancel;
                if (arguments.Title == "ReplacedTitle_WhenCancel")
                {
                    arguments.SetResult(false);
                }
            });

            var calledAcceptButton = false;
            var acceptButton       = new AlertButton {
                Message = "ReplacedAccept", Action = () => calledAcceptButton = true
            };
            var    calledCancelButton = false;
            object cancelParameter    = null;
            var    cancelButton       = new AlertButton <string>
            {
                Message   = "ReplacedCancel",
                Parameter = "param",
                Action    = param =>
                {
                    calledCancelButton = true;
                    cancelParameter    = param;
                }
            };

            request.Raise("ReplacedTitle_WhenCancel", "ReplacedMessage", acceptButton, cancelButton);

            Assert.Equal("ReplacedTitle_WhenCancel", noticeTitle);
            Assert.Equal("ReplacedMessage", noticeMessage);
            Assert.Equal("ReplacedAccept", noticeAccept);
            Assert.Equal("ReplacedCancel", noticeCancel);

            commandExecutorMock.Verify(
                commandExecutor => commandExecutor.Execute(
                    It.IsAny <ICommand>(), It.IsAny <object>(), It.IsAny <EventArgs>(), It.IsAny <IValueConverter>(), It.IsAny <object>(), It.IsAny <string>()),
                Times.Never);
            Assert.False(calledAcceptButton);
            Assert.True(calledCancelButton);
            Assert.Equal("param", cancelParameter);
        }