public async Task CreateFigure_400_ModelIsEmpty()
        {
            //Arrange
            Mock <IGeometryService> serviceMock = new Mock <IGeometryService>();
            JsonElement             element     = JsonDocument.Parse("{}").RootElement;
            //Act
            GeometryController controller = GetGeometryController(serviceMock.Object);

            //Assert
            var result = await controller.CreateFigure(element, CancellationToken.None);

            var resultAsType = result as BadRequestObjectResult;
            var valueAsType  = resultAsType?.Value as ProblemDetails;

            Assert.NotNull(valueAsType);
        }
        public async Task CreateFigure_500_ServerError()
        {
            //Arrange
            Mock <IGeometryService> serviceMock = new Mock <IGeometryService>();

            serviceMock.Setup(x => x.SaveFigureAsync(It.IsAny <FigureBase>(), It.IsAny <CancellationToken>()))
            .ThrowsAsync(new NotImplementedException());
            JsonElement element = JsonDocument.Parse("{\"figureType\":\"circle\", \"data\":{\"Radius\":1}}").RootElement;

            //Act
            GeometryController controller = GetGeometryController(serviceMock.Object);

            //Assert
            var result = await controller.CreateFigure(element, CancellationToken.None);

            var resultAsType = result as ObjectResult;

            Assert.NotNull(resultAsType);
            Assert.AreEqual(StatusCodes.Status500InternalServerError, resultAsType.StatusCode);
        }
        public async Task CreateFigure_400_BusinessValidationError()
        {
            //Arrange
            Mock <IGeometryService> serviceMock = new Mock <IGeometryService>();

            serviceMock.Setup(x => x.SaveFigureAsync(It.IsAny <FigureBase>(), It.IsAny <CancellationToken>()))
            .ThrowsAsync(new BusinessValidationException("ошибка", "ошибка"));
            JsonElement element = JsonDocument.Parse("{\"Test\":123}").RootElement;


            //Act
            GeometryController controller = GetGeometryController(serviceMock.Object);

            //Assert
            var result = await controller.CreateFigure(element, CancellationToken.None);

            var resultAsType = result as BadRequestObjectResult;
            var valueAsType  = resultAsType?.Value as ProblemDetails;

            Assert.NotNull(valueAsType);
        }
        public async Task CreateFigure_Success()
        {
            //Arrange
            Mock <IGeometryService> serviceMock = new Mock <IGeometryService>();

            serviceMock.Setup(x => x.SaveFigureAsync(It.IsAny <FigureBase>(), It.IsAny <CancellationToken>())).ReturnsAsync(1);
            JsonElement element = JsonDocument.Parse("{\"figureType\":\"circle\", \"data\":{\"Radius\":1}}").RootElement;

            //Act
            GeometryController controller = GetGeometryController(serviceMock.Object);
            TestModel          model      = new TestModel();

            //Assert
            var result = await controller.CreateFigure(element, CancellationToken.None);

            var resultAsType = result as ObjectResult;

            Assert.AreEqual(StatusCodes.Status201Created, resultAsType.StatusCode);
            Assert.IsNotNull(resultAsType);
            Assert.IsNotNull(resultAsType.Value);
            Assert.AreEqual("1", resultAsType.Value.ToString());
        }