public async Task ReactMethodShouldChangeReactionIfAlreadyExistsAndChangeModifiedOn(ReactionType type) { var guid = Guid.NewGuid().ToString(); var options = new DbContextOptionsBuilder <ForumDbContext>() .UseInMemoryDatabase(guid) .Options; var db = new ForumDbContext(options); var dateTimeProvider = new Mock <IDateTimeProvider>(); dateTimeProvider.Setup(dtp => dtp.Now()).Returns(new DateTime(2020, 3, 27)); var postReaction = new ReplyReaction { Id = 1, ReplyId = 1, AuthorId = guid, ReactionType = ReactionType.Like, CreatedOn = dateTimeProvider.Object.Now() }; await db.ReplyReactions.AddAsync(postReaction); await db.SaveChangesAsync(); var replyReactionsService = new ReplyReactionsService(db, dateTimeProvider.Object); var result = await replyReactionsService.ReactAsync(type, 1, guid); var actual = await db.ReplyReactions.FirstOrDefaultAsync(); var expected = new ReplyReaction { Id = 1, ReplyId = 1, AuthorId = guid, ReactionType = type, CreatedOn = dateTimeProvider.Object.Now(), ModifiedOn = dateTimeProvider.Object.Now() }; actual.Should().BeEquivalentTo(expected); result.Should().BeOfType <ReactionsCountServiceModel>(); }
public async Task GetTotalCountMethodShouldReturnAllPostReactionsCount() { var guid = Guid.NewGuid().ToString(); var options = new DbContextOptionsBuilder <ForumDbContext>() .UseInMemoryDatabase(guid) .Options; var db = new ForumDbContext(options); var dateTimeProvider = new Mock <IDateTimeProvider>(); dateTimeProvider.Setup(dtp => dtp.Now()).Returns(new DateTime(2020, 3, 27)); var reply = new Reply { Id = 1, Description = "Test description", AuthorId = guid, CreatedOn = dateTimeProvider.Object.Now() }; var replyReaction = new ReplyReaction { Id = 1, ReplyId = 1, AuthorId = guid, ReactionType = ReactionType.Like, CreatedOn = dateTimeProvider.Object.Now() }; await db.Replies.AddAsync(reply); await db.ReplyReactions.AddAsync(replyReaction); await db.SaveChangesAsync(); var replyReactionsService = new ReplyReactionsService(db, dateTimeProvider.Object); var count = await replyReactionsService.GetTotalCountAsync(); count.Should().Be(1); }