private void AssertRecrodIsInResult(
            PerformanceReportExcelReportRecordModel expectedRecordModel,
            PerformanceReportExcelReportRecordModel[] portfolioRecords)
        {
            var portfolioRecord = portfolioRecords
                                  .FirstOrDefault(
                r => r.EntityNumber == expectedRecordModel.EntityNumber && r.FeeType == expectedRecordModel.FeeType);

            Assert.NotNull(portfolioRecord);

            AssertRecordIsEqual(expectedRecordModel, portfolioRecord);
        }
 private void AssertRecordIsEqual(
     PerformanceReportExcelReportRecordModel expectedRecordModel,
     PerformanceReportExcelReportRecordModel portfolioRecord)
 {
     Assert.Equal(expectedRecordModel.EntityNumber, portfolioRecord.EntityNumber);
     Assert.Equal(expectedRecordModel.Name, portfolioRecord.Name);
     Assert.Equal(expectedRecordModel.Type, portfolioRecord.Type);
     Assert.Equal(expectedRecordModel.FeeType, portfolioRecord.FeeType);
     Assert.Equal(expectedRecordModel.OneMonth, portfolioRecord.OneMonth);
     Assert.Equal(expectedRecordModel.ThreeMonths, portfolioRecord.ThreeMonths);
     Assert.Equal(expectedRecordModel.TwelveMonths, portfolioRecord.TwelveMonths);
     Assert.Equal(expectedRecordModel.YearToDate, portfolioRecord.YearToDate);
 }
        public void CreateReportShouldSetPropertiesOnPortfolioGrossRecordsWhenAllDataIsPopulated()
        {
            var monthYear = new MonthYear(2000, 4);

            SetupPortfolioAndBenchmarkTestData();

            var performanceReportExcelCreator = CreatePerformanceReportExcelCreator();

            performanceReportExcelCreator.CreateReport(monthYear, _testFileName);

            var expectedRecordModel = new PerformanceReportExcelReportRecordModel();

            expectedRecordModel.EntityNumber = 100;
            expectedRecordModel.Name         = "Portfolio100";
            expectedRecordModel.Type         = "Portfolio";
            expectedRecordModel.FeeType      = FeeType.GrossOfFees.DisplayName;
            expectedRecordModel.OneMonth     = 0.08m;
            expectedRecordModel.ThreeMonths  = 0.224936m;
            expectedRecordModel.TwelveMonths = 0.282327761824448188129280m;
            expectedRecordModel.YearToDate   = 0.28618280m;

            AssertRecrodIsInResult(expectedRecordModel, _excelViewSpy.RenderReportModel.Records);
        }
        public void CreateReportShouldSetPropertiesOnPortfolioNetRecordsWhenAllDataIsPopulated()
        {
            var monthYear = new MonthYear(2000, 4);

            SetupPortfolioAndBenchmarkTestData();

            var performanceReportExcelCreator = CreatePerformanceReportExcelCreator();

            performanceReportExcelCreator.CreateReport(monthYear, _testFileName);

            var expectedRecordModel = new PerformanceReportExcelReportRecordModel();

            expectedRecordModel.EntityNumber = 100;
            expectedRecordModel.Name         = "Portfolio100";
            expectedRecordModel.Type         = "Portfolio";
            expectedRecordModel.FeeType      = FeeType.NetOfFees.DisplayName;
            expectedRecordModel.OneMonth     = 0.04m;
            expectedRecordModel.ThreeMonths  = 0.092624m;
            expectedRecordModel.TwelveMonths = -0.238239267167793646673920m;
            expectedRecordModel.YearToDate   = 0.10355024m;

            AssertRecrodIsInResult(expectedRecordModel, _excelViewSpy.RenderReportModel.Records);
        }
        public void CreateReportShouldAddBenchmarksToRecords()
        {
            var monthYear = new MonthYear(2000, 4);

            SetupPortfolioAndBenchmarkTestData();

            var performanceReportExcelCreator = CreatePerformanceReportExcelCreator();

            performanceReportExcelCreator.CreateReport(monthYear, _testFileName);

            var expectedRecordModel = new PerformanceReportExcelReportRecordModel();

            expectedRecordModel.EntityNumber = 10000;
            expectedRecordModel.Name         = "Benchmark10000";
            expectedRecordModel.Type         = "Benchmark";
            expectedRecordModel.FeeType      = FeeType.None.DisplayName;
            expectedRecordModel.OneMonth     = 0.014m;
            expectedRecordModel.ThreeMonths  = 0.039508184m;
            expectedRecordModel.TwelveMonths = 0.1046235760557993151483255264m;
            expectedRecordModel.YearToDate   = 0.050942774024m;

            AssertRecrodIsInResult(expectedRecordModel, _excelViewSpy.RenderReportModel.Records);
        }
        public void CreateReportShouldSetPropertiesOnPortfolioNetRecordsWhenAllCalculationsHaveErrored()
        {
            var monthYear = new MonthYear(2000, 4);

            SetupPortfolioAndBenchmarkTestData(monthYear, monthYear);

            var performanceReportExcelCreator = CreatePerformanceReportExcelCreator();

            performanceReportExcelCreator.CreateReport(monthYear, _testFileName);

            var expectedRecordModel = new PerformanceReportExcelReportRecordModel();

            expectedRecordModel.EntityNumber = 100;
            expectedRecordModel.Name         = "Portfolio100";
            expectedRecordModel.Type         = "Portfolio";
            expectedRecordModel.FeeType      = FeeType.NetOfFees.DisplayName;
            expectedRecordModel.OneMonth     = null;
            expectedRecordModel.ThreeMonths  = null;
            expectedRecordModel.TwelveMonths = null;
            expectedRecordModel.YearToDate   = null;

            AssertRecrodIsInResult(expectedRecordModel, _excelViewSpy.RenderReportModel.Records);
        }