public void when_executing_without_causation_id_in_context_it_should_fail()
        {
            var step    = new ValidateMessagePublishingContextStep();
            var context = new MessagePublishingContext
            {
                Api           = CreateEgressApi(),
                Message       = new Message1(),
                CorrelationId = ExpectedCorrelationId,
                CausationId   = ExpectedCausationId,
                MessageId     = ExpectedMessageId
            };

            Func <Task> sut = () => step.Execute(context);

            context.CausationId = null;
            sut.Should().Throw <ArgumentException>().Where(
                exception => exception.ParamName.Equals("context") && exception.Message.Contains("Causation ID should"),
                "null is not a valid causation ID");
            context.CausationId = string.Empty;
            sut.Should().Throw <ArgumentException>().Where(
                exception => exception.ParamName.Equals("context") && exception.Message.Contains("Causation ID should"),
                "an empty string is not a valid causation ID");
            context.CausationId = WhitespaceString;
            sut.Should().Throw <ArgumentException>().Where(
                exception => exception.ParamName.Equals("context") && exception.Message.Contains("Causation ID should"),
                "a whitespace string is not a valid causation ID");
        }
        public void when_executing_without_context_it_should_fail()
        {
            var step = new ValidateMessagePublishingContextStep();
            // ReSharper disable once AssignNullToNotNullAttribute - it's a test against null.
            Func <Task> sut = () => step.Execute(context: null);

            sut.Should().Throw <ArgumentNullException>().Where(exception => exception.ParamName.Equals("context"), "context is required");
        }
        public void when_executing_without_message_in_context_it_should_fail()
        {
            var step    = new ValidateMessagePublishingContextStep();
            var context = new MessagePublishingContext
            {
                Api           = CreateEgressApi(),
                Message       = null,
                CorrelationId = ExpectedCorrelationId,
                CausationId   = ExpectedCausationId,
                MessageId     = ExpectedMessageId
            };

            Func <Task> sut = () => step.Execute(context);

            sut.Should().Throw <ArgumentException>()
            .Where(
                exception => exception.ParamName.Equals("context") && exception.Message.Contains("Message should"),
                "message is required");
        }