コード例 #1
0
        public void ProcessMetTweet()
        {
            //Arrange
            TestHelperMethods.SetupTestEvent(repo);

            var met = new MetTweet{Friends = {"benadderson"}};
            var metUser = repo.Users.Where(u => u.Username == "thatismatt").FirstOrDefault();

            //Act
            processor.ProcessTweet(metUser, met);
            repo.SubmitChanges();

            Friendship storedFriendship = repo.Friendships.Where(f => f.Befriender == metUser.Username &&
                                                       f.Befriendee == "benadderson").FirstOrDefault();

            //Assert
            Assert.NotNull(storedFriendship);
        }
コード例 #2
0
        public void CantMeetOutsideAnEvent()
        {
            //Arrange
            var met = new MetTweet {Friends = {"benadderson"}};
            var metUser = repo.Users.Where(u => u.Username == "thatismatt").First();

            //Act
            processor.ProcessTweet(metUser, met);
            repo.SubmitChanges();

            Friendship storedFriendship = repo.Friendships.Where(f => f.Befriender == metUser.Username &&
                                                                 f.Befriendee == "benadderson").FirstOrDefault();

            //Assert
            Assert.Null(storedFriendship);
        }
コード例 #3
0
        public void ProcessMeetingTweetsForPoints()
        {
            //Arrange
            TestHelperMethods.SetupTestEvent(repo);

            var met1 = new MetTweet { Friends = { "benadderson" } };
            var met2 = new MetTweet { Friends = { "thatismatt" } };
            var metUser1 = repo.Users.Where(u => u.Username == "thatismatt").FirstOrDefault();
            var metUser2 = repo.Users.Where(u => u.Username == "benadderson").FirstOrDefault();

            //Act
            processor.ProcessTweet(metUser1, met1);
            processor.ProcessTweet(metUser2, met2);
            repo.SubmitChanges();

            Friendship storedFriendship1 = repo.Friendships.Where(f => f.Befriender == metUser1.Username &&
                                                       f.Befriendee == "benadderson").FirstOrDefault();
            Friendship storedFriendship2 = repo.Friendships.Where(f => f.Befriender == metUser2.Username &&
                                                       f.Befriendee == "thatismatt").FirstOrDefault();
            Point pointsAwarded1 = repo.Points.Where(p => p.Username == metUser1.Username).FirstOrDefault();
            Point pointsAwarded2 = repo.Points.Where(p => p.Username == metUser2.Username).FirstOrDefault();

            //Assert
            Assert.NotNull(storedFriendship1);
            Assert.NotNull(storedFriendship2);
            Assert.NotNull(pointsAwarded1);
            Assert.True(pointsAwarded1.Details == "Mutual meeting");
            Assert.True(pointsAwarded1.Amount == 10);
            Assert.True(pointsAwarded1.Username == "thatismatt");
            Assert.NotNull(pointsAwarded2);
            Assert.True(pointsAwarded2.Details == "Mutual meeting");
            Assert.True(pointsAwarded2.Amount == 10);
            Assert.True(pointsAwarded2.Username == "benadderson");
        }
コード例 #4
0
ファイル: TweetProcessor.cs プロジェクト: ajglover/helloapp
        public void ProcessTweet(User user, MetTweet tweet)
        {
            List<string> befriendees = user
                .Befrienders
                .Select(f => f.Befriendee)
                .ToList();

            foreach (string friend in tweet.Friends)
            {
                // Prevent user from meeting themselves
                if (user.Username == friend)
                    continue;

                User friendUser = EnsureUser(friend);

                // Add the friendship if it doesn't already exist
                if (!befriendees.Contains(friend))
                {
                    user.Befrienders.Add(new Friendship { Befriendee = friend });

                    // If the reverse friendship exists, credit points
                    if (_repo
                        .Friendships
                        .Any(f => f.Befriendee == user.Username && f.Befriender == friend))
                    {
                        CreditPoints(user, Settings.Points.Met, "Mutual meeting");
                        CreditPoints(friendUser, Settings.Points.Met, "Mutual meeting");
                    }
                }

                // Submit changes up to this point as we need to be ready to recognise reflexive meetings in the same batch.
                _repo.SubmitChanges();
            }
        }