private string WorkOutErrorMessageForNotAllowingCreateReturn(ReturnsData source) { if (!WindowHelper.IsThereAnOpenWindow(source.CurrentDate)) { return ($"The {source.CurrentDate.AddYears(-1).Year} compliance period has closed. You can start submitting your {source.CurrentDate.Year} Q1 returns on 1st April."); } foreach (Quarter q in source.OpenQuarters) { if (source.ReturnsList.Count(p => p.Quarter == q) > 0) { QuarterType nextQuarter = WorkOutNextQuarter(source.OpenQuarters); int startYear; if (nextQuarter == QuarterType.Q4) { startYear = source.NextWindow.WindowOpenDate.Year - 1; } else { startYear = source.NextWindow.WindowOpenDate.Year; } return ($"Returns have been started or submitted for all open quarters. You can start submitting your {startYear} {nextQuarter} returns on {source.NextWindow.WindowOpenDate.ToReadableDateTime()}."); } } return(NotExpectedError); }
public void Map_GivenNoReturnQuarter_OpenQuarters_LatestOpenIsQ4_ErrorMessageSaysWhenNextQuarterAvailableIsQ1() { var openQuarters = new List <Quarter>() { new Quarter(2018, QuarterType.Q1), new Quarter(2018, QuarterType.Q2), new Quarter(2018, QuarterType.Q3), new Quarter(2018, QuarterType.Q4) }; var nextQuarter = QuarterWindowTestHelper.GetQuarterOneWindow(2019); var returnData = new List <ReturnData>() { new ReturnData() { Quarter = openQuarters[1] } }; SystemTime.Freeze(new DateTime(2019, 01, 01)); var returnsData = new ReturnsData(returnData, null, openQuarters, nextQuarter, new DateTime(2019, 01, 01)); var result = returnsMap.Map(new ReturnToReturnsViewModelTransfer() { ReturnsData = returnsData }); SystemTime.Unfreeze(); Assert.Equal( $"Returns have been started or submitted for all open quarters. You can start submitting your 2019 Q1 returns on 1st April.", result.ErrorMessageForNotAllowingCreateReturn); }
public void Map_GivenMappedReturnsAreEditableAndThereAreNoInProgressReturnInComplianceYearAndQuarter_ReturnedShouldBeEditable() { var returnData = A.CollectionOfFake <ReturnData>(1).ToList(); var returnsItems = new List <ReturnsItemViewModel>() { new ReturnsItemViewModel() { ReturnViewModel = new ReturnViewModel(new ReturnData() { Quarter = new Quarter(2019, QuarterType.Q1), QuarterWindow = QuarterWindowTestHelper.GetDefaultQuarterWindow() }, new List <AatfObligatedData>(), A.Fake <OrganisationData>(), new TaskListDisplayOptions()), ReturnsListDisplayOptions = new ReturnsListDisplayOptions() { DisplayEdit = true }, } }; A.CallTo(() => ordering.Order(A <List <ReturnData> > ._)).Returns(returnData); A.CallTo(() => returnItemViewModelMap.Map(A <ReturnData> ._)).ReturnsNextFromSequence(returnsItems.ToArray()); var returnsData = new ReturnsData(returnData, null, A.Fake <List <Quarter> >(), QuarterWindowTestHelper.GetDefaultQuarterWindow(), DateTime.Now); var result = returnsMap.Map(new ReturnToReturnsViewModelTransfer() { ReturnsData = returnsData }); result.Returns.ElementAt(0).ReturnsListDisplayOptions.DisplayEdit.Should().BeTrue(); }
public void Map_GivenMappedReturnsAreForQuarterAndYearAreEditable_OnlyTheMostRecentRecordForYearAndQuarterShouldBeEditable() { var returnData = A.CollectionOfFake <ReturnData>(3).ToList(); var dateNow = DateTime.Now; var idToFind = Guid.NewGuid(); var returnsItems = new List <ReturnsItemViewModel>() { new ReturnsItemViewModel() { ReturnViewModel = new ReturnViewModel(new ReturnData() { CreatedDate = dateNow, Quarter = new Quarter(2019, QuarterType.Q1), QuarterWindow = QuarterWindowTestHelper.GetDefaultQuarterWindow() }, new List <AatfObligatedData>(), A.Fake <OrganisationData>(), new TaskListDisplayOptions()), ReturnsListDisplayOptions = new ReturnsListDisplayOptions() { DisplayEdit = true } }, new ReturnsItemViewModel() { ReturnViewModel = new ReturnViewModel(new ReturnData() { Id = idToFind, CreatedDate = dateNow.AddDays(1), Quarter = new Quarter(2019, QuarterType.Q1), QuarterWindow = QuarterWindowTestHelper.GetDefaultQuarterWindow() }, new List <AatfObligatedData>(), A.Fake <OrganisationData>(), new TaskListDisplayOptions()), ReturnsListDisplayOptions = new ReturnsListDisplayOptions() { DisplayEdit = true } }, new ReturnsItemViewModel() { ReturnViewModel = new ReturnViewModel(new ReturnData() { CreatedDate = dateNow.AddDays(-1), Quarter = new Quarter(2019, QuarterType.Q1), QuarterWindow = QuarterWindowTestHelper.GetDefaultQuarterWindow() }, new List <AatfObligatedData>(), A.Fake <OrganisationData>(), new TaskListDisplayOptions()), ReturnsListDisplayOptions = new ReturnsListDisplayOptions() { DisplayEdit = true } } }; A.CallTo(() => ordering.Order(A <List <ReturnData> > ._)).Returns(returnData); A.CallTo(() => returnItemViewModelMap.Map(A <ReturnData> ._)).ReturnsNextFromSequence(returnsItems.ToArray()); var returnsData = new ReturnsData(returnData, null, A.Fake <List <Quarter> >(), QuarterWindowTestHelper.GetDefaultQuarterWindow(), DateTime.Now); var result = returnsMap.Map(new ReturnToReturnsViewModelTransfer() { ReturnsData = returnsData }); result.Returns.First(r => r.ReturnViewModel.ReturnId.Equals(idToFind)).ReturnsListDisplayOptions.DisplayEdit.Should().BeTrue(); result.Returns.Count(r => r.ReturnsListDisplayOptions.DisplayEdit.Equals(false)).Should().Be(2); }
public async void IndexGet_GivenOrganisation_BreadcrumbShouldBeSet() { var returns = new ReturnsData(A.Fake <List <ReturnData> >(), new Quarter(2019, QuarterType.Q1), A.Fake <List <Quarter> >(), QuarterWindowTestHelper.GetDefaultQuarterWindow(), DateTime.Now); A.CallTo(() => weeeClient.SendAsync(A <string> ._, A <GetReturns> ._)).Returns(returns); await controller.Index(A.Dummy <Guid>(), A.Dummy <int?>(), A.Dummy <string>()); Assert.Equal(breadcrumb.ExternalActivity, BreadCrumbConstant.AatfReturn); }
public async void IndexGet_GivenOrganisation_ReturnsViewModelShouldBeBuilt() { var returnsData = new ReturnsData(A.Fake <List <ReturnData> >(), new Quarter(2019, QuarterType.Q1), A.Fake <List <Quarter> >(), QuarterWindowTestHelper.GetDefaultQuarterWindow(), DateTime.Now); A.CallTo(() => weeeClient.SendAsync(A <string> ._, A <GetReturns> ._)).Returns(returnsData); await controller.Index(fixture.Create <Guid>(), fixture.Create <int?>(), fixture.Create <string>()); A.CallTo(() => mapper.Map <ReturnsViewModel>(A <ReturnToReturnsViewModelTransfer> .That.Matches(r => r.ReturnsData == returnsData))).MustHaveHappened(Repeated.Exactly.Once); }
public async void IndexGet_GivenOrganisation_DefaultViewShouldBeReturned() { var returns = new ReturnsData(A.Fake <List <ReturnData> >(), new Quarter(2019, QuarterType.Q1), A.Fake <List <Quarter> >(), QuarterWindowTestHelper.GetDefaultQuarterWindow(), DateTime.Now); A.CallTo(() => weeeClient.SendAsync(A <string> ._, A <GetReturns> ._)).Returns(returns); var result = await controller.Index(A.Dummy <Guid>(), A.Dummy <int?>(), A.Dummy <string>()) as ViewResult; result.ViewName.Should().BeEmpty(); }
private void OrderReturns(ReturnsData source, ReturnsViewModel model) { var orderedItems = ordering.Order(source.ReturnsList); foreach (var @return in orderedItems) { var returnViewModelItems = returnItemViewModelMap.Map(@return); model.Returns.Add(returnViewModelItems); } }
public void Map_GivenReturnQuarter_DisplayCreateButtonShouldBeTrue() { var returnsData = new ReturnsData(A.CollectionOfFake <ReturnData>(1).ToList(), new Quarter(2019, QuarterType.Q1), A.Fake <List <Quarter> >(), QuarterWindowTestHelper.GetDefaultQuarterWindow(), DateTime.Now); var result = returnsMap.Map(new ReturnToReturnsViewModelTransfer() { ReturnsData = returnsData }); result.DisplayCreateReturn.Should().BeTrue(); }
public void Map_GivenReturnQuarter_ComplianceReturnPropertiesShouldBeSet(QuarterType quarter) { var returnsData = new ReturnsData(A.CollectionOfFake <ReturnData>(1).ToList(), new Quarter(2019, quarter), A.Fake <List <Quarter> >(), QuarterWindowTestHelper.GetDefaultQuarterWindow(), DateTime.Now); var result = returnsMap.Map(new ReturnToReturnsViewModelTransfer() { ReturnsData = returnsData }); result.ComplianceYear.Should().Be(2019); result.Quarter.Should().Be(quarter); }
public async void IndexGet_GivenOrganisation_ReturnsShouldBeRetrieved() { var returns = new ReturnsData(A.Fake <List <ReturnData> >(), new Quarter(2019, QuarterType.Q1), A.Fake <List <Quarter> >(), QuarterWindowTestHelper.GetDefaultQuarterWindow(), DateTime.Now); A.CallTo(() => weeeClient.SendAsync(A <string> ._, A <GetReturns> ._)).Returns(returns); var organisationId = Guid.NewGuid(); await controller.Index(organisationId, A.Dummy <int?>(), A.Dummy <string>()); A.CallTo(() => weeeClient.SendAsync(A <string> ._, A <GetReturns> .That.Matches(r => r.OrganisationId.Equals(organisationId)))) .MustHaveHappened(Repeated.Exactly.Once); }
public void Map_GivenNoReturnQuarter_NoOpenWindow_ErrorMessageShouldSayClosed() { var returnData = A.CollectionOfFake <ReturnData>(3).ToList(); var returnsData = new ReturnsData(returnData, null, A.Fake <List <Quarter> >(), QuarterWindowTestHelper.GetDefaultQuarterWindow(), new DateTime(2019, 3, 17)); var result = returnsMap.Map(new ReturnToReturnsViewModelTransfer() { ReturnsData = returnsData }); Assert.Equal("The 2018 compliance period has closed. You can start submitting your 2019 Q1 returns on 1st April.", result.ErrorMessageForNotAllowingCreateReturn); }
private void SetMessages(ReturnsData source, ReturnsViewModel model) { if (source.ReturnQuarter != null) { model.DisplayCreateReturn = true; model.ComplianceYear = source.ReturnQuarter.Year; model.Quarter = source.ReturnQuarter.Q; } else { model.ErrorMessageForNotAllowingCreateReturn = WorkOutErrorMessageForNotAllowingCreateReturn(source); model.NotStartedAnySubmissionsYet = model.ErrorMessageForNotAllowingCreateReturn != NotExpectedError; } }
public async void IndexGet_GivenOrganisationComplianceYearAndQuarterActionParameters_ReturnsViewModelShouldBeBuiltWithPassedParameters() { var returns = new ReturnsData(A.Fake <List <ReturnData> >(), new Quarter(2019, QuarterType.Q1), A.Fake <List <Quarter> >(), QuarterWindowTestHelper.GetDefaultQuarterWindow(), DateTime.Now); A.CallTo(() => weeeClient.SendAsync(A <string> ._, A <GetReturns> ._)).Returns(returns); var selectedComplianceYear = fixture.Create <int>(); var selectedQuarter = fixture.Create <string>(); await controller.Index(A.Dummy <Guid>(), selectedComplianceYear, selectedQuarter); A.CallTo(() => mapper.Map <ReturnsViewModel>(A <ReturnToReturnsViewModelTransfer> .That.Matches(r => r.ReturnsData == returns && r.SelectedComplianceYear == selectedComplianceYear && r.SelectedQuarter == selectedQuarter))).MustHaveHappened(Repeated.Exactly.Once); }
public void Map_GivenNoReturnQuarter_NoReturns_ErrorMessageDisplayedIsNotExpectedToSubmitReturn() { var returnData = new List <ReturnData>(); var openQuarters = new List <Quarter>(); var nextQuarter = QuarterWindowTestHelper.GetDefaultQuarterWindow(); var returnsData = new ReturnsData(returnData, null, openQuarters, nextQuarter, new DateTime(2019, 3, 1)); var result = returnsMap.Map(new ReturnToReturnsViewModelTransfer() { ReturnsData = returnsData }); Assert.Equal("You aren’t expected to submit a return yet. If you think this is wrong, contact your environmental regulator.", result.ErrorMessageForNotAllowingCreateReturn); }
public virtual void Initialize() { var fullResults = OptimizerAppDomainManager.GetResults(); //let's exclude non-trading tests and any marked as error/failure with -10 Sharpe var hasTraded = fullResults.Where(d => d.Value["TotalNumberOfTrades"] != 0 && d.Value["SharpeRatio"] > -10); SharpeData = hasTraded.ToDictionary(k => k.Key, v => (double)v.Value["SharpeRatio"]); ReturnsData = hasTraded.ToDictionary(k => k.Key, v => (double)v.Value["CompoundingAnnualReturn"]); N = SharpeData.Count(); var statistics = new DescriptiveStatistics(ReturnsData.Select(d => d.Value)); V = new DescriptiveStatistics(SharpeData.Select(s => s.Value)).Variance; //measure only trading days T = ((Config.EndDate - Config.StartDate).Value.TotalDays / 365) * days; Skewness = statistics.Skewness; Kurtosis = statistics.Kurtosis; }
public void ReturnsData_GivenConstructorParameters_PropertiesShouldBeMapped() { var returnsList = new List <ReturnData>(); var returnQuarter = new Quarter(2019, QuarterType.Q1); List <Quarter> openQuarters = new List <Quarter>() { returnQuarter }; QuarterWindow nextQuarter = new QuarterWindow(new DateTime(2020, 4, 1), new DateTime(2020, 7, 16), QuarterType.Q1); var returnsData = new ReturnsData(returnsList, returnQuarter, openQuarters, nextQuarter, DateTime.Now); returnsData.ReturnsList.Should().BeEquivalentTo(returnsList); returnsData.ReturnQuarter.Should().Be(returnQuarter); returnsData.OpenQuarters.Count.Should().Be(openQuarters.Count); returnsData.NextWindow.Should().Be(nextQuarter); }
public async void IndexGet_GivenOrganisation_ReturnsViewModelShouldBeReturnedWithAllReturns() { var returns = new ReturnsData(A.Fake <List <ReturnData> >(), new Quarter(2019, QuarterType.Q1), A.Fake <List <Quarter> >(), QuarterWindowTestHelper.GetDefaultQuarterWindow(), DateTime.Now); A.CallTo(() => weeeClient.SendAsync(A <string> ._, A <GetReturns> ._)).Returns(returns); var model = new ReturnsViewModel(); var organisationId = Guid.NewGuid(); A.CallTo(() => mapper.Map <ReturnsViewModel>(A <ReturnToReturnsViewModelTransfer> ._)).Returns(model); var result = await controller.Index(organisationId, A.Dummy <int?>(), A.Dummy <string>()) as ViewResult; var returnedModel = (ReturnsViewModel)model; returnedModel.Should().Be(model); returnedModel.OrganisationId.Should().Be(organisationId); returnedModel.Returns.Count.Should().Be(returns.ReturnsList.Count); }
public void ReturnsData_GivenNullReturnQuarter_ReturnQuarterPropertiesShouldBeNull() { var returnsData = new ReturnsData(A.Fake <List <ReturnData> >(), null, A.Fake <List <Quarter> >(), QuarterWindowTestHelper.GetDefaultQuarterWindow(), DateTime.Now); returnsData.ReturnQuarter.Should().BeNull(); }