public void BuildRecipientSubstitutionStep_WithPersonalizedSubstitution(string address, string token,
                                                                                string value)
        {
            var rec    = new MessageRecipient().ToAddress(address);
            var toStep =
                new MessageBuilder.BuildRecipientsStep.BuildToStep.BuildRecipientSubstitutionStep(
                    new MailerMessage().To(rec), rec);

            if (token == null)
            {
                toStep.Invoking(c => c.WithPersonalizedSubstitution(null, value)).Should().Throw <ArgumentNullException>();
            }
            else
            {
                var stepBuilder = toStep.WithPersonalizedSubstitution(token, value);

                stepBuilder
                .Should()
                .NotBeNull()
                .And.BeOfType <MessageBuilder.BuildRecipientsStep.BuildToStep.BuildRecipientSubstitutionStep>()
                .Which.As <IBuilderContext>()
                .Message.Recipients
                .Should()
                .NotBeEmpty()
                .And.AllBeAssignableTo <MessageRecipient>()
                .And.ContainSingle(r => r.EmailAddress == address)
                .Which.PersonalizedSubstitutions.Should()
                .ContainKey(token)
                .WhichValue.Should()
                .Be(value);
            }
        }
        public void BuildRecipientSubstitutionStep_And()
        {
            var rec    = new MessageRecipient().ToAddress("*****@*****.**");
            var toStep =
                new MessageBuilder.BuildRecipientsStep.BuildToStep.BuildRecipientSubstitutionStep(
                    new MailerMessage().To(rec), rec);
            var subStep = toStep.And;

            subStep
            .Should()
            .NotBeNull()
            .And.BeOfType <MessageBuilder.BuildContentStep>();
        }
        public void BuildRecipientSubstitutionStep_WithDisplayName(string address, string display)
        {
            var rec    = new MessageRecipient().ToAddress(address);
            var toStep =
                new MessageBuilder.BuildRecipientsStep.BuildToStep.BuildRecipientSubstitutionStep(
                    new MailerMessage().To(rec), rec);
            var stepBuilder = toStep.WithDisplayName(display);

            stepBuilder
            .Should()
            .NotBeNull()
            .And.BeOfType <MessageBuilder.BuildRecipientsStep.BuildToStep.BuiltToWithDisplayStep>()
            .Which.As <IBuilderContext>()
            .Message.Recipients
            .Should()
            .NotBeEmpty()
            .And.AllBeAssignableTo <MessageRecipient>()
            .And.Contain(r => r.DisplayName == display);
        }