public void TestResumeCount() { // Create users. CreateMember(1, true); var member2 = CreateMember(2, true); var member3 = CreateMember(3, true); CreateMember(4, false); // Send. _emailsCommand.TrySend(new StatsEmail(_dailyReportsQuery.GetDailyReport(DayRange.Yesterday))); // Check. var email = _emailServer.AssertEmailSent(); email.AssertHtmlViewContains("<td style=\"text-align:right;\">New resumes:</td>\r\n <td style=\"text-align:left;\">3</td>"); email.AssertHtmlViewContains("<td style=\"text-align:right;\">Uploaded resumes:</td>\r\n <td style=\"text-align:left;\">3</td>"); email.AssertHtmlViewContains("<td style=\"text-align:right;\">Reloaded resumes:</td>\r\n <td style=\"text-align:left;\">0</td>"); email.AssertHtmlViewContains("<td style=\"text-align:right;\">Edited resumes:</td>\r\n <td style=\"text-align:left;\">0</td>"); email.AssertHtmlViewContains("<td style=\"text-align:right;\">Updated resumes:</td>\r\n <td style=\"text-align:left;\">3</td>"); // Delete the UploadResume event for member2, but add an EditResume event. var events = _resumeReportsQuery.GetResumeEvents(member2.Id); _resumeReportsCommand.DeleteResumeEvent(events[0].Id); var candidate = _candidatesCommand.GetCandidate(member2.Id); _resumeReportsCommand.CreateResumeEvent(new ResumeEditEvent { CandidateId = member2.Id, ResumeId = candidate.ResumeId.Value, ResumeCreated = true, Time = events[0].Time }); _emailsCommand.TrySend(new StatsEmail(_dailyReportsQuery.GetDailyReport(DayRange.Yesterday))); email = _emailServer.AssertEmailSent(); email.AssertHtmlViewContains("<td style=\"text-align:right;\">New resumes:</td>\r\n <td style=\"text-align:left;\">3</td>"); email.AssertHtmlViewContains("<td style=\"text-align:right;\">Uploaded resumes:</td>\r\n <td style=\"text-align:left;\">2</td>"); email.AssertHtmlViewContains("<td style=\"text-align:right;\">Reloaded resumes:</td>\r\n <td style=\"text-align:left;\">0</td>"); email.AssertHtmlViewContains("<td style=\"text-align:right;\">Edited resumes:</td>\r\n <td style=\"text-align:left;\">1</td>"); email.AssertHtmlViewContains("<td style=\"text-align:right;\">Updated resumes:</td>\r\n <td style=\"text-align:left;\">3</td>"); // Delete the UploadResume event for member2, but add an ReloadResume event. events = _resumeReportsQuery.GetResumeEvents(member3.Id); candidate = _candidatesCommand.GetCandidate(member2.Id); _resumeReportsCommand.CreateResumeEvent(new ResumeReloadEvent { CandidateId = member3.Id, ResumeId = candidate.ResumeId.Value, Time = events[0].Time }); _emailsCommand.TrySend(new StatsEmail(_dailyReportsQuery.GetDailyReport(DayRange.Yesterday))); email = _emailServer.AssertEmailSent(); email.AssertHtmlViewContains("<td style=\"text-align:right;\">New resumes:</td>\r\n <td style=\"text-align:left;\">3</td>"); email.AssertHtmlViewContains("<td style=\"text-align:right;\">Uploaded resumes:</td>\r\n <td style=\"text-align:left;\">2</td>"); email.AssertHtmlViewContains("<td style=\"text-align:right;\">Reloaded resumes:</td>\r\n <td style=\"text-align:left;\">1</td>"); email.AssertHtmlViewContains("<td style=\"text-align:right;\">Edited resumes:</td>\r\n <td style=\"text-align:left;\">1</td>"); email.AssertHtmlViewContains("<td style=\"text-align:right;\">Updated resumes:</td>\r\n <td style=\"text-align:left;\">3</td>"); }
private void AssertEvents(Guid candidateId, Guid resumeId, params ResumeEvent[] expectedEvents) { var events = _resumeReportsQuery.GetResumeEvents(candidateId); Assert.AreEqual(expectedEvents.Length, events.Count); for (var index = 0; index < expectedEvents.Length; ++index) { Assert.AreEqual(candidateId, events[index].CandidateId); Assert.AreEqual(resumeId, events[index].ResumeId); Assert.IsInstanceOfType(events[index], expectedEvents[index].GetType()); var resumeEditEvent = expectedEvents[index] as ResumeEditEvent; if (resumeEditEvent != null) { Assert.AreEqual(resumeEditEvent.ResumeCreated, ((ResumeEditEvent)events[index]).ResumeCreated); } } }