CodeValue.CodeCommander.Tests.CommandProcessorTests.RerunBlockedCommand_CommandIsBlocked_CommandIsPendingAgain C# (CSharp) Méthode

RerunBlockedCommand_CommandIsBlocked_CommandIsPendingAgain() private méthode

        public void RerunBlockedCommand_CommandIsBlocked_CommandIsPendingAgain()
        {
            var resetEvent = new ManualResetEventSlim(false);
            var fakeFilterManager = A.Fake<IFilterManager>();
            A.CallTo(() => fakeFilterManager.Process(A<CommandBase>.Ignored)).Returns(true);
            var processor = new CommandProcessor(null, fakeFilterManager);
            var command = new TestCommand(CommandState.New, blockCanExecute: true);

            command.RegisterForStateChange(Observer.Create<CommandState>(b =>
            {
                if (b == CommandState.Blocked)
                {
                    resetEvent.Set();
                }
            }));
            processor.PublishCommand(command);
            resetEvent.Wait();
            A.CallTo(() => fakeFilterManager.Process(A<CommandBase>.Ignored)).Returns(false);
            command.RegisterForStateChange(Observer.Create<CommandState>(b =>
            {
                if (b == CommandState.Pending)
                {
                    resetEvent.Set();
                }
            }));
            processor.RerunBlockedCommand(command);
            resetEvent.Wait();

            Assert.AreEqual(CommandState.Pending, command.CurrentState);
        }
CommandProcessorTests