public async Task PostWordCommandHandler_ModifyAnotherUserWord_WordModified()
        {
            using var context = TestHelper.CreateInMemoryContext("PostWordCommandHandler_ModifyAnotherUserWord_WordModified");
            var userId = Guid.NewGuid();

            SeedInMemoryDatabase(context, userId);
            var handler = new PostWordCommandHandler(new UnitOfWork(context));
            var request = new PostWordRequestModel
            {
                UserId = userId.ToString(),
                Word   = new Shared.WordDto
                {
                    Id             = 1,
                    OriginalWord   = "NewOriginalWord",
                    TranslatedWord = "NewTranslatedWord",
                    Definition     = "NewDefinition",
                    ExampleUse     = "NewExampleUse",
                    Pronunciation  = "NewPronunciation",
                },
                CourseId = "30"
            };

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

            response.IsSucceed.Should().BeFalse();
            response.Error.Should().Be("You can modify only words that belong to your course");
        }
        public async Task PostWordCommandHandler_ModifyWord_WordModified()
        {
            using var context = TestHelper.CreateInMemoryContext("PostWordCommandHandler_ModifyWord_WordModified");
            var userId = Guid.NewGuid();

            SeedInMemoryDatabase(context, userId);
            var handler = new PostWordCommandHandler(new UnitOfWork(context));
            var request = new PostWordRequestModel
            {
                UserId = userId.ToString(),
                Word   = new Shared.WordDto
                {
                    Id             = 3,
                    OriginalWord   = "NewOriginalWord",
                    TranslatedWord = "NewTranslatedWord",
                    Definition     = "NewDefinition",
                    ExampleUse     = "NewExampleUse",
                    Pronunciation  = "NewPronunciation",
                },
                CourseId = "30"
            };

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

            response.IsSucceed.Should().BeTrue();
            (await context.Words.CountAsync()).Should().Be(3);
            var modifiedWord = context.Words.Find(3);

            modifiedWord.OriginalWord.Should().Be("NewOriginalWord");
            modifiedWord.TranslatedWord.Should().Be("NewTranslatedWord");
            modifiedWord.Definition.Should().Be("NewDefinition");
            modifiedWord.ExampleUse.Should().Be("NewExampleUse");
            modifiedWord.Pronunciation.Should().Be("NewPronunciation");
            modifiedWord.HasAudioGenerated.Should().BeFalse();
        }
Exemple #3
0
        public async Task <IActionResult> PostWord([FromBody] PostWordRequest request)
        {
            var requestModel = new PostWordRequestModel
            {
                UserId   = User.FindFirstValue(ClaimTypes.NameIdentifier),
                CourseId = request.CourseId,
                Word     = request.Word
            };
            var response = await _mediator.Send(requestModel);

            return(response.IsSucceed ?
                   Ok() :
                   BadRequest(response.Error));
        }
        public async Task PostWordCommandHandler_AddNewWordForAnotherUserCourse_ReturnError()
        {
            using var context = TestHelper.CreateInMemoryContext("PostWordCommandHandler_AddNewWordForAnotherUserCourse_ReturnError");
            var userId = Guid.NewGuid();

            SeedInMemoryDatabase(context, userId);
            var handler = new PostWordCommandHandler(new UnitOfWork(context));
            var request = new PostWordRequestModel
            {
                UserId = userId.ToString(),
                Word   = new Shared.WordDto
                {
                    OriginalWord = "MyOriginalWord"
                },
                CourseId = "10"
            };

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

            response.IsSucceed.Should().BeFalse();
            response.Error.Should().Be("You can modify only your courses");
        }
        public async Task PostWordCommandHandler_AddNewWord_WordAdded()
        {
            using var context = TestHelper.CreateInMemoryContext("PostWordCommandHandler_AddNewWord_WordAdded");
            var userId = Guid.NewGuid();

            SeedInMemoryDatabase(context, userId);
            var handler = new PostWordCommandHandler(new UnitOfWork(context));
            var request = new PostWordRequestModel
            {
                UserId = userId.ToString(),
                Word   = new Shared.WordDto
                {
                    OriginalWord = "MyOriginalWord"
                },
                CourseId = "30"
            };

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

            response.IsSucceed.Should().BeTrue();
            (await context.Words.CountAsync()).Should().Be(4);
            (await context.Words.FirstAsync(w => w.OriginalWord == "MyOriginalWord"))
            .HasAudioGenerated.Should().BeFalse();
        }