/// <summary>
        /// Marks the message as spam.
        /// </summary>
        /// <param name="providerStatus">The provider status.</param>
        /// <param name="spamDateTime">The spam date time.</param>
        public void MarkMessageAsSpam(String providerStatus,
                                      DateTime spamDateTime)
        {
            this.CheckMessageCanBeSetToSpam();

            EmailMessageMarkedAsSpamEvent messageMarkedAsSpamEvent = new EmailMessageMarkedAsSpamEvent(this.AggregateId, providerStatus, spamDateTime);

            this.ApplyAndAppend(messageMarkedAsSpamEvent);
        }
        public void EmailMessageMarkedAsSpamEvent_CanBeCreated_IsCreated()
        {
            EmailMessageMarkedAsSpamEvent messageMarkedAsSpamEvent =
                new EmailMessageMarkedAsSpamEvent(TestData.MessageId, TestData.ProviderStatusDescription, TestData.SpamDateTime);

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