Inheritance: IUserPreferenceRepository
        public void UserPreferenceRepositoryShouldReturnTopThreeDislikes()
        {
            const string hottest = "applesMostCommon";
            user1.Dislikes.Add(new Dislike {UserId = user1.LoginId, Text = hottest});
            const string secondHottest = "orangesSecondMostCommon";
            user1.Dislikes.Add(new Dislike {UserId = user1.LoginId, Text = secondHottest});
            const string thirdHottest = "plumsThirdMostCommon";
            user1.Dislikes.Add(new Dislike {UserId = user1.LoginId, Text = thirdHottest});
            user1.Dislikes.Add(new Dislike {UserId = user1.LoginId, Text = "pineapples"});
            user1.Dislikes.Add(new Dislike {UserId = user1.LoginId, Text = "bananas"});

            user2.Dislikes.Add(new Dislike {UserId = user2.LoginId, Text = hottest});
            user2.Dislikes.Add(new Dislike {UserId = user2.LoginId, Text = secondHottest});
            user2.Dislikes.Add(new Dislike {UserId = user2.LoginId, Text = thirdHottest});

            user3.Dislikes.Add(new Dislike {UserId = user3.LoginId, Text = hottest});
            user3.Dislikes.Add(new Dislike {UserId = user3.LoginId, Text = secondHottest});

            user4.Dislikes.Add(new Dislike {UserId = user4.LoginId, Text = hottest});

            registerUsers();

            IList dislikes = new UserPreferenceRepository(session).HottestDislikes();
            Assert.NotNull(dislikes);
            Assert.AreEqual(3, dislikes.Count);
            Assert.AreEqual(dislikes[0], hottest);
            Assert.AreEqual(dislikes[1], secondHottest);
            Assert.AreEqual(dislikes[2], thirdHottest);
        }
        public void WhenTieThenTopThreeCountsOfLikesAreReturned()
        {
            user1.Likes.Add(new Like {UserId = user1.LoginId, Text = "rank1"});
            user1.Likes.Add(new Like {UserId = user1.LoginId, Text = "anotherRank1"});
            user1.Likes.Add(new Like {UserId = user1.LoginId, Text = "rank2"});
            user1.Likes.Add(new Like {UserId = user1.LoginId, Text = "rank3"});
            user1.Likes.Add(new Like {UserId = user1.LoginId, Text = "rank4"});

            user2.Likes.Add(new Like {UserId = user2.LoginId, Text = "rank1"});
            user2.Likes.Add(new Like {UserId = user2.LoginId, Text = "anotherRank1"});
            user2.Likes.Add(new Like {UserId = user2.LoginId, Text = "rank2"});
            user2.Likes.Add(new Like {UserId = user2.LoginId, Text = "rank3"});

            user3.Likes.Add(new Like {UserId = user3.LoginId, Text = "rank1"});
            user3.Likes.Add(new Like {UserId = user3.LoginId, Text = "anotherRank1"});
            user3.Likes.Add(new Like {UserId = user3.LoginId, Text = "rank2"});

            user4.Likes.Add(new Like {UserId = user4.LoginId, Text = "rank1"});
            user4.Likes.Add(new Like {UserId = user4.LoginId, Text = "anotherRank1"});

            registerUsers();

            IList likesList = new UserPreferenceRepository(session).HottestLikes();
            Assert.NotNull(likesList);
            Assert.AreEqual(4, likesList.Count);
            Assert.AreEqual(likesList[2], "rank2");
            Assert.AreEqual(likesList[3], "rank3");
        }
        public void WhenOnlyTwoLikesArePopularThenReturnJustTheTwo()
        {
            user1.Likes.Add(new Like {UserId = user1.LoginId, Text = "rank1"});
            user1.Likes.Add(new Like {UserId = user1.LoginId, Text = "anotherRank1"});

            user2.Likes.Add(new Like {UserId = user2.LoginId, Text = "rank1"});
            user2.Likes.Add(new Like {UserId = user2.LoginId, Text = "anotherRank1"});

            user3.Likes.Add(new Like {UserId = user3.LoginId, Text = "rank1"});
            user3.Likes.Add(new Like {UserId = user3.LoginId, Text = "anotherRank1"});

            user4.Likes.Add(new Like {UserId = user4.LoginId, Text = "rank1"});

            registerUsers();

            IList likesList = new UserPreferenceRepository(session).HottestLikes();
            Assert.NotNull(likesList);
            Assert.AreEqual(2, likesList.Count);
        }