Example #1
0
        public void ProcessTweet(User user, HelloTweet tweet)
        {
            if (_repo
                .UserTypes
                .Any(t => t.UserTypeID == tweet.UserType))
            {
                user.UserTypeID = tweet.UserType;
            }
            user.ShadowAccount = false;

            foreach (var tagName in tweet.Tags)
            {
                var tag = _repo
                    .Tags
                    .SingleOrDefault(t => t.Username == user.Username
                                       && t.Name == tagName);
                if (tag == null)
                {
                    // Add new tag
                    tag = new Tag
                    {
                        Created = DateTime.Now,
                        Name = tagName,
                        Username = user.Username
                    };

                    _repo
                        .Tags
                        .InsertOnSubmit(tag);
                }
                else
                {
                    // or update old tag
                    tag.Created = DateTime.Now;
                }
            }
        }
Example #2
0
        public void ProcessHelloTweetForNewUser()
        {
            //Arrange
            TestHelperMethods.SetupTestEvent(repo);
            var tags = new List<string> { "c#", "sql", "vb" };
            var hello = new HelloTweet { Tags = tags, UserType = "biz" };
            var helloUser = TestHelperMethods.CreateTestUser(repo, "newUser");

            //Act
            processor.ProcessTweet(helloUser, hello);
            repo.SubmitChanges();

            //Assert
            var storedTags = repo.Tags.Where(t => t.Username == "newUser").Select(t => t.Name).AsEnumerable();
            var storedUser = repo.Users.Where(u => u.Username == "newUser").FirstOrDefault();
            Assert.True(storedUser.UserType.Name == "Biz");
            Assert.Contains("c#", storedTags);
            Assert.Contains("sql", storedTags);
            Assert.Contains("vb", storedTags);
        }
Example #3
0
        public void ProcessHelloTweetForExistingUser()
        {
            //Arrange
            TestHelperMethods.SetupTestEvent(repo);
            var tags = new List<string> {"c#", "jquery", "dotnet"};
            var hello = new HelloTweet {Tags = tags, UserType = "dev" };
            var helloUser = repo.Users.Where(u => u.Username == "thatismatt").FirstOrDefault();
            var oldTags = repo.Tags.Where(t => t.Username == "thatismatt").Select(t => t.Name).AsEnumerable();

            //Act
            processor.ProcessTweet(helloUser, hello);
            repo.SubmitChanges();

            //Assert
            var newTags = repo.Tags.Where(t => t.Username == "thatismatt").Select(t => t.Name).AsEnumerable();
            var storedUser = repo.Users.Where(u => u.Username == "thatismatt").FirstOrDefault();
            Assert.True(storedUser.UserType.Name == "Dev");
            Assert.Contains("c#", newTags);
            Assert.Contains("jquery", newTags);
            Assert.Contains("dotnet", newTags);

            foreach (var tag in oldTags)
            {
                Assert.DoesNotContain(tag, newTags);
            }
        }