public void DestroyCommentByStatusDestroysOnlyThatStatus() { Entry entry = SetupBlogForCommentsAndCreateEntry(); var repository = new DatabaseObjectProvider(); CreateApprovedComments(3, entry); CreateFlaggedSpam(2, entry); CreateDeletedComments(3, entry); FeedbackItem newComment = CreateAndUpdateFeedbackWithExactStatus(entry, FeedbackType.Comment, FeedbackStatusFlag.Approved); repository.ConfirmSpam(newComment, null); newComment = CreateAndUpdateFeedbackWithExactStatus(entry, FeedbackType.Comment, FeedbackStatusFlag.FlaggedAsSpam); Assert.IsFalse(newComment.Approved, "should not be approved"); repository.Delete(newComment); //Move it to trash. FeedbackCounts counts = repository.GetFeedbackCounts(); Assert.AreEqual(3, counts.ApprovedCount, "Expected three approved still"); Assert.AreEqual(2, counts.FlaggedAsSpamCount, "Expected two items flagged as spam."); Assert.AreEqual(5, counts.DeletedCount, "Expected five in the trash"); repository.Destroy(FeedbackStatusFlag.FlaggedAsSpam); counts = repository.GetFeedbackCounts(); Assert.AreEqual(3, counts.ApprovedCount, "Expected three approved still"); Assert.AreEqual(0, counts.FlaggedAsSpamCount, "Expected the items flagged as spam to be gone."); Assert.AreEqual(5, counts.DeletedCount, "Destroying all flagged items should not touch the trash bin."); CreateFlaggedSpam(3, entry); counts = repository.GetFeedbackCounts(); Assert.AreEqual(3, counts.FlaggedAsSpamCount, "Expected three items flagged as spam."); repository.Destroy(FeedbackStatusFlag.Deleted); counts = repository.GetFeedbackCounts(); Assert.AreEqual(3, counts.ApprovedCount, "Expected three approved still"); Assert.AreEqual(3, counts.FlaggedAsSpamCount, "Expected three approved still"); Assert.AreEqual(0, counts.DeletedCount, "Destroying all deleted items should not touch the flagged items."); }