コード例 #1
0
        public void GetTopCategories_WhenCategoriesExist()
        {
            DbSetup();
            var repositoryCore = new RepositoryCore(new LogService());

            for (int i = 0; i < 10; i++)
            {
                var c = new Category();
                c.Name = i.ToString();
                c.Plan = i;
                c.Upsert();

                // adding expenses
                for (int j = 0; j < i; j++)
                {
                    var e = new Expense();
                    e.CategoryId = c.Id;
                    e.Value      = 10;
                    e.Upsert();
                }
            }

            var categories = repositoryCore.GetTopCategories();

            Assert.IsNotNull(categories);
            Assert.AreEqual(5, categories.Count);
            Assert.IsTrue(categories.Any(c => c.Name == "9"));
            Assert.IsTrue(categories.Any(c => c.Name == "8"));
            Assert.IsTrue(categories.Any(c => c.Name == "7"));
            Assert.IsTrue(categories.Any(c => c.Name == "6"));
            Assert.IsTrue(categories.Any(c => c.Name == "5"));
        }
コード例 #2
0
 public void Upsert()
 {
     try
     {
         RepositoryCore.Logger.Log(nameof(Setting.Upsert), ToString());
         using (var db = new SQLiteConnection(DBConnectionString.PLATFORM, DBConnectionString.DBPATH))
         {
             if (Id == -1)
             {
                 Id = 1;
                 db.Insert(this);
             }
             else
             {
                 db.Update(this);
             }
         }
         RepositoryCore.SetCurrentMonth(CurrentYear, CurrentMonth);
     }
     catch (Exception ex)
     {
         RepositoryCore.Logger.Log(nameof(Setting.Upsert), ex.Message, LogType.Exception);
         throw ex;
     }
 }
コード例 #3
0
        public void GetExpenses_WhenNoExpensesExist()
        {
            DbSetup();
            var repositoryCore = new RepositoryCore(new LogService());

            var expeneses = repositoryCore.GetExpenses();

            Assert.IsNotNull(expeneses);
            Assert.AreEqual(0, expeneses.Count);
        }
コード例 #4
0
        public void GetTopCategories_WhenNoCategoryExist()
        {
            DbSetup();
            var repositoryCore = new RepositoryCore(new LogService());

            var categories = repositoryCore.GetTopCategories();

            Assert.IsNotNull(categories);
            Assert.AreEqual(0, categories.Count);
        }
コード例 #5
0
        public void GetAppSettings_WhenSettingHasNotSet()
        {
            DbSetup();
            var repositoryCore = new RepositoryCore(new LogService());

            var currentSetting = repositoryCore.GetAppSettings();

            Assert.IsNotNull(currentSetting);
            Assert.AreNotEqual(0, currentSetting.CurrentMonth);
            Assert.AreNotEqual(0, currentSetting.CurrentYear);
        }
コード例 #6
0
        public void DbSetup()
        {
            string dbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "expensemanager.db3");

            if (File.Exists(dbPath))
            {
                File.Delete(dbPath);
            }

            _repository = new RepositoryCore(new LogService());
            _db         = _repository.CreateDataBase(dbPath, new SQLitePlatformIOS(), true);
        }
コード例 #7
0
        public override void ViewDidAppear(bool animated)
        {
            base.ViewDidAppear(animated);
            NavigationItem.Title       = StaticValues.ExpenseListNavigationItemTitle;
            ParentViewController.Title = StaticValues.ExpenseListNavigationTitle;
            var repository = new RepositoryCore(CoreUtilities.GetLogService());
            var expenses   = repository.GetExpenses();
            var listSource = new ExpenseListSource(expenses, this);

            TableView.Source = listSource;
            TableView.ReloadData();
        }
コード例 #8
0
        public void CreateDataBase_IfDbDoesNotExist_CheckDb()
        {
            if (File.Exists(_dbPath))
            {
                File.Delete(_dbPath);
            }

            var core = new RepositoryCore(new LogService());

            core.CreateDataBase(_dbPath, new SQLitePlatformIOS(), true);

            Assert.IsTrue(File.Exists(_dbPath));
        }
コード例 #9
0
        public override void ViewDidAppear(bool animated)
        {
            base.ViewDidAppear(animated);

            ParentViewController.Title = StaticValues.SettingsNavigationTitle;
            var repository = new RepositoryCore(CoreUtilities.GetLogService());

            _appSettings = repository.GetAppSettings();

            handleMonthSelector();
            handleYearSelector();

            Settings_DeleteAllDataBtn.TouchUpInside += Settings_DeleteAllDataBtn_TouchUpInside;
        }
コード例 #10
0
        public void DbSetup()
        {
            if (File.Exists(_dbPath))
            {
                File.Delete(_dbPath);
            }

            var db = new SQLiteConnection(new SQLitePlatformIOS(), _dbPath);

            db.CreateTable <Category>();
            db.CreateTable <Expense>();
            db.CreateTable <Setting>();

            RepositoryCore.SetCurrentMonth(DateTime.Now.Year, DateTime.Now.Month);
        }
