Esempio n. 1
0
        public void ItCanCorrectlySumTheTestData()
        {
            IAccountHandler accountHandler = new AccountHandlerImpl();
            var             events         = ReadTestEvents();
            var             lineItems      = ReadTestLineItems();
            var             exchangeRates  = ReadExchangeRates();

            var sumAtFirstDataDKK = accountHandler.SumAmounts(events, lineItems, exchangeRates, new DateTime(2017, 3, 1, 0, 0, 0, DateTimeKind.Utc), "DKK");
            var sumAtFirstDataUSD = accountHandler.SumAmounts(events, lineItems, exchangeRates, new DateTime(2017, 3, 1, 0, 0, 0, DateTimeKind.Utc), "USD");

            Assert.Equal(2, sumAtFirstDataDKK.Count);
            Assert.Equal(2, sumAtFirstDataUSD.Count);

            var firstCompanyDKK  = sumAtFirstDataDKK.Single(c => c.CompanyId.IdValue == 1);
            var secondCompanyDKK = sumAtFirstDataDKK.Single(c => c.CompanyId.IdValue == 2);

            var secondCompanyUSD = sumAtFirstDataUSD.Single(c => c.CompanyId.IdValue == 2);

            Assert.Equal("ABC Company Inc.", firstCompanyDKK.CompanyName);
            Assert.Equal("GBP", firstCompanyDKK.CompanyCurrencyCode);
            Assert.Equal("EUR", secondCompanyDKK.CompanyCurrencyCode);
            Assert.Equal("EUR", secondCompanyUSD.CompanyCurrencyCode);

            Assert.Equal(0, firstCompanyDKK.Sums.GetAmountInCurrency("EUR"));
            Assert.Equal(100, firstCompanyDKK.Sums.GetAmountInCurrency("DKK"));
            Assert.Equal(5000, firstCompanyDKK.Sums.GetAmountInCurrency("THB"));

            // Converted to GBP - the currency of the company.
            Assert.InRange(firstCompanyDKK.AmountInCompanyCurrency, 127.83M, 127.84M);

            Assert.Equal(12000.33M, secondCompanyDKK.Sums.GetAmountInCurrency("EUR"));

            // Converted amount in USD - the selected base currency for "sumAtFirstDataUSD"
            Assert.InRange(secondCompanyUSD.Sums.AmountInBaseCurrency, 14317.59M, 14317.60M);
        }
Esempio n. 2
0
        public void ItLimitsLineItemsByTimestamp()
        {
            IAccountHandler accountHandler = new AccountHandlerImpl();

            var events        = ReadTestEvents();
            var lineItems     = ReadTestLineItems();
            var exchangeRates = ReadExchangeRates();

            var sumEUR   = accountHandler.SumAmounts(events, lineItems, exchangeRates, new DateTime(2017, 2, 2, 0, 0, 0, DateTimeKind.Utc), "EUR");
            var company1 = sumEUR.Single(c => c.CompanyId.IdValue == 1);
            var company2 = sumEUR.Single(c => c.CompanyId.IdValue == 2);

            // Data for all 3 companies should be present - even if one or more companies have no associated line items.
            Assert.Equal(2, sumEUR.Count);

            Assert.Equal("ABC Company Ltd", company1.CompanyName);
            Assert.InRange(company1.AmountInCompanyCurrency, 127.83M, 127.84M);
            Assert.Equal(0, company2.AmountInCompanyCurrency);
            Assert.Equal(0, company2.Sums.AmountInBaseCurrency);
        }
Esempio n. 3
0
        public void ItAlsoReturnsCompniesWithNoLineItems()
        {
            IAccountHandler accountHandler = new AccountHandlerImpl();

            var extraEvents = new EventBase[] { new EventCreateCompany(new DateTime(2017, 2, 19, 0, 0, 0, DateTimeKind.Utc), 3, "Company AB", "SEK") };

            var events        = ReadTestEvents().Concat(extraEvents).ToList();
            var lineItems     = ReadTestLineItems();
            var exchangeRates = ReadExchangeRates();

            var sumEUR     = accountHandler.SumAmounts(events, lineItems, exchangeRates, new DateTime(2017, 3, 1, 0, 0, 0, DateTimeKind.Utc), "THB");
            var companyAB  = sumEUR.Single(c => c.CompanyId.IdValue == 3);
            var companyEUR = sumEUR.Single(c => c.CompanyId.IdValue == 2);

            // Data for all 3 companies should be present - even if one or more companies have no associated line items.
            Assert.Equal(3, sumEUR.Count);
            Assert.Equal("SEK", companyAB.CompanyCurrencyCode);
            Assert.Equal(0, companyAB.AmountInCompanyCurrency);
            Assert.Equal(0, companyAB.Sums.AmountInBaseCurrency);
            Assert.InRange(companyEUR.Sums.AmountInBaseCurrency, 474769.05M, 474769.06M);
        }