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>"); }
public void TestEmailReminderEvent() { const double interval = -1; _memberAccountsCommand.CreateTestMember(1); var two = _memberAccountsCommand.CreateTestMember(2); two.CreatedTime = two.CreatedTime.AddDays(-1); _memberAccountsCommand.UpdateMember(two); var candidate = _candidatesCommand.GetCandidate(two.Id); _candidateResumesCommand.AddTestResume(candidate); _resumeReportsCommand.CreateResumeEvent(new ResumeUploadEvent { CandidateId = two.Id, ResumeId = candidate.ResumeId.Value, Time = two.CreatedTime }); var three = _memberAccountsCommand.CreateTestMember(3); three.CreatedTime = DateTime.Now.AddDays(interval - 1); _memberAccountsCommand.UpdateMember(three); candidate = _candidatesCommand.GetCandidate(three.Id); _candidateResumesCommand.AddTestResume(candidate); _resumeReportsCommand.CreateResumeEvent(new ResumeEditEvent { CandidateId = three.Id, ResumeId = candidate.ResumeId.Value, ResumeCreated = true, Time = DateTime.Now.AddDays(-1) }); _employerAccountsCommand.CreateTestEmployer(4, _organisationsCommand.CreateTestOrganisation(0)); _employerAccountsCommand.CreateTestEmployer(5, _organisationsCommand.CreateTestOrganisation(0)); var six = _employerAccountsCommand.CreateTestEmployer(6, _organisationsCommand.CreateTestOrganisation(0)); six.CreatedTime = DateTime.Now.AddDays(interval - 1); _employerAccountsCommand.UpdateEmployer(six); _employerAccountsCommand.CreateTestRecruiter(7, _organisationsCommand.CreateTestOrganisation(0)); _employerAccountsCommand.CreateTestRecruiter(8, _organisationsCommand.CreateTestOrganisation(0)); var nine = _employerAccountsCommand.CreateTestRecruiter(9, _organisationsCommand.CreateTestOrganisation(0)); nine.CreatedTime = DateTime.Now.AddDays(interval - 1); _employerAccountsCommand.UpdateEmployer(nine); var reportingTask = new ReportingEmailTask(); reportingTask.ExecuteTask(); // Check. var email = _emailServer.AssertEmailSent(); email.AssertAddresses(System, Return, AllStaff); email.AssertSubject(Subject); email.AssertNoAttachments(); email.AssertHtmlViewContains("<td style=\"text-align:right;\">New resumes:</td>\r\n <td style=\"text-align:left;\">2</td>"); }
private void CreateMember(int index, DateTime createdTime) { var member = _memberAccountsCommand.CreateTestMember(index); member.CreatedTime = createdTime; _memberAccountsCommand.UpdateMember(member); var candidate = _candidatesQuery.GetCandidate(member.Id); _candidateResumesCommand.AddTestResume(candidate); _resumeReportsCommand.CreateResumeEvent(new ResumeUploadEvent { CandidateId = member.Id, ResumeId = candidate.ResumeId.Value, Time = member.CreatedTime }); }
private void AddEvent(int eventType, DateTime eventTime, ICandidate candidate) { switch (eventType) { case UploadResume: _resumeReportsCommand.CreateResumeEvent(new ResumeUploadEvent { CandidateId = candidate.Id, ResumeId = candidate.ResumeId.Value, Time = eventTime }); break; case EditResume: _resumeReportsCommand.CreateResumeEvent(new ResumeEditEvent { CandidateId = candidate.Id, ResumeId = candidate.ResumeId.Value, Time = eventTime }); break; case ReloadResume: _resumeReportsCommand.CreateResumeEvent(new ResumeReloadEvent { CandidateId = candidate.Id, ResumeId = candidate.ResumeId.Value, Time = eventTime }); break; } }
public void TestUploadTimeAgo() { // Created long time ago. var candidate = CreateCandidateWithResumeFile(); // Uploaded long time ago. _resumeReportsCommand.CreateResumeEvent(new ResumeUploadEvent { CandidateId = candidate.Id, ResumeId = candidate.ResumeId.Value, Time = DateTime.Now.AddDays(-10) }); Assert.AreEqual(1, _resumeReportsQuery.GetResumes(DateTime.Now.Date)); Assert.AreEqual(0, _resumeReportsQuery.GetNewResumes(DayRange.Yesterday)); Assert.AreEqual(0, _resumeReportsQuery.GetUploadedResumes(DayRange.Yesterday)); Assert.AreEqual(0, _resumeReportsQuery.GetReloadedResumes(DayRange.Yesterday)); Assert.AreEqual(0, _resumeReportsQuery.GetEditedResumes(DayRange.Yesterday)); Assert.AreEqual(0, _resumeReportsQuery.GetUpdatedResumes(DayRange.Yesterday)); }
void IResumesHandler.OnResumeUploaded(Guid candidateId, Guid resumeId) { _resumeReportsCommand.CreateResumeEvent(new ResumeUploadEvent { CandidateId = candidateId, ResumeId = resumeId }); }