Example #1
0
        public void Insert_WithExistingDescriptionAndLanguage_Success()
        {
            var options = TestUtilities.GetDbContextOptions();

            var pack = new Pack {
                Name = "Test Pack", Description = "Test Description", Language = "ru"
            };
            var packDuplicated = new Pack {
                Name = "Test Pack1", Description = "Test Description", Language = "ru"
            };

            // Run the test against one instance of the context
            using (var context = new FillerDbContext(options))
            {
                var repo = new PackRepository(context);
                repo.InsertAsync(pack).GetAwaiter().GetResult();
                repo.InsertAsync(packDuplicated).GetAwaiter().GetResult();
            }

            // Use a separate instance of the context to verify correct data was saved to database
            using (var context = new FillerDbContext(options))
            {
                var repo                = new PackRepository(context);
                var savedPack           = repo.GetAll().FirstOrDefault(p => p.Name == pack.Name && p.Description == pack.Description);
                var savedPackDuplicated = repo.GetAll().FirstOrDefault(p => p.Name == packDuplicated.Name && p.Description == packDuplicated.Description);
                Assert.NotNull(savedPack);
                Assert.NotNull(savedPackDuplicated);
                Assert.GreaterOrEqual(savedPack.Id, 1);
                Assert.GreaterOrEqual(savedPackDuplicated.Id, 1);
            }
        }
Example #2
0
        public void Edit_ExistingPack_Success()
        {
            var options = TestUtilities.GetDbContextOptions();

            var pack = new Pack {
                Name = "Test Pack", Description = "Test Description", Language = "ru"
            };
            const string newName        = "new name";
            const string newDescription = "new description";
            const string newLanguage    = "en";

            // Run the test against one instance of the context
            using (var context = new FillerDbContext(options))
            {
                var repo = new PackRepository(context);
                repo.InsertAsync(pack).GetAwaiter().GetResult();
                pack.Name        = newName;
                pack.Description = newDescription;
                pack.Language    = newLanguage;
                repo.UpdateAsync(pack);
            }

            using (var context = new FillerDbContext(options))
            {
                var repo = new PackRepository(context);

                var updatedPack = repo.GetAll().Single();
                Assert.AreEqual(updatedPack.Name, pack.Name);
                Assert.AreEqual(updatedPack.Language, pack.Language);
                Assert.AreEqual(updatedPack.Description, pack.Description);
            }
        }
Example #3
0
        public static (List <Pack>, List <PhraseItem>, List <ServerUser>) GeneratePackData(
            DbContextOptions <FillerDbContext> options)
        {
            const int packNumber     = 10;
            const int phrasesPerPack = 10;
            var       users          = new Faker <ServerUser>()
                                       .Rules((f, u) =>
            {
                u.Id       = Guid.NewGuid().ToString();
                u.Email    = f.Person.Email;
                u.UserName = f.Person.UserName;
            })
                                       .Generate(new Randomizer().Number(4, 5));

            var phrases = new Faker <PhraseItem>()
                          .Rules((f, p) =>
            {
                p.Id           = f.UniqueIndex;
                p.Complexity   = f.Random.Number(1, 5);
                p.CreatedById  = f.PickRandom(users).Id;
                p.CreatedDate  = f.Date.Past();
                p.Description  = f.Lorem.Text();
                p.Phrase       = f.Lorem.Words(f.Random.Number(1, 4)).Join(" ");
                p.Track        = new Track();
                p.Version      = 1;
                p.ReviewStates = GenerateReviewStates(users);
            })
                          .Generate(packNumber * phrasesPerPack);

            var phraseIndex = 0;
            var packs       = new Faker <Pack>()
                              .Rules((f, p) =>
            {
                p.Id          = f.UniqueIndex;
                p.Name        = f.Lorem.Word();
                p.Description = f.Lorem.Sentence();
                p.Language    = "en";
                p.Phrases     = phrases.GetRange(phraseIndex, phrasesPerPack);
                phraseIndex  += phrasesPerPack;
            })
                              .Generate(packNumber);

            using (var context = new FillerDbContext(options))
            {
                var userRepository = new UserRepository(context);
                userRepository.InsertRangeAsync(users).GetAwaiter().GetResult();

                var repo = new PackRepository(context);
                repo.InsertRangeAsync(packs).GetAwaiter().GetResult();
            }

            return(packs, phrases, users);
        }
Example #4
0
        public void CreateCardRepositoryFromJson()
        {
            //Arrange
            string packname = "Hilarious!";

            //Act
            Dictionary <string, Pack> cardCollection   = PackRepository.LoadCardCollection();
            IEnumerable <WhiteCard>   whiteCardsInPack = cardCollection[packname].WhiteCards;
            bool doesThisCardExistInPackOral           = whiteCardsInPack.Any(card => card.Text == "Oral sex that tastes like urine.");

            //Assert
            Assert.True(doesThisCardExistInPackOral);
        }
