public PointsList AddPoint(AddPointToListRequest model) { var pointsList = _unitOfWork.PointsListRepository.Get(model.PointsListId); if (pointsList == null) { throw new NotFoundException("Points list does not exist"); } var newPoint = new Point { X = model.X, Y = model.Y }; if (pointsList.Points.Contains(newPoint)) { throw new AlreadyExistsException("Point already exists in points list"); } _unitOfWork.PointsListRepository.AddPoint(pointsList, newPoint); //O(points.Count) now instead of O(points.Count^2) later _unitOfWork.PointsListRepository.AddSquares(pointsList, FindSquaresAfterAddedPoint(pointsList.Points, newPoint)); _unitOfWork.Commit(); return(pointsList); }
public IActionResult AddPoint(AddPointToListRequest model) { try { return(Ok(_pointsListService.AddPoint(model))); } catch (NotFoundException e) { return(NotFound(e.Message)); } catch (AlreadyExistsException e) { return(BadRequest(e.Message)); } }
public void AddPoint_PointDoesNotExist_CallsRepoMethod() { // Arrange AddPointToListRequest addPointToListRequest = new AddPointToListRequest { PointsListId = 1, X = 10, Y = 10 }; var mockedService = this.CreateServiceMock(); mockedService.Setup(s => s.FindSquaresAfterAddedPoint(It.IsAny <List <Point> >(), It.IsAny <Point>())).Returns(new List <Square>()); var expected = new List <Point> { new Point { X = 0, Y = 0 }, new Point { X = 0, Y = 1 }, new Point { X = -1, Y = 1 }, new Point { X = -1, Y = 0 }, new Point { X = -2, Y = 0 }, new Point { X = -1, Y = -1 }, new Point { X = 10, Y = 10 } }; mockPointsListRepository.Setup(r => r.AddPoint(It.IsAny <PointsList>(), It.IsAny <Point>())); mockPointsListRepository.Setup(r => r.AddSquares(It.IsAny <PointsList>(), It.IsAny <List <Square> >())); // Act var result = mockedService.Object.AddPoint(addPointToListRequest); // Assert mockPointsListRepository.Verify(r => r.AddPoint(It.IsAny <PointsList>(), It.IsAny <Point>()), Times.Exactly(1)); mockedService.Verify(s => s.FindSquaresAfterAddedPoint(It.IsAny <List <Point> >(), It.IsAny <Point>()), Times.Exactly(1)); }