private void AssertResponse(string response, EmployerMemberView view) { var sb = new StringBuilder(); sb.Append("{\"Candidate\":{") .Append("\"Id\":\"").Append(view.Id.ToString()).Append("\"") .Append(",\"CanContact\":\"").Append(view.CanContact()).Append("\"") .Append(",\"CanContactByPhone\":\"").Append(view.CanContactByPhone()).Append("\"") .Append(",\"HasBeenViewed\":").Append(view.HasBeenViewed ? "true" : "false") .Append(",\"HasBeenAccessed\":").Append(view.HasBeenAccessed ? "true" : "false") .Append(",\"IsInMobileFolder\":").Append(view.IsInMobileFolder ? "true" : "false") .Append(",\"FullName\":").Append(view.GetCandidateTitle() == null ? "null" : "\"" + view.GetCandidateTitle() + "\"") .Append(",\"PhoneNumbers\":").Append(view.PhoneNumbers == null || view.PhoneNumbers.All(p => string.IsNullOrEmpty(p.Number)) ? "null" : "\"" + view.PhoneNumbers + "\"") .Append(",\"Status\":\"").Append(view.Status).Append("\"") .Append(",\"LastUpdatedTime\":\"").Append(_memberStatusQuery.GetLastUpdatedTime(view, view, view.Resume).ToUniversalTime().ToString("o")).Append("\"") .Append(",\"Location\":").Append(view.Address.Location.ToString() == null ? "null" : "\"" + view.Address.Location + "\"") .Append(",\"DesiredJobTitle\":").Append(view.DesiredJobTitle == null ? "null" : "\"" + view.DesiredJobTitle + "\""); if (view.DesiredJobTypes.IsFlagSet(JobTypes.FullTime)) { sb.Append(",\"FullTime\":true"); } if (view.DesiredJobTypes.IsFlagSet(JobTypes.PartTime)) { sb.Append(",\"PartTime\":true"); } if (view.DesiredJobTypes.IsFlagSet(JobTypes.Contract)) { sb.Append(",\"Contract\":true"); } if (view.DesiredJobTypes.IsFlagSet(JobTypes.JobShare)) { sb.Append(",\"JobShare\":true"); } if (view.DesiredJobTypes.IsFlagSet(JobTypes.Temp)) { sb.Append(",\"Temp\":true"); } sb.Append(",\"Summary\":").Append(view.Resume.Summary == null ? "null" : "\"" + view.Resume.Summary.Replace("\r\n", "\\r\\n").Replace("\t", "\\t").Replace("'", "\\u0027") + "\"") .Append(",\"Jobs\":["); for (var index = 0; index < view.Resume.Jobs.Count; ++index) { var job = view.Resume.Jobs[index]; if (index != 0) { sb.Append(","); } sb.Append("{\"Title\":").Append(job.Title == null ? "null" : "\"" + job.Title + "\"") .Append(",\"IsCurrent\":").Append(job.IsCurrent ? "true" : "false") .Append(",\"StartDate\":").Append(job.Dates == null || job.Dates.Start == null ? "null" : string.Format("\"{0:D4}-{1:D2}\"", job.Dates.Start.Value.Year, job.Dates.Start.Value.Month)) .Append(",\"EndDate\":").Append(job.Dates == null || job.Dates.End == null ? "null" : string.Format("\"{0:D4}-{1:D2}\"", job.Dates.End.Value.Year, job.Dates.End.Value.Month)) .Append(",\"Company\":").Append(job.Company == null ? "null" : "\"" + job.Company + "\"") .Append("}"); } sb.Append("]").Append(",\"DesiredSalary\":").Append(view.DesiredSalary == null ? "null" : "\"" + view.DesiredSalary + "\""); sb.Append("},\"Success\":true,\"Errors\":null}"); Assert.AreEqual(sb.ToString(), response); }
protected CandidateModel GetCandidateModel(EmployerMemberView view) { const string method = "CandidateModel Creation"; #region Log Stopwatch searchTime = null; if (EventSource.IsEnabled(Event.Trace)) { searchTime = Stopwatch.StartNew(); } #endregion // Only supply the phone numbers if the candidate has them and if they have already been accessed. var canContactByPhone = view.CanContactByPhone(); var phoneNumbers = canContactByPhone == CanContactStatus.YesWithoutCredit && view.HasBeenAccessed ? view.PhoneNumbers.Where(p => !string.IsNullOrEmpty(p.Number)).Select(p => p.Number).ToList() : null; // Always convert salary to yearly rate for display. var salary = view.DesiredSalary == null ? null : view.DesiredSalary.ToRate(SalaryRate.Year); var model = new CandidateModel { Id = view.Id, CanContact = view.CanContact(), CanContactByPhone = canContactByPhone, HasBeenViewed = view.HasBeenViewed, HasBeenAccessed = view.HasBeenAccessed, IsInMobileFolder = view.IsInMobileFolder, FullName = view.GetCandidateTitle(), PhoneNumbers = phoneNumbers, LastUpdatedTime = _memberStatusQuery.GetLastUpdatedTime(view, view, view.Resume).ToUniversalTime(), Status = view.Status, Location = view.Address.Location.ToString(), DesiredSalary = salary == null ? null : new SalaryModel { LowerBound = salary.LowerBound, UpperBound = salary.UpperBound }, DesiredJobTitle = view.DesiredJobTitle, DesiredJobTypes = view.DesiredJobTypes, Jobs = view.Resume == null || view.Resume.Jobs == null || view.Resume.Jobs.Count == 0 ? null : view.Resume.Jobs.Select(j => new JobModel { Title = j.Title, StartDate = j.Dates == null ? null : j.Dates.Start, EndDate = j.Dates == null ? null : j.Dates.End, IsCurrent = j.IsCurrent, Company = j.Company, }).ToList(), Summary = view.Resume == null ? null : view.Resume.Summary, }; #region Log if (EventSource.IsEnabled(Event.Trace)) { searchTime.Stop(); EventSource.Raise(Event.Trace, method, "Model Created.", Event.Arg("member id", view.Id), Event.Arg("model creation time (ms)", searchTime.ElapsedMilliseconds)); } #endregion return(model); }