public async Task <Result <CalcAreaResponseData> > Handle(CalcAreaRequest request, CancellationToken cancellationToken) { Figure dbFigure = await _queryFactory.RetrieveFigure(request.FigureId); if (dbFigure == null) { return(Result <CalcAreaResponseData> .MakeFailMessage("figure not found")); } Result <Type> descType = _descriptionProvider.GetDescriptionType(dbFigure.Type); if (descType.Fail) { return(Result <CalcAreaResponseData> .MakeFailMessage("figure not found")); } if (!(JsonConvert.DeserializeObject(dbFigure.Description, descType.Data) is IFigureDescription description)) { return(Result <CalcAreaResponseData> .MakeFailMessage("figure not found")); } Result <double> result = _figureCalculator.Calculate(description); if (result.Success) { return(Result <CalcAreaResponseData> .MakeSucces(new CalcAreaResponseData { Area = result.Data })); } else { return(Result <CalcAreaResponseData> .MakeFail(result.Errors)); } }
public void StorageReturnNull_ReturnFail() { var storageMock = new Mock <ProxyFigureStorage>(); storageMock .Setup(x => x.GetProxyFigureProcessor(It.IsAny <IFigureDescription>())) .Returns((ProxyFigureProcessors)null); var calculator = new ProxyFigureCalculator(storageMock.Object, null); Result <double> result = calculator.Calculate(new CircleDescription { Radius = 1 }); Assert.AreEqual(result.Fail, true); }
public void ValidatorReturnSuccess_ReturnSuccess() { var processor = new ProxyFigureProcessors(); processor.Init(new CircleValidator(), new CircleCalculator()); var storageMock = new Mock <ProxyFigureStorage>(); storageMock .Setup(x => x.GetProxyFigureProcessor(It.IsAny <IFigureDescription>())) .Returns(processor); var validator = new ProxyFigureValidator(storageMock.Object); var calculator = new ProxyFigureCalculator(storageMock.Object, validator); Result <double> result = calculator.Calculate(new CircleDescription { Radius = 1 }); Assert.AreEqual(result.Success, true); }