コード例 #1
0
        public async Task CreateAsync_given_study_returns_id()
        {
            // Arrange
            var entity  = default(Study);
            var context = new Mock <IContext>();

            context.Setup(c => c.Studies.Add(It.IsAny <Study>())).Callback <Study>(t => entity = t);
            context.Setup(c => c.SaveChangesAsync(default(CancellationToken)))
            .Returns(Task.FromResult(0))
            .Callback(() => entity.Id = 11);

            using (var repository = new StudyRepository(context.Object))
            {
                var study = new StudyNoIdDTO
                {
                    Title       = "StudyTitle",
                    Description = "StudyDescription"
                };

                // Act
                var result = await repository.CreateAsync(study);

                // Assert
                Assert.Equal(11, result);
            }
        }
コード例 #2
0
        public async Task <IActionResult> Post([FromBody] StudyNoIdDTO study)
        {
            if (!ModelState.IsValid)
            {
                _log.LogWarning("ModelState not valid. Return BadRequest");
                return(BadRequest(ModelState));
            }

            var id = await _repository.CreateAsync(study);

            return(CreatedAtAction(nameof(Get), new { id }, null));
        }
コード例 #3
0
        public async Task <int> CreateAsync(StudyNoIdDTO study)
        {
            var entity = new Study
            {
                Title       = study.Title,
                Description = study.Description
            };

            _context.Studies.Add(entity);

            await _context.SaveChangesAsync();

            return(entity.Id);
        }
コード例 #4
0
        public async Task Post_given_valid_study_calls_CreateAsync()
        {
            // Arrange
            var repository = new Mock <IStudyRepository>();
            var controller = new StudyController(repository.Object, log.Object);

            var study = new StudyNoIdDTO();

            // Act
            await controller.Post(study);

            // Assert
            repository.Verify(r => r.CreateAsync(study));
        }
コード例 #5
0
        public async Task Post_given_invalid_study_doesnot_call_CreateAsync()
        {
            // Arrange
            var repository = new Mock <IStudyRepository>();

            var controller = new StudyController(repository.Object, log.Object);

            controller.ModelState.AddModelError(string.Empty, "Error");

            var study = new StudyNoIdDTO();

            // Act
            await controller.Post(study);

            // Assert
            repository.Verify(r => r.CreateAsync(It.IsAny <StudyNoIdDTO>()), Times.Never);
        }
コード例 #6
0
        public async Task Post_given_invalid_study_returns_BadRequest()
        {
            // Arrange
            var repository = new Mock <IStudyRepository>();

            var controller = new StudyController(repository.Object, log.Object);

            controller.ModelState.AddModelError(string.Empty, "Error");

            var study = new StudyNoIdDTO();

            // Act
            var result = await controller.Post(study);

            // Assert
            Assert.IsType <BadRequestObjectResult>(result);
        }
コード例 #7
0
        public async Task Post_given_valid_study_returns_CreatedAtAction()
        {
            // Arrange
            var repository = new Mock <IStudyRepository>();

            repository.Setup(r => r.CreateAsync(It.IsAny <StudyNoIdDTO>())).ReturnsAsync(11);

            var controller = new StudyController(repository.Object, log.Object);

            var study = new StudyNoIdDTO();

            // Act
            var result = await controller.Post(study) as CreatedAtActionResult;

            // Assert
            Assert.Equal(nameof(StudyController.Get), result.ActionName);
            Assert.Equal(11, result.RouteValues["id"]);
        }
コード例 #8
0
        public async Task CreateAsync_given_study_calls_SaveChangesAsync()
        {
            var context = new Mock <IContext>();

            context.Setup(c => c.Studies.Add(It.IsAny <Study>()));

            using (var repository = new StudyRepository(context.Object))
            {
                var study = new StudyNoIdDTO
                {
                    Title       = "StudyTitle",
                    Description = "StudyDescription"
                };

                // Act
                var result = await repository.CreateAsync(study);

                // Assert
                context.Verify(c => c.SaveChangesAsync(default(CancellationToken)));
            }
        }
コード例 #9
0
        public async Task CreateAsync_given_study_adds_to_database()
        {
            // Arrange
            var entity  = default(Study);
            var context = new Mock <IContext>();

            context.Setup(c => c.Studies.Add(It.IsAny <Study>())).Callback <Study>(t => entity = t);

            using (var repository = new StudyRepository(context.Object))
            {
                var study = new StudyNoIdDTO
                {
                    Title       = "StudyTitle",
                    Description = "StudyDescription"
                };

                // Act
                await repository.CreateAsync(study);

                // Assert
                Assert.Equal("StudyTitle", entity.Title);
                Assert.Equal("StudyDescription", entity.Description);
            }
        }