public void When2LinesExceedTheBudgetThenTheOverspendShouldBeTheOverspendFromTheTwoLinesCombined() { var service = new PROACTIS.ExampleApplications.ExampleBudgetChecking.Services(); var POXML = ""; var expectedResult = 20M + 30M; var NominalsXML = @"<grs:CommitmentLookup xmlns:grs='http://www.getrealsystems.com/xml/xml-ns'> <grs:Database grs:Server='localhost' grs:DatabaseName='PROACTIS' /> <grs:General grs:UserGUID='{3A8D2AC2-6287-41DF-817A-F77B0551D80D}' grs:CompanyGUID='{3A8D2AC2-6287-41DF-817A-F77B0551D80D}' /> <grs:Currencies><grs:Currency grs:CurrencyGUID='{2E67C438-9012-415B-AED4-8809F0012A78}' grs:Status='H1' grs:Symbol='£' grs:DecimalPlaces='2' /></grs:Currencies> <grs:NominalPeriods> <grs:NominalPeriod grs:Year='2017' grs:Period='1' grs:YearPeriodGUID='{3A8D2AC2-6287-41DF-817A-F77B0551D80D}' grs:Value='130' grs:Home1Value='130' grs:Home2Value='130' grs:NonRecoverableTax='0' grs:NonRecoverableTaxHome1='0' grs:NonRecoverableTaxHome2='0'> <grs:Nominal grs:Coding='SALES.CONF.MARKET' grs:Element1='SALES' grs:Element2='CONF' grs:Element3='MARKET' grs:Element4='' grs:Element5='' grs:Element6='' grs:Element7='' grs:Element8=''></grs:Nominal> </grs:NominalPeriod> <grs:NominalPeriod grs:Year='2017' grs:Period='1' grs:YearPeriodGUID='{3A8D2AC2-6287-41DF-817A-F77B0551D80D}' grs:Value='120' grs:Home1Value='120' grs:Home2Value='120' grs:NonRecoverableTax='0' grs:NonRecoverableTaxHome1='0' grs:NonRecoverableTaxHome2='0'> <grs:Nominal grs:Coding='SALES.CONF.MARKET' grs:Element1='SALES' grs:Element2='CONF' grs:Element3='MARKET' grs:Element4='' grs:Element5='' grs:Element6='' grs:Element7='' grs:Element8=''></grs:Nominal> </grs:NominalPeriod> </grs:NominalPeriods> </grs:CommitmentLookup>"; var actualResult = service.GetOverspend(NominalsXML, POXML); Assert.AreEqual(expectedResult, actualResult); }
public void When2LinesExceedTheBudgetThenACommitmentReportIsGenerated() { var service = new PROACTIS.ExampleApplications.ExampleBudgetChecking.Services(); var POXML = ""; var expectedResult = @"<grs:HeadedList xmlns:grs='http://www.getrealsystems.com/xml/xml-ns'><grs:Headings><grs:Column grs:Number='1' grs:Type='' grs:BudgetType=''>Nominal Coding</grs:Column><grs:Column grs:Number='2' grs:Type='Currency' grs:BudgetType='Budget'>Budget For Year</grs:Column><grs:Column grs:Number='3' grs:Type='Currency' grs:BudgetType='Cost'>Spend To Date</grs:Column><grs:Column grs:Number='4' grs:Type='Currency' grs:BudgetType='Cost'>Accruals</grs:Column><grs:Column grs:Number='5' grs:Type='Currency' grs:BudgetType='Cost'>This Document</grs:Column><grs:Column grs:Number='6' grs:Type='Currency' grs:BudgetType='Cost'>Remaining Budget</grs:Column><grs:Column grs:Number='7' grs:Type='Highlight'>Highlight</grs:Column></grs:Headings><grs:Items><grs:Item><grs:Column grs:Type='' grs:Number='1'>SALES.CONF.MARKET</grs:Column><grs:Column grs:Type='Currency' grs:CurrencySymbol='£' grs:DecimalPlaces='2' grs:Number='2'>10000</grs:Column><grs:Column grs:Type='Currency' grs:CurrencySymbol='£' grs:DecimalPlaces='2' grs:Number='3'>6000</grs:Column><grs:Column grs:Type='Currency' grs:CurrencySymbol='£' grs:DecimalPlaces='2' grs:Number='4'>1000</grs:Column><grs:Column grs:Type='Currency' grs:CurrencySymbol='£' grs:DecimalPlaces='2' grs:Number='5'>130</grs:Column><grs:Column grs:Type='Currency' grs:CurrencySymbol='£' grs:DecimalPlaces='2' grs:HyperLink='http://www.proactis.com' grs:Number='6'>2870</grs:Column><grs:Column grs:Type='Highlight' grs:Number='7'>False</grs:Column></grs:Item><grs:Item><grs:Column grs:Type='' grs:Number='1'>SALES.CONF.MARKET</grs:Column><grs:Column grs:Type='Currency' grs:CurrencySymbol='£' grs:DecimalPlaces='2' grs:Number='2'>10000</grs:Column><grs:Column grs:Type='Currency' grs:CurrencySymbol='£' grs:DecimalPlaces='2' grs:Number='3'>6000</grs:Column><grs:Column grs:Type='Currency' grs:CurrencySymbol='£' grs:DecimalPlaces='2' grs:Number='4'>1000</grs:Column><grs:Column grs:Type='Currency' grs:CurrencySymbol='£' grs:DecimalPlaces='2' grs:Number='5'>120</grs:Column><grs:Column grs:Type='Currency' grs:CurrencySymbol='£' grs:DecimalPlaces='2' grs:HyperLink='http://www.proactis.com' grs:Number='6'>2880</grs:Column><grs:Column grs:Type='Highlight' grs:Number='7'>False</grs:Column></grs:Item></grs:Items></grs:HeadedList>"; var NominalsXML = @"<grs:CommitmentLookup xmlns:grs='http://www.getrealsystems.com/xml/xml-ns'> <grs:Database grs:Server='localhost' grs:DatabaseName='PROACTIS' /> <grs:General grs:UserGUID='{3A8D2AC2-6287-41DF-817A-F77B0551D80D}' grs:CompanyGUID='{3A8D2AC2-6287-41DF-817A-F77B0551D80D}' /> <grs:Currencies><grs:Currency grs:CurrencyGUID='{2E67C438-9012-415B-AED4-8809F0012A78}' grs:Status='H1' grs:Symbol='£' grs:DecimalPlaces='2' /></grs:Currencies> <grs:NominalPeriods> <grs:NominalPeriod grs:Year='2017' grs:Period='1' grs:YearPeriodGUID='{3A8D2AC2-6287-41DF-817A-F77B0551D80D}' grs:Value='130' grs:Home1Value='130' grs:Home2Value='130' grs:NonRecoverableTax='0' grs:NonRecoverableTaxHome1='0' grs:NonRecoverableTaxHome2='0'> <grs:Nominal grs:Coding='SALES.CONF.MARKET' grs:Element1='SALES' grs:Element2='CONF' grs:Element3='MARKET' grs:Element4='' grs:Element5='' grs:Element6='' grs:Element7='' grs:Element8=''></grs:Nominal> </grs:NominalPeriod> <grs:NominalPeriod grs:Year='2017' grs:Period='1' grs:YearPeriodGUID='{3A8D2AC2-6287-41DF-817A-F77B0551D80D}' grs:Value='120' grs:Home1Value='120' grs:Home2Value='120' grs:NonRecoverableTax='0' grs:NonRecoverableTaxHome1='0' grs:NonRecoverableTaxHome2='0'> <grs:Nominal grs:Coding='SALES.CONF.MARKET' grs:Element1='SALES' grs:Element2='CONF' grs:Element3='MARKET' grs:Element4='' grs:Element5='' grs:Element6='' grs:Element7='' grs:Element8=''></grs:Nominal> </grs:NominalPeriod> </grs:NominalPeriods> </grs:CommitmentLookup>"; var actualResult = service.CommitmentReport(NominalsXML, POXML); Assert.AreEqual(expectedResult.Replace("'", @""""), actualResult); }
public void WhenAllLinesAreLessThan100TheCheckShouldPass() { var service = new PROACTIS.ExampleApplications.ExampleBudgetChecking.Services(); var POXML = ""; var NominalsXML = @"<grs:CommitmentLookup xmlns:grs='http://www.getrealsystems.com/xml/xml-ns'> <grs:Database grs:Server='localhost' grs:DatabaseName='PROACTIS' /> <grs:General grs:UserGUID='{3A8D2AC2-6287-41DF-817A-F77B0551D80D}' grs:CompanyGUID='{3A8D2AC2-6287-41DF-817A-F77B0551D80D}' /> <grs:Currencies><grs:Currency grs:CurrencyGUID='{2E67C438-9012-415B-AED4-8809F0012A78}' grs:Status='H1' grs:Symbol='£' grs:DecimalPlaces='2' /></grs:Currencies> <grs:NominalPeriods> <grs:NominalPeriod grs:Year='2017' grs:Period='1' grs:YearPeriodGUID='{3A8D2AC2-6287-41DF-817A-F77B0551D80D}' grs:Value='98.43' grs:Home1Value='98.43' grs:Home2Value='98.43' grs:NonRecoverableTax='0' grs:NonRecoverableTaxHome1='0' grs:NonRecoverableTaxHome2='0'> <grs:Nominal grs:Coding='SALES.CONF.MARKET' grs:Element1='SALES' grs:Element2='CONF' grs:Element3='MARKET' grs:Element4='' grs:Element5='' grs:Element6='' grs:Element7='' grs:Element8=''></grs:Nominal> </grs:NominalPeriod> </grs:NominalPeriods> </grs:CommitmentLookup>"; var actualResult = service.CommitmentCheck(NominalsXML, POXML); Assert.IsTrue(actualResult); }