コード例 #1
0
        public static async Task <ActionResult> Initialise(IConfiguration configuration)
        {
            try
            {
                Logger = new ConsoleLogger();

                IMapper mapper = Mapper.CreateAndInitialiseMappings(Logger);

                ActionResult createPersistorResult = CreatePersistor(configuration, out IPersistor persistor);

                if (!createPersistorResult.IsSuccess)
                {
                    return(createPersistorResult);
                }

                var accountingDataAccess = new AccountingDataAccess(persistor, Logger);
                var accountingEngine     = new AccountingEngine(accountingDataAccess, Logger);

                AccountingManager = new AccountingManager(
                    accountingEngine,
                    accountingDataAccess,
                    mapper,
                    Logger);

                return(await AccountingManager.Initialise());
            }
            catch (Exception ex)
            {
                var message = $"Unhandled exception: \"{ex.Message}\".";

                Logger?.LogError(message, ex);

                return(ActionResult.CreateFailure(message));
            }
        }
コード例 #2
0
        public void SetUp()
        {
            list       = new List <Expense>();
            repository = new InMemoryRepository <Expense>(list);

            sut = new AccountingEngine(repository);
        }
コード例 #3
0
        public void Works()
        {
            var repository = new InMemoryRepository <Expense>(new List <Expense>());
            var engine     = new AccountingEngine(repository);

            SystemSettings.Now = () => new DateTime(2000, 1, 2);
            engine.AddExpense(100m, "groceries");
            engine.AddExpense(50m, "school");

            SystemSettings.Now = () => new DateTime(2000, 1, 3);
            engine.AddExpense(250m, "groceries");

            SystemSettings.Now = () => new DateTime(2000, 1, 4);
            var summary = engine
                          .GetSummary(new DateRange(new DateTime(2000, 1, 1), new DateTime(2000, 1, 31)))
                          .OrderBy(it => it.Category)
                          .ToList();

            Assert.AreEqual(2, summary.Count);
            Assert.AreEqual("groceries", summary[0].Category);
            Assert.AreEqual(350m, summary[0].Amount);
            Assert.AreEqual("school", summary[1].Category);
            Assert.AreEqual(50m, summary[1].Amount);
        }