public async Task GetSummary() { var mockRepository = new MockRepository(MockBehavior.Strict); var portfolioId = Guid.NewGuid(); var date = new Date(2001, 02, 03); var response = new PortfolioSummaryResponse() { PortfolioValue = 9000.00m }; var messageHandler = mockRepository.Create <IRestClientMessageHandler>(); messageHandler.SetupProperty(x => x.Portfolio, portfolioId); messageHandler.Setup(x => x.GetAsync <PortfolioSummaryResponse>(It.Is <string>(x => x == "portfolio/" + portfolioId + "/summary?date=2001-02-03"))) .Returns(Task <List <PortfolioSummaryResponse> > .FromResult(response)) .Verifiable(); var resource = new PortfolioResource(messageHandler.Object); var result = await resource.GetSummary(date); result.Should().Be(response); mockRepository.Verify(); }
public void GetSummaryForDate() { var mockRepository = new MockRepository(MockBehavior.Strict); var response = new PortfolioSummaryResponse(); var service = mockRepository.Create <IPortfolioSummaryService>(); service.Setup(x => x.GetSummary(new Date(2000, 01, 01))).Returns(ServiceResult <PortfolioSummaryResponse> .Ok(response)).Verifiable(); var controller = new PortfolioController(); var result = controller.GetSummary(service.Object, new DateTime(2000, 01, 01)); result.Result.Should().BeOkObjectResult().Value.Should().Be(response); mockRepository.VerifyAll(); }
public ServiceResult <PortfolioSummaryResponse> GetSummary(Date date) { if (_Portfolio == null) { return(ServiceResult <PortfolioSummaryResponse> .NotFound()); } var response = new PortfolioSummaryResponse(); response.Holdings.AddRange(_Portfolio.Holdings.All(date).Select(x => x.ToResponse(date))); response.CashBalance = _Portfolio.CashAccount.Balance(date); response.PortfolioValue = response.Holdings.Sum(x => x.Value) + response.CashBalance; response.PortfolioCost = response.Holdings.Sum(x => x.Cost) + response.CashBalance; response.Return1Year = null; response.Return3Year = null; response.Return5Year = null; response.ReturnAll = null; if (_Portfolio.StartDate != Date.MinValue) { var fromDate = date.AddYears(-1).AddDays(1); if (fromDate >= _Portfolio.StartDate) { response.Return1Year = _Portfolio.CalculateIRR(new DateRange(fromDate, date)); } fromDate = date.AddYears(-3).AddDays(1); if (fromDate >= _Portfolio.StartDate) { response.Return3Year = _Portfolio.CalculateIRR(new DateRange(fromDate, date)); } fromDate = date.AddYears(-5).AddDays(1); if (fromDate >= _Portfolio.StartDate) { response.Return5Year = _Portfolio.CalculateIRR(new DateRange(fromDate, date)); } if (date >= _Portfolio.StartDate) { response.ReturnAll = _Portfolio.CalculateIRR(new DateRange(_Portfolio.StartDate, date)); } } return(ServiceResult <PortfolioSummaryResponse> .Ok(response)); }