public async Task IsRemovingUserTweetReactionInToggle() { this.populate(); List <UserTweetReactionModel> models = _dbContext.UserTweetReaction.ToList(); Assert.AreEqual(0, models.Count); AppUser user = _dbContext.Users.FirstOrDefault(u => u.Nickname == "marcow"); TweetModel tweet = _dbContext.Tweet.FirstOrDefault(t => t.UserId == user.Id); ReactionModel reaction = _dbContext.Reaction.FirstOrDefault(r => r.Name == "Star"); UserTweetReaction userTweetReaction = new UserTweetReaction { UserId = user.Id, TweetId = tweet.Id, ReactionId = reaction.Id }; await _repository.Toggle(userTweetReaction); models = _dbContext.UserTweetReaction.ToList(); Assert.AreEqual(1, models.Count); userTweetReaction.Id = 0; await _repository.Toggle(userTweetReaction); models = _dbContext.UserTweetReaction.ToList(); Assert.AreEqual(0, models.Count); }
public async Task IsUserBeingReactingToTweet() { (AppUser, TweetModel, ReactionModel)data = this.populate(); UserTweetReaction reaction = new UserTweetReaction { UserId = data.Item1.Id, TweetId = data.Item2.Id, ReactionId = data.Item3.Id, }; List <UserTweetReactionModel> models = _dbContext.UserTweetReaction.ToList(); Assert.AreEqual(0, models.Count); await _repository.Toggle(reaction); models = _dbContext.UserTweetReaction.ToList(); Assert.AreEqual(1, models.Count); UserTweetReaction reacted = await _repository.Reacted( new UserTweetReaction { UserId = data.Item1.Id, TweetId = data.Item2.Id, ReactionId = data.Item3.Id } ); Assert.True(reacted.Reacted); }
public async Task IsCreatingUserTweetReactionInRepo() { this.populate(); AppUser user = await _dbContext.Users.FirstOrDefaultAsync(u => u.Nickname == "marcow"); UserTweetReaction reaction = new UserTweetReaction { UserId = user.Id, TweetId = 1, ReactionId = 1 }; List <UserTweetReactionModel> models = await _dbContext.UserTweetReaction.ToListAsync(); Assert.AreEqual(0, reaction.Id); Assert.AreEqual(0, models.Count); reaction = await _repository.Toggle(reaction); models = await _dbContext.UserTweetReaction.ToListAsync(); Assert.AreEqual("marcow", reaction.User.Nickname); Assert.AreEqual("Super First Tweet", reaction.Tweet.Text); Assert.AreEqual("Star", reaction.Reaction.Name); Assert.AreNotEqual(0, reaction.Id); Assert.AreEqual(1, models.Count); reaction = await _repository.Toggle(reaction); Assert.IsNull(reaction); models = await _dbContext.UserTweetReaction.ToListAsync(); Assert.AreEqual(0, models.Count); }
public async Task <IActionResult> Toggle([FromBody] UserTweetReaction userTweetReaction) { try { await _userTweetReactionService.Toggle(userTweetReaction); } catch (ArgumentNullException e) { _logger.LogError(e.Message); } return(Ok()); }
public async Task <IActionResult> Reacted(string userId, int tweetId, int reactionId) { UserTweetReaction userTweetReaction = new UserTweetReaction { UserId = userId, TweetId = tweetId, ReactionId = reactionId }; userTweetReaction = await _userTweetReactionService.Reacted(userTweetReaction); return(Ok(userTweetReaction)); }
public async Task <UserTweetReaction> Reacted(UserTweetReaction userTweetReaction) { UserTweetReactionModel model = await _dbContext.UserTweetReaction .FirstOrDefaultAsync(u => u.UserId == userTweetReaction.UserId && u.TweetId == userTweetReaction.TweetId && u.ReactionId == userTweetReaction.ReactionId); if (model == null) { userTweetReaction.Reacted = false; return(userTweetReaction); } userTweetReaction.Reacted = true; return(userTweetReaction); }
public async Task <UserTweetReaction> Toggle(UserTweetReaction userTweetReaction) { AppUser user = await _dbContext.Users.FirstOrDefaultAsync(u => u.Id == userTweetReaction.UserId); TweetModel tweetModel = await _dbContext.Tweet.FirstOrDefaultAsync(t => t.Id == userTweetReaction.TweetId); ReactionModel reactionModel = await _dbContext.Reaction.FirstOrDefaultAsync(r => r.Id == userTweetReaction.ReactionId); if (user == null || tweetModel == null || reactionModel == null) { throw new ArgumentNullException("Invalid input"); } UserTweetReactionModel model = await _dbContext.UserTweetReaction .FirstOrDefaultAsync(u => u.UserId == userTweetReaction.UserId && u.TweetId == userTweetReaction.TweetId && u.ReactionId == userTweetReaction.ReactionId); if (model != null) { _dbContext.Remove <UserTweetReactionModel>(model); await _dbContext.SaveChangesAsync(); return(null); } model = new UserTweetReactionModel { UserId = userTweetReaction.UserId, TweetId = userTweetReaction.TweetId, ReactionId = userTweetReaction.ReactionId }; _dbContext.Add <UserTweetReactionModel>(model); await _dbContext.SaveChangesAsync(); userTweetReaction.Id = model.Id; userTweetReaction.User = user; userTweetReaction.Tweet = new Tweet { Id = tweetModel.Id, Text = tweetModel.Text }; userTweetReaction.Reaction = new Reaction(name: reactionModel.Name); userTweetReaction.Reaction.Id = reactionModel.Id; return(userTweetReaction); }
public async Task IsReactingToManyInRepo() { this.populateMany(); AppUser marcow = _dbContext.Users.FirstOrDefault(u => u.Nickname == "marcow"); TweetModel tweet1 = _dbContext.Tweet.FirstOrDefault(t => t.UserId == marcow.Id); ReactionModel star = _dbContext.Reaction.FirstOrDefault(r => r.Name == "Star"); ReactionModel heart = _dbContext.Reaction.FirstOrDefault(r => r.Name == "Heart"); ReactionModel cross = _dbContext.Reaction.FirstOrDefault(r => r.Name == "Cross"); var r1 = new UserTweetReaction { UserId = marcow.Id, TweetId = tweet1.Id, ReactionId = star.Id }; var r2 = new UserTweetReaction { UserId = marcow.Id, TweetId = tweet1.Id, ReactionId = heart.Id }; var r3 = new UserTweetReaction { UserId = marcow.Id, TweetId = tweet1.Id, ReactionId = cross.Id }; await _repository.Toggle(r1); await _repository.Toggle(r2); await _repository.Toggle(r3); IEnumerable <UserTweetReactionModel> setupReactions = _dbContext.UserTweetReaction.ToList(); Assert.AreEqual(3, setupReactions.Count()); var requestReactions = new UserTweetReaction[] { r1, r1, r3 }; IEnumerable <UserTweetReaction> resultReacions = await _repository.ReactedToMany(requestReactions); foreach (UserTweetReaction u in resultReacions) { Assert.True(u.Reacted); } }
public async Task <UserTweetReaction> Reacted(UserTweetReaction userTweetReaction) { return(await _repository.Reacted(userTweetReaction)); }
public async Task <UserTweetReaction> Toggle(UserTweetReaction userTweetReaction) { return(await _repository.Toggle(userTweetReaction)); }