static void Main(string[] args) { Policy policy = new PolicyA(); policy.PolicyNumber = string.Empty; policy.MemberShip = true; policy.StartDate = new DateTime(1986, 6, 1); policy.Premiums = 10000m; policy.DiscretionaryBonus = 1000m; policy.PercentageUplift = 40; policy.GetNetPremium(); policy.GetBonusValue(); policy.GetPremiumUplift(); policy.GetMaturityPayout(); //you've created a json string in memory but you need to do something with it string path = ""; path = System.AppContext.BaseDirectory; string jsonOutPut = JsonSerializer.Serialize(policy); System.IO.File.WriteAllText(path + @"\jsonFile.json", jsonOutPut); //clue //https://docs.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-how-to?pivots=dotnet-5-0 }
public IPolicy SellPolicy(string nameOfInsuredObject, DateTime validFrom, short validMonths, IList <Risk> selectedRisks) { if (string.IsNullOrEmpty(nameOfInsuredObject)) { throw new ArgumentNullException(nameof(nameOfInsuredObject)); } DateTime validTill = validFrom.AddMonths(validMonths); bool isPolicyExist = IsPolicyExist(nameOfInsuredObject, validFrom, validTill); if (isPolicyExist) { throw new PolicyUniqueNameException("Insured object is not unique in the given period."); } if (validFrom.Date < DateTime.UtcNow.Date) { throw new PolicyStartDateException("Policy start can not be in the past"); } // In real life, following codes would be usually calling another service/repository PolicyA policy = new PolicyA() { InsuredRisks = selectedRisks, NameOfInsuredObject = nameOfInsuredObject, ValidFrom = validFrom, ValidTill = validTill }; return(policy); }
public void PolicyAPayout() { String myline = "A100003,01/06/1986,10000,Y,1000,40"; PolicyData NewPolicyData = new PolicyData(myline); Policy policy = new PolicyA(NewPolicyData); Assert.Equal(14980m, policy.GetMaturityPayout()); }
public void PolicyAUpliftOnly() { String myline = "A100003,01/06/1986,10000,Y,1000,40"; PolicyData NewPolicyData = new PolicyData(myline); Policy policy = new PolicyA(NewPolicyData); Assert.Equal((decimal)1.4, (decimal)policy.GetPremiumUplift()); }
public void PolicyAWithoutDescretionaryBonusTest() { String myline = "A100003,01/01/1990,10000,N,1000,45"; PolicyData NewPolicyData = new PolicyData(myline); Policy policy = new PolicyA(NewPolicyData); Assert.Equal(0, policy.GetBonusValue()); }
public void PolicyAWithDiscretionaryBonusOnly() { String myline = "A100003,20/07/1969,10000,Y,1000,45"; PolicyData NewPolicyData = new PolicyData(myline); Policy policy = new PolicyA(NewPolicyData); Assert.Equal(1000m, policy.GetBonusValue()); }
public void PolicyANetPremiumOnly() { String myline = "A100003,20/07/1969,10000,Y,4000,45"; PolicyData NewPolicyData = new PolicyData(myline); Policy policy = new PolicyA(NewPolicyData); Assert.Equal(9700m, policy.GetNetPremium()); }
public static PolicyA Build(DateTime validFrom, DateTime validTill, List <Risk> insuredRisks, string nameOfInsuredObject = "insurance") { PolicyA policy = new PolicyA() { NameOfInsuredObject = nameOfInsuredObject, ValidFrom = validFrom, ValidTill = validTill, InsuredRisks = insuredRisks }; return(policy); }
public void CalculatePremium_NoRisk_ReturnsZero() { // arrange DateTime validFrom = DateTime.UtcNow; DateTime validTill = DateTime.UtcNow.AddYears(1); string nameOfInsuranceObject = "nameOfInsuranceObject"; List <Risk> risks = null; PolicyA policy = PolicyABuilder.Build(validFrom, validTill, risks, nameOfInsuranceObject); decimal expectedPremium = 0; // assert policy.Premium.Should().Be(expectedPremium); }
public void ExportPolicyData() { Policy policy = new PolicyA(); policy.PolicyNumber = string.Empty; policy.MemberShip = true; policy.StartDate = new DateTime(1986, 6, 1); policy.Premiums = 10000m; policy.DiscretionaryBonus = 1000m; policy.PercentageUplift = 40; policy.ManagementFee = 3; policy.GetNetPremium(); policy.GetBonusValue(); policy.GetPremiumUplift(); policy.GetMaturityPayout(); }
public void RemoveRisk_ArgsAreValid_Success() { // arrange string nameOfInsuranceObject = "name"; Risk risk = RiskBuilder.Build("Risk 1", 100); DateTime validFrom = DateTime.UtcNow; DateTime effectiveDate = DateTime.UtcNow; PolicyA policy = PolicyABuilder.Build(validFrom, effectiveDate, insuranceCompanyService.AvailableRisks.ToList(), nameOfInsuranceObject); policyService.GetPolicy(nameOfInsuranceObject, effectiveDate).Returns(policy); int expectedRiskCount = insuranceCompanyService.AvailableRisks.Count - 1; // act insuranceCompanyService.RemoveRisk(nameOfInsuranceObject, risk, validFrom, effectiveDate); // assert policy.InsuredRisks.Count.Should().Be(expectedRiskCount); policy.InsuredRisks.Contains(risk).Should().BeFalse(); }
public void AddRisk_ArgsAreValid_Success() { // arrange string nameOfInsuranceObject = "Policy 1"; Risk newRisk = RiskBuilder.Build("Risk 1", 100); DateTime validFrom = DateTime.UtcNow; DateTime effectiveDate = DateTime.UtcNow; PolicyA policy = PolicyABuilder.Build(validFrom, effectiveDate, insuranceCompanyService.AvailableRisks.ToList()); policyService.GetPolicy(nameOfInsuranceObject, effectiveDate).Returns(policy); int expectedCountOfRisk = insuranceCompanyService.AvailableRisks.Count + 1; // act insuranceCompanyService.AddRisk(nameOfInsuranceObject, newRisk, validFrom, effectiveDate); // assert policy.InsuredRisks.Count.Should().Be(expectedCountOfRisk); policy.InsuredRisks.Should().Contain(newRisk); }
public void CalculatePremium_ReturnsSumOfRiskYearlyPrice() { // arrange DateTime validFrom = DateTime.UtcNow; DateTime validTill = DateTime.UtcNow.AddYears(1); string nameOfInsuranceObject = "nameOfInsuranceObject"; List <Risk> risks = new List <Risk>() { new Risk() { Name = "Risk 1", YearlyPrice = 100 }, new Risk() { Name = "Risk 2", YearlyPrice = 100 } }; PolicyA policy = PolicyABuilder.Build(validFrom, validTill, risks, nameOfInsuranceObject); decimal expectedPremium = 200; // assert policy.Premium.Should().Be(expectedPremium); }
public void SellPolicy_ArgsOk_ReturnsPolicy(string nameOfInsuranceObject, DateTime validFrom, short validMonths) { // arrange List <Risk> selectedRisks = new List <Risk>() { new Risk() { Name = "Risk", YearlyPrice = 100 } }; DateTime expectedValidTill = validFrom.AddMonths(validMonths); PolicyA policy = PolicyABuilder.Build(validFrom, expectedValidTill, insuranceCompanyService.AvailableRisks.ToList(), nameOfInsuranceObject); policyService.SellPolicy(nameOfInsuranceObject, validFrom, validMonths, selectedRisks).Returns(policy); // act var result = insuranceCompanyService.SellPolicy(nameOfInsuranceObject, validFrom, validMonths, selectedRisks); // assert // it would be better if I have a chance to mock it result.Should().NotBeNull(); result.Should().BeEquivalentTo(policy); }