public void DeliverWithNullMailMessageThrows()
        {
            var sender      = A.Fake <IMailSender>();
            var interceptor = A.Fake <IMailInterceptor>();
            var helper      = new DeliveryHelper(sender, interceptor);

            Assert.Throws <ArgumentNullException>(() => helper.Deliver(null));
        }
        public void DeliverNotifiesWhenMailIsBeingSent()
        {
            var sender = A.Fake<IMailSender>();
            var interceptor = A.Fake<IMailInterceptor>();
            var helper = new DeliveryHelper(sender, interceptor);
            var mail = new MailAttributes();

            helper.Deliver(mail);

            A.CallTo(() => interceptor.OnMailSending(A<MailSendingContext>.Ignored)).MustHaveHappened();
        }
        public void DeliverSynchronouslyNotifiesWhenMailWasSent()
        {
            var sender      = A.Fake <IMailSender>();
            var interceptor = A.Fake <IMailInterceptor>();
            var helper      = new DeliveryHelper(sender, interceptor);
            var mail        = new MailAttributes();

            helper.Deliver(mail);

            A.CallTo(() => interceptor.OnMailSent(mail)).MustHaveHappened();
        }
        public void DeliverNotifiesWhenMailIsBeingSent()
        {
            var sender      = A.Fake <IMailSender>();
            var interceptor = A.Fake <IMailInterceptor>();
            var helper      = new DeliveryHelper(sender, interceptor);
            var mail        = new MailAttributes();

            helper.Deliver(mail);

            A.CallTo(() => interceptor.OnMailSending(A <MailSendingContext> .Ignored)).MustHaveHappened();
        }
        public void DeliverSynchronouslySendsMessage()
        {
            var sender      = A.Fake <IMailSender>();
            var interceptor = A.Fake <IMailInterceptor>();
            var helper      = new DeliveryHelper(sender, interceptor);
            var mail        = new MailAttributes();

            helper.Deliver(mail);

            A.CallTo(() => sender.Send(mail)).MustHaveHappened();
        }
        public void DeliverShouldAllowSendingToBeCancelled()
        {
            var sender      = A.Fake <IMailSender>();
            var interceptor = A.Fake <IMailInterceptor>();
            var helper      = new DeliveryHelper(sender, interceptor);

            A.CallTo(() => interceptor.OnMailSending(A <MailSendingContext> .Ignored))
            .Invokes(x => x.GetArgument <MailSendingContext>(0).Cancel = true);

            helper.Deliver(new MailAttributes());

            A.CallTo(() => sender.Send(A <MailAttributes> .Ignored)).MustNotHaveHappened();
        }
        public void DeliverSynchronouslyNotifiesWhenMailWasSent()
        {
            var sender = A.Fake<IMailSender>();
            var interceptor = A.Fake<IMailInterceptor>();
            var helper = new DeliveryHelper(sender, interceptor);
            var mail = new MailAttributes();

            helper.Deliver(mail);

            A.CallTo(() => interceptor.OnMailSent(mail)).MustHaveHappened();
        }
        public void DeliverShouldAllowSendingToBeCancelled()
        {
            var sender = A.Fake<IMailSender>();
            var interceptor = A.Fake<IMailInterceptor>();
            var helper = new DeliveryHelper(sender, interceptor);
            A.CallTo(() => interceptor.OnMailSending(A<MailSendingContext>.Ignored))
                .Invokes(x => x.GetArgument<MailSendingContext>(0).Cancel = true);

            helper.Deliver(new MailAttributes());

            A.CallTo(() => sender.Send(A<MailAttributes>.Ignored)).MustNotHaveHappened();
        }
        public void DeliverWithNullMailMessageThrows()
        {
            var sender = A.Fake<IMailSender>();
            var interceptor = A.Fake<IMailInterceptor>();
            var helper = new DeliveryHelper(sender, interceptor);

            Assert.Throws<ArgumentNullException>(() => helper.Deliver(null));
        }
        public void DeliverSynchronouslySendsMessage()
        {
            var sender = A.Fake<IMailSender>();
            var interceptor = A.Fake<IMailInterceptor>();
            var helper = new DeliveryHelper(sender, interceptor);
            var mail = new MailAttributes();

            helper.Deliver(mail);

            A.CallTo(() => sender.Send(mail)).MustHaveHappened();
        }