Example #5
0
        public void CreateCardRepositoryFromJsonContainsNoEmpty()
        {
            //Arrange
            var packname = "Hilarious!";

            //Act
            Dictionary <string, Pack> cardCollection   = PackRepository.LoadCardCollection();
            IEnumerable <WhiteCard>   whiteCardsInPack = cardCollection[packname].WhiteCards;
            bool doesThisCardExistInPackEmpty          = whiteCardsInPack.Any(card => card.Text == "");

            //Assert
            Assert.False(doesThisCardExistInPackEmpty);
        }
        public void BeforeTest()
        {
            var builder = new DbContextOptionsBuilder <PackContext>();

            builder.EnableSensitiveDataLogging();
            builder.UseInMemoryDatabase("testpack");

            var context    = new PackContext(builder.Options);
            var repository = new PackRepository(context);

            this.controller = new(
                Mock.Of <ILogger <PacksController> >(),
                repository);
            Assert.IsNotNull(this.controller);
        }
    IRepository <T> Get(rowType)
    {
        IRepository <T> repository = default(IRepository <T>);

        switch (rowType)
        {
        case Carton:
            repository = new CartonRepository();
            break;

        case Pack:
            repository = new PackRepository();
            break;
        }

        return(repository);
    }
Example #8
0
        public void GetPack_ById_Success()
        {
            var options = TestUtilities.GetDbContextOptions();

            (List <Pack> packs, List <PhraseItem>, List <ServerUser>)data = TestUtilities.GeneratePackData(options);

            // Use a separate instance of the context to verify correct data was saved to database
            using (var context = new FillerDbContext(options))
            {
                var pack      = new Faker().PickRandom(data.packs);
                var repo      = new PackRepository(context);
                var savedPack = repo.GetAsync(pack.Id).GetAwaiter().GetResult();
                Assert.AreEqual(pack.Id, savedPack.Id);
                var randomPack = repo.GetAsync(int.MaxValue - 1).GetAwaiter().GetResult();
                Assert.Null(randomPack);
            }
        }
Example #9
0
        public void Insert_WithExistingId_Failed()
        {
            var options = TestUtilities.GetDbContextOptions();

            var pack = new Pack {
                Id = 1, Name = "Test Pack", Description = "Test Description", Language = "ru"
            };
            var packDuplicated = new Pack {
                Id = 1, Name = "Test Pack1", Description = "Test Description1", Language = "ru"
            };

            // Run the test against one instance of the context
            using (var context = new FillerDbContext(options))
            {
                var repo = new PackRepository(context);
                repo.InsertAsync(pack).GetAwaiter().GetResult();
                Assert.Throws <InvalidOperationException>(() => repo.InsertAsync(packDuplicated).GetAwaiter().GetResult());
            }
        }
Example #10
0
        public void GetFullInfoAsync_Existing_Success()
        {
            var options = TestUtilities.GetDbContextOptions();

            (List <Pack> packs, List <PhraseItem>, List <ServerUser>)data = TestUtilities.GeneratePackData(options);

            using (var context = new FillerDbContext(options))
            {
                var repo        = new PackRepository(context);
                var actualPacks = data.packs.Select(p => p.Id)
                                  .Select(id => repo.GetFullInfoAsync(id).GetAwaiter().GetResult()).ToList();

                var compareLogic = new CompareLogic();
                compareLogic.Config.MembersToIgnore.Add("User");
                compareLogic.Config.MembersToIgnore.Add("CreatedBy");

                var result = compareLogic.Compare(data.packs, actualPacks);
                Assert.True(result.AreEqual, result.DifferencesString);
            }
        }
Example #11
0
        public void DeleteById_Existing_Success()
        {
            var options = TestUtilities.GetDbContextOptions();

            (List <Pack> packs, List <PhraseItem>, List <ServerUser>)data = TestUtilities.GeneratePackData(options);

            var pack = new Faker().PickRandom(data.packs);

            using (var context = new FillerDbContext(options))
            {
                new PackRepository(context).DeleteAsync(pack.Id).GetAwaiter().GetResult();
            }

            // Use a separate instance of the context to verify correct data was saved to database
            using (var context = new FillerDbContext(options))
            {
                var repo   = new PackRepository(context);
                var actual = repo.GetAsync(pack.Id).GetAwaiter().GetResult();
                Assert.Null(actual);
            }
        }
Example #12
0
        public void Delete_Existing_Success()
        {
            var options = TestUtilities.GetDbContextOptions();

            var pack = new Pack {
                Name = "Test Pack111", Description = "Test Description", Language = "ru"
            };

            // Run the test against one instance of the context
            using (var context = new FillerDbContext(options))
            {
                var repo = new PackRepository(context);
                repo.InsertAsync(pack).GetAwaiter().GetResult();
                repo.DeleteAsync(pack).GetAwaiter().GetResult();
            }

            // Use a separate instance of the context to verify correct data was saved to database
            using (var context = new FillerDbContext(options))
            {
                var repo = new PackRepository(context);
                Assert.IsEmpty(repo.GetAll());
            }
        }
Example #13
0
 public PackController()
 {
     _packRepository = new PackRepository();
 }