public void GetAuthors_GetSecondPage_ReturnsSecondPage()
        {
            // Arrange
            var dbBuilder = new SQLiteDbBuilder(_testOutput);

            using (CourseContext context = dbBuilder.BuildContext())
            {
                context.Countries.Add(new Country()
                {
                    Id          = "BE",
                    Description = "Belgium"
                });

                context.Countries.Add(new Country()
                {
                    Id          = "US",
                    Description = "United States of America"
                });

                context.Authors.Add(new Author()
                {
                    FirstName = "Kevin", LastName = "Dockx", CountryId = "BE"
                });
                context.Authors.Add(new Author()
                {
                    FirstName = "Gill", LastName = "Cleeren", CountryId = "BE"
                });
                context.Authors.Add(new Author()
                {
                    FirstName = "Julie", LastName = "Lerman", CountryId = "US"
                });
                context.Authors.Add(new Author()
                {
                    FirstName = "Shawn", LastName = "Wildermuth", CountryId = "BE"
                });
                context.Authors.Add(new Author()
                {
                    FirstName = "Deborah", LastName = "Kurata", CountryId = "US"
                });
                context.SaveChanges();
            }

            using (var context = dbBuilder.BuildContext())
            {
                // Act
                AuthorRepository target = new AuthorRepository(context);
                var result = target.GetAuthors(2, 3);

                // Assert
                Assert.Equal(2, result.Count());
                Assert.Same("Wildermuth", result.ToList()[0].LastName);
                Assert.Same("Kurata", result.ToList()[1].LastName);
            }
        }
        public void GetAuthors_EmptyGuid_Throws_Argument_Exception()
        {
            // Arrange
            using (CourseContext context = new SQLiteDbBuilder(_testOutput).BuildContext())
            {
                var target = new AuthorRepository(context);

                // Assert
                Assert.Throws <ArgumentException>(
                    // Act
                    () => target.GetAuthor(Guid.Empty));
            }
        }
        public void AddAuthor_AuthorWithoutCountry_DefaultsToBE()
        {
            List <string> logs = new List <string>();
            // Arrange
            var dbBuilder = new SQLiteDbBuilder(_testOutput, logs);
            var newAuthor = new Author
            {
                Id        = new Guid("ae9118fd-4ffd-4895-a756-c371f656eeed"),
                FirstName = "New First Name",
                LastName  = "New Last Name"
            };

            using (var context = dbBuilder.BuildContext())
            {
                context.Countries.Add(new Country()
                {
                    Id          = "BE",
                    Description = "Belgium"
                });
                context.SaveChanges();
            }

            // Act
            using (var context = dbBuilder.BuildContext())
            {
                var target = new AuthorRepository(context);
                target.AddAuthor(newAuthor);
                target.SaveChanges();
            }

            // Assert
            using (var context = dbBuilder.BuildContext())
            {
                var target      = new AuthorRepository(context);
                var addedAuthor = target.GetAuthor(
                    new Guid("ae9118fd-4ffd-4895-a756-c371f656eeed"));
                Assert.Equal("BE", context.Authors.Single().CountryId);
            }
        }