/// <summary>
        /// Marks the message as bounced.
        /// </summary>
        /// <param name="providerStatus">The provider status.</param>
        /// <param name="bouncedDateTime">The bounced date time.</param>
        public void MarkMessageAsBounced(String providerStatus,
                                         DateTime bouncedDateTime)
        {
            this.CheckMessageCanBeSetToBounced();

            EmailMessageBouncedEvent messageBouncedEvent = new EmailMessageBouncedEvent(this.AggregateId, providerStatus, bouncedDateTime);

            this.ApplyAndAppend(messageBouncedEvent);
        }
        public void EmailMessageBouncedEvent_CanBeCreated_IsCreated()
        {
            EmailMessageBouncedEvent messageBouncedEvent =
                new EmailMessageBouncedEvent(TestData.MessageId, TestData.ProviderStatusDescription, TestData.BouncedDateTime);

            messageBouncedEvent.ShouldNotBeNull();
            messageBouncedEvent.AggregateId.ShouldBe(TestData.MessageId);
            messageBouncedEvent.EventId.ShouldNotBe(Guid.Empty);
            messageBouncedEvent.MessageId.ShouldBe(TestData.MessageId);
            messageBouncedEvent.ProviderStatus.ShouldBe(TestData.ProviderStatusDescription);
            messageBouncedEvent.BouncedDateTime.ShouldBe(TestData.BouncedDateTime);
        }
 /// <summary>
 /// Plays the event.
 /// </summary>
 /// <param name="domainEvent">The domain event.</param>
 private void PlayEvent(EmailMessageBouncedEvent domainEvent)
 {
     this.MessageStatus = MessageStatus.Bounced;
 }