public void CommandPublish_CommandShouldCompleteWhenAfterExecuting_CommandSucceded()
{
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, shouldCompleteAfterExecute: true);
processor.PublishCommand(command, Observer.Create<ICommandResponse<Unit>>(_ => { }, resetEvent.Set));
resetEvent.Wait();
Assert.AreEqual(CommandState.Successed, command.CurrentState);
}