public async Task <IActionResult> CreateOnline(CreateOnlineInterviewBindingModel model) { if (!ModelState.IsValid) { return(View(model)); } var applicant = this.applicants.All().FirstOrDefault(a => a.Id == model.ApplicantId); var test = this.tests.GetById(model.TestId); if (applicant == null || test == null) { return(BadRequest()); } await this.interviews.CreateOnline(model); var testLink = test.Url; var subject = EmailSubject; var message = String.Format(EmailMessage, testLink); //await emailSender.SendEmailAsync(applicant.Email, subject, message); TempData.AddSuccessMessage(String.Format(SendTestMessage, test.Name, applicant.Email)); return(RedirectToAction(nameof(Index))); }
public async Task CreateOnline(CreateOnlineInterviewBindingModel model) { var applicant = await this.DbContext.Applicants.FirstOrDefaultAsync(a => a.Id == model.ApplicantId); var test = await this.DbContext.Tests.FirstOrDefaultAsync(t => t.Id == model.TestId); if (applicant == null || test == null) { throw new InvalidOperationException("Invalid Identity details."); } var interview = new Interview() { ApplicantId = model.ApplicantId, TestId = model.TestId, Applicant = applicant, Test = test, StartTime = DateTime.UtcNow.ToLocalTime(), EndTime = null }; await this.DbContext.Interviews.AddAsync(interview); await this.DbContext.SaveChangesAsync(); }
public async Task SetStatusInterview_WithProperStatus_ShouldSetCorrectly() { //Arrange var applicantId = 1; var applicantFirstName = "New applicant firstName"; var applicantLastName = "New applicant lastName"; var testId = 1; var testDescription = "Description"; var testUrl = "https://www.mysite.bg/"; var ResultUrl = "https://www.resultMyTest.bg/"; var applicantModel = new CreateApplicantBindingModel() { Id = applicantId, FirstName = applicantFirstName, LastName = applicantLastName, }; await this.applicants.Create(applicantModel); var testModel = new InterviewerTestBindingModel() { Id = testId, Description = testDescription, Url = testUrl }; await this.tests.Create(testModel); var interviewModel = new CreateOnlineInterviewBindingModel() { Id = 1, ApplicantId = applicantModel.Id, TestId = testModel.Id }; await this.interviews.CreateOnline(interviewModel); var setResultModel = new AdminSetApplicantTestResult() { ApplicantId = applicantModel.Id, InterviewId = interviewModel.Id, ResultUrl = ResultUrl }; //Act await this.interviews.SetTestResult(setResultModel); //Assert var interview = this.dbContext.Interviews.First(); Assert.AreEqual(ResultUrl, interview.Result.ResultUrl); }
public async Task CreateInterview_WithNullInterview_ShouldThrowException() { //Arrange CreateOnlineInterviewBindingModel interviewModel = null; //Act Func <Task> createInterview = () => this.interviews.CreateOnline(interviewModel); //Assert await Assert.ThrowsExceptionAsync <InvalidOperationException>(createInterview); }
public async Task CreateInterview_WithProperInterview_ShouldCreateCorrectly() { //Arrange var applicantId = 1; var applicantFirstName = "New applicant firstName"; var applicantLastName = "New applicant lastName"; var testId = 1; var testDescription = "Description"; var testUrl = "https://www.mysite.bg/"; var applicantModel = new CreateApplicantBindingModel() { Id = applicantId, FirstName = applicantFirstName, LastName = applicantLastName, }; await this.applicants.Create(applicantModel); var testModel = new InterviewerTestBindingModel() { Id = testId, Description = testDescription, Url = testUrl }; await this.tests.Create(testModel); var interviewModel = new CreateOnlineInterviewBindingModel() { ApplicantId = applicantModel.Id, TestId = testModel.Id }; //Act await this.interviews.CreateOnline(interviewModel); //Assert var interview = this.dbContext.Interviews.First(); Assert.AreEqual(applicantModel.Id, interview.ApplicantId); Assert.AreEqual(testModel.Id, interview.TestId); }
public async Task OnlineInterviewDetails_WithInterviewId_ShouldReturnInterview() { //Arrange var applicantId = 1; var applicantFirstName = "New applicant firstName"; var applicantLastName = "New applicant lastName"; var testId = 1; var testDescription = "Description"; var testUrl = "https://www.mysite.bg/"; var applicantModel = new CreateApplicantBindingModel() { Id = applicantId, FirstName = applicantFirstName, LastName = applicantLastName, }; await this.applicants.Create(applicantModel); var testModel = new InterviewerTestBindingModel() { Id = testId, Description = testDescription, Url = testUrl }; await this.tests.Create(testModel); var interviewModel = new CreateOnlineInterviewBindingModel() { Id = 1, ApplicantId = applicantModel.Id, TestId = testModel.Id }; await this.interviews.CreateOnline(interviewModel); //Act var interview = this.interviews.OnlineDetails(1); //Assert Assert.AreEqual(1, interview.Id); }
public async Task OnlineInterviewDetails_WithNotExistingInterview_ShouldThrowException() { //Arrange var applicantId = 1; var applicantFirstName = "New applicant firstName"; var applicantLastName = "New applicant lastName"; var testId = 1; var testDescription = "Description"; var testUrl = "https://www.mysite.bg/"; var applicantModel = new CreateApplicantBindingModel() { Id = applicantId, FirstName = applicantFirstName, LastName = applicantLastName, }; await this.applicants.Create(applicantModel); var testModel = new InterviewerTestBindingModel() { Id = testId, Description = testDescription, Url = testUrl }; await this.tests.Create(testModel); var interviewModel = new CreateOnlineInterviewBindingModel() { Id = 1, ApplicantId = applicantModel.Id, TestId = testModel.Id }; await this.interviews.CreateOnline(interviewModel); //Act Func <Task> interview = () => this.interviews.OnlineDetails(2); //Assert await Assert.ThrowsExceptionAsync <InvalidOperationException>(interview); }