Exemple #1
0
        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();
        }
Exemple #2
0
        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();
        }
Exemple #3
0
        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));
        }