public void When_command_type_registered_then_kernel_registers_envelope_type_for_serialization(bool withHandler) { KernelCommandEnvelope.RegisterDefaults(); using var kernel = new FakeKernel(); if (withHandler) { kernel.RegisterCommandHandler <CustomCommandTypes.FirstSubmission.MyCommand>( (_, _) => Task.CompletedTask); } else { kernel.RegisterCommandType <CustomCommandTypes.FirstSubmission.MyCommand>(); } var originalCommand = new CustomCommandTypes.FirstSubmission.MyCommand("xyzzy"); string envelopeJson = KernelCommandEnvelope.Serialize(originalCommand); var roundTrippedCommandEnvelope = KernelCommandEnvelope.Deserialize(envelopeJson); roundTrippedCommandEnvelope .Command .Should() .BeOfType <CustomCommandTypes.FirstSubmission.MyCommand>() .Which .Info .Should() .Be(originalCommand.Info); }
public async Task When_command_handler_registered_in_child_kernel_and_command_sent_to_parent_then_handler_is_executed() { using var compositeKernel = new CompositeKernel(); var childKernel = new FakeKernel(); compositeKernel.Add(childKernel); CustomCommandTypes.FirstSubmission.MyCommand commandPassedToHandler = null; KernelInvocationContext contextPassedToHandler = null; childKernel.RegisterCommandHandler <CustomCommandTypes.FirstSubmission.MyCommand>( (command, context) => { commandPassedToHandler = command; contextPassedToHandler = context; return(Task.CompletedTask); }); var commandSentToCompositeKernel = new CustomCommandTypes.FirstSubmission.MyCommand("xyzzy"); await compositeKernel.SendAsync(commandSentToCompositeKernel); commandPassedToHandler .Should() .BeSameAs(commandSentToCompositeKernel); contextPassedToHandler .Should() .NotBeNull(); }