public async Task GetAllAsyncReturnsExistingItems()
        {
            // arrange
            using (new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            {
                var items = new[]
                {
                    new CoursePath(Guid.NewGuid(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid()),
                    new CoursePath(Guid.NewGuid(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid()),
                    new CoursePath(Guid.NewGuid(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid())
                };

                using (var connection = new SqlConnection(_database.ConnectionString))
                {
                    await connection.ExecuteAsync("DELETE FROM [dbo].[CoursePath]").ConfigureAwait(false);

                    foreach (var item in items)
                    {
                        await connection.ExecuteAsync("INSERT INTO [dbo].[CoursePath] ([Key], [Name], [Slug], [Version]) VALUES (@Key, @Name, @Slug, @Version)", item).ConfigureAwait(false);
                    }
                }

                // act
                var repository = new CoursePathRepository(_database.SqlServerRepositoryOptions);
                var result     = await repository.GetAllAsync().ConfigureAwait(false);

                // assert
                Assert.True(items.OrderBy(x => x.Key).SequenceEqual(result.OrderBy(x => x.Key)));
            }
        }
        public async Task GetAllAsyncReturnsEmptyOnMissingItems()
        {
            // arrange
            using (new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            {
                using (var connection = new SqlConnection(_database.ConnectionString))
                {
                    await connection.ExecuteAsync("DELETE FROM [dbo].[CoursePath]").ConfigureAwait(false);
                }

                // act
                var repository = new CoursePathRepository(_database.SqlServerRepositoryOptions);
                var result     = await repository.GetAllAsync().ConfigureAwait(false);

                // assert
                Assert.NotNull(result);
                Assert.Empty(result);
            }
        }