public void Update_ShouldUpdateStandardConstruction()
        {
            // Arrange
            var id             = _rnd.Next(1, _updateStandardConstructions.Count());
            var newStringValue = "NewUpdate";
            var newIntValue    = 99;
            var newFloatValue  = 9.0f;

            var newStandardConstructionRequest = new StandardConstructionUpdateRequest
            {
                Name   = newStringValue,
                Num    = newIntValue,
                Sheet  = newStringValue,
                Weight = newFloatValue,
            };

            // Act
            _updateService.Update(id, newStandardConstructionRequest);

            // Assert
            _updateRepository.Verify(mock => mock.Update(It.IsAny <StandardConstruction>()), Times.Once);
            Assert.Equal(
                newStringValue, _updateStandardConstructions.SingleOrDefault(v => v.Id == id).Name);
            Assert.Equal(
                newIntValue, _updateStandardConstructions.SingleOrDefault(v => v.Id == id).Num);
            Assert.Equal(
                newStringValue, _updateStandardConstructions.SingleOrDefault(v => v.Id == id).Sheet);
            Assert.Equal(
                newFloatValue, _updateStandardConstructions.SingleOrDefault(v => v.Id == id).Weight);
        }
        public void Update_ShouldFailWithConflict()
        {
            // Arrange
            var id           = 4;
            var conflictName = _standardConstructions[0].Name;

            var newStandardConstructionRequest = new StandardConstructionUpdateRequest
            {
                Name = conflictName,
            };

            // Act & Assert
            Assert.Throws <ConflictException>(() => _service.Update(id, newStandardConstructionRequest));

            _repository.Verify(mock => mock.Update(It.IsAny <StandardConstruction>()), Times.Never);
        }
        public void Update_ShouldFailWithNull_WhenWrongValues()
        {
            // Arrange
            int id = _rnd.Next(1, _updateStandardConstructions.Count());

            var newStandardConstructionRequest = new StandardConstructionUpdateRequest
            {
                Sheet = "NewUpdate",
            };

            // Act & Assert
            Assert.Throws <ArgumentNullException>(() => _updateService.Update(id, null));
            Assert.Throws <ArgumentNullException>(() => _updateService.Update(
                                                      999, newStandardConstructionRequest));

            _updateRepository.Verify(mock => mock.Update(It.IsAny <StandardConstruction>()), Times.Never);
        }
예제 #4
0
        public void Update(
            int id,
            StandardConstructionUpdateRequest standardConstruction)
        {
            if (standardConstruction == null)
            {
                throw new ArgumentNullException(nameof(standardConstruction));
            }
            var foundStandardConstruction = _repository.GetById(id);

            if (foundStandardConstruction == null)
            {
                throw new ArgumentNullException(nameof(foundStandardConstruction));
            }

            if (standardConstruction.Name != null)
            {
                foundStandardConstruction.Name = standardConstruction.Name;

                var uniqueConstraintViolationCheck = _repository.GetByUniqueKey(
                    foundStandardConstruction.Specification.Id, standardConstruction.Name);
                if (uniqueConstraintViolationCheck != null)
                {
                    throw new ConflictException(nameof(uniqueConstraintViolationCheck));
                }
            }
            if (standardConstruction.Num != null)
            {
                foundStandardConstruction.Num = standardConstruction.Num.GetValueOrDefault();
            }
            if (standardConstruction.Sheet != null)
            {
                foundStandardConstruction.Sheet = standardConstruction.Sheet;
            }
            if (standardConstruction.Weight != null)
            {
                foundStandardConstruction.Weight = standardConstruction.Weight.GetValueOrDefault();
            }

            _repository.Update(foundStandardConstruction);

            var foundMark = _markRepo.GetById(foundStandardConstruction.Specification.Mark.Id);

            foundMark.EditedDate = DateTime.Now;
            _markRepo.Update(foundMark);
        }
 public ActionResult Update(
     int id, [FromBody] StandardConstructionUpdateRequest standardConstructionRequest)
 {
     if (!standardConstructionRequest.Validate())
     {
         return(BadRequest());
     }
     try
     {
         _service.Update(id, standardConstructionRequest);
     }
     catch (ArgumentNullException)
     {
         return(NotFound());
     }
     catch (ConflictException)
     {
         return(Conflict());
     }
     return(NoContent());
 }