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; } } }
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); }
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); } }