コード例 #11
0
        public void GetAppSettings_WhenSettingHasSetAlready()
        {
            DbSetup();
            var repositoryCore = new RepositoryCore(new LogService());
            var setting        = new Setting();

            setting.CurrentYear  = 2013;
            setting.CurrentMonth = 7;
            setting.Upsert();

            var currentSetting = repositoryCore.GetAppSettings();

            Assert.AreEqual(setting.CurrentMonth, currentSetting.CurrentMonth);
            Assert.AreEqual(setting.CurrentYear, currentSetting.CurrentYear);
        }
コード例 #12
0
        public void CreateDataBase_IfDbDoesNotExist_CheckCategoryTable()
        {
            if (File.Exists(_dbPath))
            {
                File.Delete(_dbPath);
            }

            var core = new RepositoryCore(new LogService());

            core.CreateDataBase(_dbPath, new SQLitePlatformIOS(), true);

            var db         = new SQLiteConnection(new SQLitePlatformIOS(), _dbPath);
            var categories = db.Table <Category>();

            Assert.IsTrue(categories.Count() > 0, "Category table hasn't been created.");
        }
コード例 #13
0
        public static void SetUpDatabase(bool deleteIfExist, bool withSeeding)
        {
            string dbPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal), "expensemanager.db3");

            if (File.Exists(dbPath) && deleteIfExist)
            {
                File.Delete(dbPath);
            }

            var repositoryCore = new RepositoryCore(GetLogService());

            if (File.Exists(dbPath))
            {
                repositoryCore.SetUpDataBaseConnection(dbPath, new SQLitePlatformIOS());
            }
            else
            {
                repositoryCore.CreateDataBase(dbPath, new SQLitePlatformIOS(), withSeeding);
            }
        }
コード例 #14
0
        public void GetCategories_WhenCategoriesExist()
        {
            DbSetup();
            var repositoryCore = new RepositoryCore(new LogService());
            var category       = new Category();

            category.Name = "test";
            category.Plan = 45;
            category.Upsert();

            var category1 = new Category();

            category1.Name = "test1";
            category1.Plan = 45;
            category1.Upsert();

            var categories = repositoryCore.GetCategories();

            Assert.IsNotNull(categories);
            Assert.IsNotNull(categories.FirstOrDefault(c => c.Name == category.Name));
            Assert.AreEqual(2, categories.Count);
        }
コード例 #15
0
        public override void ViewDidAppear(bool animated)
        {
            base.ViewDidAppear(animated);

            ParentViewController.Title = StaticValues.ReportNavigationTitle;

            foreach (var view in View.Subviews)
            {
                view.RemoveFromSuperview();
            }

            SFChart chart = new SFChart();

            chart.Frame = this.View.Frame;

            chart.Legend.Visible = true;

            SFCategoryAxis primaryAxis = new SFCategoryAxis();

            chart.PrimaryAxis             = primaryAxis;
            chart.ColorModel.Palette      = SFChartColorPalette.Custom;
            chart.ColorModel.CustomColors = NSArray.FromObjects(StaticValues.DarkBlue, StaticValues.LightBlue);


            var repository    = new RepositoryCore(CoreUtilities.GetLogService());
            var topCategories = repository.GetTopCategories();
            var totalExpense  = repository.GetExpenses();
            var averageSpent  = totalExpense.Count == 0 ? 0 : totalExpense.Average(e => e.Value);

            if (topCategories.Count > 0)
            {
                var dataModel = new ReportChartDataSource(topCategories, averageSpent);
                chart.DataSource = dataModel as SFChartDataSource;

                this.View.AddSubview(chart);
                chart.Frame = new RectangleF(10, 70, (float)View.Bounds.Width - 10, (float)View.Bounds.Height - 160);
            }
        }
コード例 #16
0
        public void DbSetup()
        {
            if (File.Exists(_dbPath))
            {
                File.Delete(_dbPath);
            }

            var db = new SQLiteConnection(new SQLitePlatformIOS(), _dbPath);

            db.CreateTable <Category>();
            db.CreateTable <Expense>();
            db.CreateTable <Setting>();

            RepositoryCore.SetCurrentMonth(DateTime.Now.Year, DateTime.Now.Month);

            var category = new Category()
            {
                Name = "category",
                Plan = 20
            };

            category.Upsert();
            _categoryId = category.Id;
        }
コード例 #17
0
        public void GetExpenses_WhenExpensesExist()
        {
            DbSetup();
            var db             = new SQLiteConnection(new SQLitePlatformIOS(), _dbPath);
            var repositoryCore = new RepositoryCore(new LogService());
            var category       = new Category();

            category.Name = "test";
            category.Plan = 45;
            category.Upsert();

            var beginingOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1, 1, 1, 1);

            db.Insert(new Expense()
            {
                CategoryId = category.Id, Value = 230, Description = "for unit test"
            });
            db.Insert(new Expense()
            {
                CategoryId = category.Id, Value = 230, ExpenseDate = DateTime.Now.AddMonths(-1)
            });
            db.Insert(new Expense()
            {
                CategoryId = category.Id, Value = 230, ExpenseDate = beginingOfMonth
            });
            db.Insert(new Expense()
            {
                CategoryId = category.Id, Value = 230, ExpenseDate = beginingOfMonth.AddHours(-2)
            });

            var expenses = repositoryCore.GetExpenses();

            Assert.IsNotNull(expenses);
            Assert.AreEqual(2, expenses.Count);
            Assert.AreEqual(230, expenses.Where(e => e.Description == "for unit test").First().Value);
        }