Ejemplo n.º 1
0
    public void EventWithParametersShouldAssignMessageIdWhenCreated()
    {
        // Arrange / Act
        var subject = new CqrsCommand <TestParameters>(_params, Constants.CorrelationId, Constants.CausationId);

        subject.MessageId.Should().NotBeEmpty();
    }
Ejemplo n.º 2
0
    public void EventWithParametersShouldAssignCorrelationIdWhenCreated()
    {
        // Arrange / Act
        var subject = new CqrsCommand <TestParameters>(_params, Constants.CorrelationId, Constants.CausationId);

        // Assert
        subject.CorrelationId.Should().Be(Constants.CorrelationId);
    }
Ejemplo n.º 3
0
        public static ServiceBusMessage From(CqrsCommand command)
        {
            var result = new ServiceBusMessage {
                Message = new Message(command.ToUtf8Json())
            };

            result.Message.UserProperties.Add(MsgTypeName, command.GetType().FullName);
            return(result);
        }
Ejemplo n.º 4
0
    public void EventWithParametersShouldAssignParameters()
    {
        // Arrange / Act
        var subject = new CqrsCommand <TestParameters>(_params, Constants.CorrelationId, Constants.CausationId);

        // Assert
        subject.Params.Should().NotBeNull();
        subject.Params.Should().BeEquivalentTo(_params);
    }
Ejemplo n.º 5
0
    private async Task RegisterUser()
    {
        using var activity = _activitySource.StartActivity($"{nameof(RegisterUser)}");
        {
            var parameters = new RegisterUserCommandParameters("Bilbo", "Baggins");
            var command    = new CqrsCommand <RegisterUserCommandParameters>(parameters, SequentialGuid.NewGuid().ToString());

            await _messageSender.Send(command);
        }
    }
Ejemplo n.º 6
0
    public async Task HandlerShouldPublishEventWhenHandling()
    {
        // Arrange
        var testCommand = new CqrsCommand <TestParameters>(new TestParameters(), Constants.CorrelationId);

        // Act
        await _subject.HandleCommand(testCommand, CancellationToken.None);

        // Assert
        await _messageSender.Received(1).Publish(Arg.Any <CqrsEvent <TestParameters> >(), Arg.Is(CancellationToken.None));
    }
    public async Task MessageSenderCallsCorrectHandlerForCommand()
    {
        // Arrange
        var command = new CqrsCommand <TestParameters>(new TestParameters(nameof(MessageSenderCallsCorrectHandlerForCommand)), Constants.CorrelationId);

        // Act
        await Subject.Send(command, CancellationToken.None);

        // Assert
        await Verifier.Received(1).Receive(Arg.Is(command.Params.Value));
    }
    public async Task MessageSenderThrowsWhenDependencyResolutionFails()
    {
        // Arrange
        var parameters = new MultipleHandlersParameters();
        var command    = new CqrsCommand <MultipleHandlersParameters>(parameters, Constants.CorrelationId);

        // Act
        Func <Task> subjectResult = async() => { await _subject.Send(command, CancellationToken.None); };

        // Assert
        await subjectResult.Should().ThrowAsync <HandlerNotFoundException>();
    }
Ejemplo n.º 9
0
    public async Task MessageSenderThrowsWhenCommandHandlerDoesNotExist()
    {
        // Arrange
        var command = new CqrsCommand(Constants.CorrelationId);

        // Act
        Func <Task> subjectResult = async() => { await Subject.Send(command, CancellationToken.None); };

        // Assert
        await subjectResult.Should().ThrowAsync <HandlerNotFoundException>()
        .WithMessage($"No concrete handlers for type '{typeof(ICqrsCommandHandler<CqrsCommand>).AssemblyQualifiedName}' could be found.");
    }
Ejemplo n.º 10
0
    public async Task MessageSenderThrowsWhenMultipleCommandHandlersResolved()
    {
        // Arrange
        var parameters = new MultipleHandlersParameters();
        var command    = new CqrsCommand <MultipleHandlersParameters>(parameters, Constants.CorrelationId);

        // Act
        Func <Task> subjectResult = async() => { await Subject.Send(command, CancellationToken.None); };

        // Assert
        await subjectResult.Should().ThrowAsync <MultipleCommandHandlersDefinedException>()
        .WithMessage($"Multiple command handlers for type '{typeof(ICqrsCommandHandler<CqrsCommand<MultipleHandlersParameters>>).AssemblyQualifiedName}' were found. Only one handler can exist for a command.");
    }
    public async Task MessageSenderCallsCorrectHandlerForCommandWithResponse()
    {
        // Arrange
        var command = new CqrsCommand <TestParameters, CqrsCommandResponse <string> >(new TestParameters(nameof(MessageSenderCallsCorrectHandlerForCommandWithResponse)), Constants.CorrelationId);

        // Act
        var response = await Subject.Send(command, CancellationToken.None);

        // Assert
        await Verifier.Received(1).Receive(Arg.Is(command.Params.Value));

        response.Payload.Should().NotBeNull();
        response.Payload.Should().Be(nameof(TestCqrsCommandWithResponseHandler));
    }
Ejemplo n.º 12
0
    public override async Task HandleCommand(CqrsCommand <MessageParameters> cqrsCommand, CancellationToken cancellationToken = default)
    {
        var @event = new SendCommandReceived(cqrsCommand.CorrelationId, cqrsCommand.MessageId);

        await MessageSender.Publish(@event, cancellationToken);
    }
Ejemplo n.º 13
0
 public override async Task HandleCommand(CqrsCommand <TestParameters> cqrsCommand, CancellationToken cancellationToken = default)
 => await Task.CompletedTask;
Ejemplo n.º 14
0
 public override Task HandleCommand(CqrsCommand <MultipleHandlersParameters> cqrsCommand, CancellationToken cancellationToken = default)
 => throw new NotImplementedException();
Ejemplo n.º 15
0
    public override async Task HandleCommand(CqrsCommand <TestParameters> cqrsCommand, CancellationToken cancellationToken = default)
    {
        await MessageSender.Publish(new CqrsEvent <TestParameters>(cqrsCommand.Params, cqrsCommand.CorrelationId, cqrsCommand.MessageId), cancellationToken);

        await Task.CompletedTask;
    }