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());
        }
Пример #3
0
        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());
        }
Пример #5
0
        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);
        }