public void ShouldThrowArgumentExceptionIfPortfolioReturnedIsNull()
        {
            portfolioProcessor            = Substitute.For <IPortfolioProcessor>();
            config                        = Substitute.For <IConfiguration>();
            loggerFactory                 = Substitute.For <ILoggerFactory>();
            config["FundsOfMandatesFile"] = "FundOfMandatesDataV1.xml";
            loggerFactory.ClearReceivedCalls();
            PortfolioVM portfolio = null;

            portfolioProcessor.GetUpdatedPortfolio(Arg.Any <string>()).Returns(portfolio);

            PortfolioController controller = new PortfolioController(portfolioProcessor, config, loggerFactory);
            Func <PositionVM[]> func       = () => controller.Get();

            func.Should().Throw <ArgumentException>("Because GetPortfolio returns null here and client code mus throw an Argument Exception").WithMessage("Necessary Portfolio is not available to display");
        }
        public void ShouldThrowExceptionIfPortfolioObjectDoesNowHavePositions()
        {
            portfolioProcessor            = Substitute.For <IPortfolioProcessor>();
            config                        = Substitute.For <IConfiguration>();
            loggerFactory                 = Substitute.For <ILoggerFactory>();
            config["FundsOfMandatesFile"] = "FundOfMandatesDataV1.xml";
            loggerFactory.ClearReceivedCalls();
            PortfolioVM portfolio = new PortfolioVM
            {
                Positions = null
            };

            portfolioProcessor.GetUpdatedPortfolio(Arg.Any <string>()).Returns(portfolio);

            PortfolioController controller = new PortfolioController(portfolioProcessor, config, loggerFactory);
            Func <PositionVM[]> func       = () => controller.Get();

            func.Should().Throw <Exception>("Because GetPortfolio returns no Positions in Portfolio and client code must throw an exception").WithMessage("No Valid Positions found under portfolio.");
        }
        public void ShouldReturnCorrectPortfolioObjectBackAndRunSuccessfully()
        {
            portfolioProcessor            = Substitute.For <IPortfolioProcessor>();
            config                        = Substitute.For <IConfiguration>();
            loggerFactory                 = Substitute.For <ILoggerFactory>();
            config["FundsOfMandatesFile"] = "FundOfMandatesDataV1.xml";
            loggerFactory.ClearReceivedCalls();

            var dummyPortfolio = new PortfolioVM
            {
                Positions = new List <PositionVM> {
                    new PositionVM {
                        Code = "NL0000287100", Name = "Henekens", Value = 12345
                    },
                    new PositionVM {
                        Code = "NL000029332", Name = "Optimix", Value = 23456
                    },
                    new PositionVM {
                        Code = "NL0000440584", Name = "DP Global", Value = 34567
                    },
                    new PositionVM {
                        Code = "NL0000440588", Name = "Rabobank core", Value = 45678
                    },
                    new PositionVM {
                        Code = "inc005", Name = "Morgan Stanley", Value = 56789
                    },
                    new PositionVM {
                        Code = "inc005", Name = "Morgan Stanley", Value = 56789
                    }
                }
            };

            portfolioProcessor.GetUpdatedPortfolio(Arg.Any <string>()).Returns(dummyPortfolio);

            PortfolioController controller = new PortfolioController(portfolioProcessor, config, loggerFactory);
            var httpResult = controller.Get();

            httpResult.Should().HaveCount(6, "Because we passed 6 Positions in dummy return object");
        }
Example #4
0
 /// <SUMMARY>
 /// CUNSTRUCTOR WILL INITIALIZE PORTFOLIOPROCESSOR TO RETRIEVE PORTFOLIO.
 /// .NET CORE INBUILT DEPENDENCY INJECTION FRAMEWORK HAS BEEN USED HERE.
 /// SERVICES ARE CONFIGURED IN STARTUP.CS FOR THIS PURPOSE.
 /// </summary>
 /// <param name="processor"></param>
 public PortfolioController(IPortfolioProcessor processor, IConfiguration config, ILoggerFactory loggerfactory)
 {
     portfolioProcessor = processor;
     this.config        = config;
     this.loggerFactory = loggerfactory;
 }