public async Task TestGetByIdAsyncIdInvalid()
        {
            // Arrange
            var options = TestUtilities.BuildTestDbOptions();

            const int testId = 0;

            ClassSession result;

            await using (var context = new ApplicationDbContext(options))
            {
                context.Database.EnsureCreated();

                var repository = new ClassSessionRepository(context);

                // Act
                result =
                    await repository
                    .GetByIdAsync(testId);

                context.Database.EnsureDeleted();
            }

            // Assert
            Assert.Null(result);
        }
        public async Task TestAddNonNullEntity()
        {
            // Arrange
            var options = TestUtilities.BuildTestDbOptions();

            var testEntity = new ClassSession();

            await using (var context = new ApplicationDbContext(options))
            {
                context.Database.EnsureCreated();

                var repository = new ClassSessionRepository(context);

                Assert.Empty(context.ClassSession);

                // Act
                repository.Add(testEntity);

                context.SaveChanges();
            }

            // Assert
            await using (var context = new ApplicationDbContext(options))
            {
                Assert.Single(context.ClassSession);

                context.Database.EnsureDeleted();
            }
        }
        public void TestGetEntityEntryEntityNull()
        {
            // Arrange
            var repository =
                new ClassSessionRepository(
                    Mock.Of <ApplicationDbContext>());

            // Act
            void TestAction() => repository.GetEntityEntry(null);

            // Assert
            var ex = Assert.Throws <NullReferenceException>(TestAction);

            Assert.Equal("Cannot get EntityEntry of a null entity.", ex.Message);
        }
        public void TestGetEntityEntryEntityValid()
        {
            // Arrange
            var options = TestUtilities.BuildTestDbOptions();

            EntityEntry <ClassSession> result;

            using (var context = new ApplicationDbContext(options))
            {
                context.Database.EnsureCreated();

                context.ClassSession.Add(
                    new ClassSession
                {
                    Id = 1
                });

                context.SaveChanges();

                var repository = new ClassSessionRepository(context);

                var testEntity =
                    context
                    .ClassSession
                    .FirstOrDefault(
                        cs => cs.Id == 1);

                // Act
                result =
                    repository
                    .GetEntityEntry(testEntity);

                context.Database.EnsureDeleted();
            }

            // Assert
            Assert.NotNull(result);
            Assert.IsType <EntityEntry <ClassSession> >(result);
        }