public async Task CourseInstancesDetailsAsync_WithValidCourseInstance_ShouldReturnCorrectDetails()
        {
            // Arrange
            const int    expectedId   = 1;
            const string expecterName = "First course";

            var courseInstance = new CourseInstance
            {
                Id   = expectedId,
                Name = expecterName
            };

            this.context.CourseInstances.Add(courseInstance);
            await this.context.SaveChangesAsync();

            this.courseInstancesRepositoryMock
            .Setup(m => m.Details())
            .Returns(this.context.CourseInstances)
            .Verifiable();

            var service = new AdminCourseInstancesService(this.courseInstancesRepositoryMock.Object, this.mapper);

            // Act
            var result = await service.CourseInstancesDetailsAsync <DetailsCourseInstanceViewModel>(expectedId);

            // Assert
            Assert.NotNull(result);
            Assert.Equal(expectedId, result.Id);
            Assert.Equal(expecterName, result.Name);
        }
        public async Task CreateCourseInstanceAsync_WithValidCourseInstance_ShouldAddCourseInstance()
        {
            // Arrange
            const string name = "Course test";
            const string slug = "course-test";

            var courseInstance = new CourseInstance
            {
                Name = name,
                Slug = slug
            };

            this.courseInstancesRepositoryMock
            .Setup(x => x.AddAsync(courseInstance))
            .Returns(Task.CompletedTask)
            .Verifiable();

            var service = new AdminCourseInstancesService(this.courseInstancesRepositoryMock.Object, this.mapper);

            // Act
            var result = await service.CreateCourseIntancesAsync(courseInstance);

            // Assert
            Assert.Equal(name, courseInstance.Name);
        }