Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 8
0
        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));
 }