public async Task PostCourseCommandHandler_UpdateCourseAndChangeTheLanguage_CourseAndWordsUpdated()
        {
            var userGuid = Guid.NewGuid();

            using var context = TestHelper.CreateInMemoryContext(
                      "PostCourseCommandHandler_UpdateCourseAndChangeTheLanguage_CourseAndWordsUpdated");
            SeedDatabase(userGuid, context);
            var oldCourse = await context.Courses.FirstAsync();

            var handler = new PostCourseCommandHandler(new UnitOfWork(context));
            var request = new PostCourseRequestModel
            {
                CourseId     = oldCourse.Id.ToString(),
                Name         = "new name",
                Description  = "new description",
                UserId       = userGuid.ToString(),
                LanguageName = "new language"
            };

            var response = await handler.Handle(request, CancellationToken.None);

            (await context.Courses.CountAsync()).Should().Be(1);
            response.CourseId.Should().Be(oldCourse.Id);
            var updatedCourse = await context.Courses.FirstAsync();

            updatedCourse.Name.Should().Be("new name");
            updatedCourse.Description.Should().Be("new description");
            var word = updatedCourse.Words.First();

            word.HasAudioGenerated.Should().BeFalse();
        }
        public async Task <IActionResult> PostCourse([FromBody] PostCourseRequest request)
        {
            var requestModel = new PostCourseRequestModel
            {
                UserId       = User.FindFirstValue(ClaimTypes.NameIdentifier),
                CourseId     = request.CourseId,
                Description  = request.Description,
                Name         = request.Name,
                LanguageName = request.LanguageName
            };

            var response = await _mediator.Send(requestModel);

            return(response.IsSucceed ?
                   Ok(response.CourseId) :
                   BadRequest(response.Error));
        }
        public async Task PostCourseCommandHandler_AddNewCourse_CourseAdded()
        {
            using var context = TestHelper.CreateInMemoryContext("PostCourseCommandHandler_AddNewCourse_CourseAdded");
            context.Languages.Add(new Language {
                Name = "None", VoiceName = "None"
            });
            context.SaveChanges();
            var handler = new PostCourseCommandHandler(new UnitOfWork(context));
            var request = new PostCourseRequestModel
            {
                Name         = "name",
                Description  = "desc",
                UserId       = Guid.NewGuid().ToString(),
                LanguageName = "None"
            };

            var response = await handler.Handle(request, CancellationToken.None);

            response.CourseId.Should().BeGreaterThan(0);
            (await context.Courses.CountAsync()).Should().Be(1);
            var addedCourse = await context.Courses.FirstAsync();

            addedCourse.Id.Should().Be(response.CourseId);
        }