public void GetScratchVersesFromASpecificPoemForASpecificUser()
        {
            IVerseRepository verseRepository = GetRepositoryWithEnrolledUnitOfWork();
            AuthorityType authorityType = new LegendAuthorityType();
            RegisterDataStoreObject(authorityType);
            UserProfile profile1 = CreateUserProfile(authorityType);
            RegisterDataStoreObject(profile1);
            UserProfile profile2 = CreateUserProfile(authorityType);
            RegisterDataStoreObject(profile2);
            Poem poem = CreatePoem<ClassicalPoem>(profile1.Id);
            RegisterDataStoreObject(poem);
            VerseType verseType = new ScratchVerseType();
            RegisterDataStoreObject(verseType);
            int numberOfVersesWrittenForOneUser = Rand.Next(10, 20);
            int numberOfVersesWrittenByAnotherUser = Rand.Next(10, 20);
            DateTime date = DateTime.Now;
            for (int i = 0; i < numberOfVersesWrittenForOneUser; i++)
            {
                Verse verse = new Verse
                              {
                                  AuthorProfileId = profile1.Id,
                                  FromIpAddress = "127.0.0.1",
                                  LastEdit = DateTime.UtcNow,
                                  Location = "Chisinau",
                                  OrderNr = 1,
                                  PoemId = poem.Id,
                                  Text = Guid.NewGuid().ToString(),
                                  VerseTypeId = verseType.Id,
                                  WrittenAt = date - TimeSpan.FromDays(10)
                              };
                RegisterDataStoreObject(verse);
            }

            for (int i = 0; i < numberOfVersesWrittenByAnotherUser; i++)
            {
                Verse verse = new Verse
                              {
                                  AuthorProfileId = profile2.Id,
                                  FromIpAddress = "127.0.0.1",
                                  LastEdit = DateTime.UtcNow,
                                  Location = "Chisinau",
                                  OrderNr = 1,
                                  PoemId = poem.Id,
                                  Text = Guid.NewGuid().ToString(),
                                  VerseTypeId = verseType.Id,
                                  WrittenAt = date - TimeSpan.FromDays(10)
                              };
                RegisterDataStoreObject(verse);
            }

            var versesForProfile1 = verseRepository.GetVersesFromPoemForUser(poem.Id, profile1.Id);
            var versesForProfile2 = verseRepository.GetVersesFromPoemForUser(poem.Id, profile2.Id);
            var allVerses = verseRepository.GetVersesFromPoem(poem.Id);

            Assert.AreEqual(numberOfVersesWrittenForOneUser, versesForProfile1.Count());
            Assert.AreEqual(numberOfVersesWrittenByAnotherUser, versesForProfile2.Count());
            Assert.AreEqual(numberOfVersesWrittenByAnotherUser + numberOfVersesWrittenForOneUser, allVerses.Count());
        }
        public void GetPoemsForAPlayer()
        {
            IPlayerRepository playerRepository = GetRepositoryWithEnrolledUnitOfWork();
            AuthorityType authorityType = new LegendAuthorityType();
            RegisterDataStoreObject(authorityType);
            UserProfile initialAuthor = CreateUserProfile(authorityType);
            RegisterDataStoreObject(initialAuthor);
            const int NumberOfArchivedPoems = 10;
            const int NumberOfActivePoems = 5;

            for (int i = 0; i < NumberOfArchivedPoems; i++)
            {
                Poem poem = CreatePoem<ClassicalPoem>(initialAuthor.Id);
                poem.IsArchived = true;
                RegisterDataStoreObject(poem);
                Player player = new Player { PoemId = poem.Id, UserProfileId = initialAuthor.Id };
                RegisterDataStoreObject(player);
            }

            for (int i = 0; i < NumberOfActivePoems; i++)
            {
                Poem poem = CreatePoem<ClassicalPoem>(initialAuthor.Id);
                poem.IsArchived = false;
                RegisterDataStoreObject(poem);
                Player player = new Player { PoemId = poem.Id, UserProfileId = initialAuthor.Id };
                RegisterDataStoreObject(player);
            }

            var archivedPoems = playerRepository.GetArchiveGamesFor(initialAuthor.Id);
            var activePoems = playerRepository.GetActiveGamesFor(initialAuthor.Id);
            var totalPoems = playerRepository.GetGamesFor(initialAuthor.Id);

            Assert.AreEqual(NumberOfArchivedPoems, archivedPoems.Count());
            Assert.AreEqual(NumberOfActivePoems, activePoems.Count());
            Assert.AreEqual(NumberOfActivePoems + NumberOfArchivedPoems, totalPoems.Count());
        }