public async Task EditAsync_ShouldAddCorrectEditToInterview_WhenInterviewExists() { var interviewToEditId = Guid.NewGuid().ToString(); var interview = new Interview() { Id = interviewToEditId }; await this.dbContext.Interviews.AddAsync(interview); await this.dbContext.SaveChangesAsync(); var interviewWithEdits = new InterviewEditInputModel { Id = interviewToEditId }; var interviewService = new InterviewService(this.dbContext); var editorId = Guid.NewGuid().ToString(); await interviewService.EditAsync(interviewWithEdits, editorId); var actualInterview = this.dbContext.Interviews.First(); Assert.Equal(editorId, actualInterview.Edits.FirstOrDefault()?.EditorId); }
public void EditAsync_ShouldThrowInvalidInterviewException_WhenInterviewNotExists() { var interviewWithEdits = new InterviewEditInputModel { Id = Guid.NewGuid().ToString() }; var interviewService = new InterviewService(this.dbContext); Assert.Throws <InvalidInterviewException>( () => interviewService.EditAsync(interviewWithEdits, Guid.NewGuid().ToString()).GetAwaiter().GetResult()); }
public async Task <IActionResult> Edit(InterviewEditInputModel interviewUpdateInputModel) { if (!ModelState.IsValid) { return(this.View(interviewUpdateInputModel)); } var userId = this.userManager.GetUserId(this.User); var editedInterview = await this.interviewService.EditAsync(interviewUpdateInputModel, userId); return(RedirectToAction("Details", "Interviews", new { editedInterview.Id })); }
public async Task EditAsync_ShouldThrowInvalidInterviewException_WhenIdExistsButInterviewIsSoftDeleted() { var interviewId = Guid.NewGuid().ToString(); await this.dbContext.Interviews.AddAsync(new Interview { Id = interviewId, IsDeleted = true }); await this.dbContext.SaveChangesAsync(); var interviewService = new InterviewService(this.dbContext); var interviewWithEdits = new InterviewEditInputModel { Id = interviewId }; Assert.Throws <InvalidInterviewException>( () => interviewService.EditAsync(interviewWithEdits, Guid.NewGuid().ToString()).GetAwaiter().GetResult()); }
public async Task <Interview> EditAsync(InterviewEditInputModel interviewEditInputModel, string editorId) { var interview = await this.GetAsync(interviewEditInputModel.Id); interview.Title = interviewEditInputModel.Title; interview.Interviewed = interviewEditInputModel.Interviewed; interview.Content = interviewEditInputModel.Content; interview.Author = interviewEditInputModel.Author; interview.ImageId = interviewEditInputModel.Image?.Id; interview.Edits.Add(new InterviewEdit { EditorId = editorId, EditDateTime = DateTime.UtcNow }); await this.db.SaveChangesAsync(); return(interview); }
public async Task EditAsync_ShouldSaveChangesToDb_WhenInterviewExists() { var interviewToEditId = Guid.NewGuid().ToString(); var interview = new Interview { Id = interviewToEditId, Title = "CurrentTitle", Interviewed = "CurrentInterviewed", Author = "CurrentAuthor", Content = "CurrentContent", Image = new Image { Id = "1" }, }; await this.dbContext.Interviews.AddAsync(interview); await this.dbContext.SaveChangesAsync(); var interviewWithEdits = new InterviewEditInputModel() { Id = interviewToEditId, Title = "NewTitle", Interviewed = "NewInterviewed", Author = "NewAuthor", Content = "NewContent", Image = new ImageBaseInputModel { Id = "2" }, }; var interviewService = new InterviewService(this.dbContext); var editorId = Guid.NewGuid().ToString(); await interviewService.EditAsync(interviewWithEdits, editorId); var actualInterview = this.dbContext.Interviews.First(); Assert.Equal(interviewWithEdits.Id, actualInterview.Id); Assert.Equal(interviewWithEdits.Title, actualInterview.Title); Assert.Equal(interviewWithEdits.Interviewed, actualInterview.Interviewed); Assert.Equal(interviewWithEdits.Author, actualInterview.Author); Assert.Equal(interviewWithEdits.Content, actualInterview.Content); Assert.Equal(interviewWithEdits.Content, actualInterview.Content); Assert.Equal(interviewWithEdits.Image.Id, actualInterview.ImageId); }