public async Task EditAsync_WithCorrectData_ShouldSuccessfullyEdit() { var testContent = "TestContent"; // Arrange var context = ApplicationDbContextInMemoryFactory.InitializeContext(); var replyRepository = new EfDeletableEntityRepository <Reply>(context); var repliesService = new RepliesService(replyRepository); var inputModel = new CreateReplyInputModel() { Content = testContent, }; await repliesService.CreateAsync(inputModel); var reply = replyRepository.All().FirstOrDefault(c => c.Content == testContent); // Act var expectedReplyContent = "Edited_TestContent"; await repliesService.EditAsync(reply.Id, expectedReplyContent); var actualReplyContent = reply.Content; // Assert reply = await replyRepository.GetByIdWithDeletedAsync(reply.Id); Assert.Equal(expectedReplyContent, actualReplyContent); }
public async Task EditMethodShouldChangeDescriptionAndModifiedOn(string creationDescription, string editedDescription) { var options = new DbContextOptionsBuilder <ForumDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()) .Options; var db = new ForumDbContext(options); var usersServiceMock = new Mock <IUsersService>(); var dateTimeProviderMock = new Mock <IDateTimeProvider>(); dateTimeProviderMock.Setup(dtp => dtp.Now()).Returns(new DateTime(2020, 3, 27)); await db.Replies.AddAsync(new Reply { Description = creationDescription, CreatedOn = dateTimeProviderMock.Object.Now() }); await db.SaveChangesAsync(); var repliesService = new RepliesService(db, null, usersServiceMock.Object, dateTimeProviderMock.Object); await repliesService.EditAsync(1, editedDescription); var expected = new Reply { Description = editedDescription, ModifiedOn = dateTimeProviderMock.Object.Now() }; var actual = await db.Replies.FirstOrDefaultAsync(); expected.Description.Should().BeSameAs(actual.Description); expected.ModifiedOn.Should().Be(actual.ModifiedOn); }
public async Task EditAsync_WithIncorrectData_ShouldThrowArgumentNullException() { var incorrectId = Guid.NewGuid().ToString(); // Arrange var context = ApplicationDbContextInMemoryFactory.InitializeContext(); var replyRepository = new EfDeletableEntityRepository <Reply>(context); var repliesService = new RepliesService(replyRepository); // Act // Assert await Assert.ThrowsAsync <ArgumentException>(async() => { await repliesService.EditAsync(incorrectId, "RandomContent"); }); }