public void TestSaveProject_AddProject_WithTasks()
        {
            using (SQLitePersistence sqlite = new SQLitePersistence(new SQLitePersistenceConfig(GetTestDBLocation())))
            {
                Collection <Project> prjList = sqlite.LoadProjects();
                DefinedContexts      dc      = sqlite.LoadContexts();

                var removedProjectID = prjList[0].UniqueID;
                var newProject       = new Project("New Test Project");
                var newTask          = new Task("New Task")
                {
                    ContextID = dc.FindIdByDescr("Home").ID
                };
                newProject.AddTask(newTask);
                prjList.Add(newProject);

                sqlite.SaveProjects(prjList);

                Collection <Project> prjListNew = sqlite.LoadProjects();

                Assert.IsTrue(ProjectComparer.AreListsEquivalent(prjList, prjListNew,
                                                                 out List <Project> chgList, out List <Project> addList, out List <Project> delList,
                                                                 out List <Project> chgTaskList));
                Assert.IsTrue(prjListNew[10].TaskList.Select(t => t.UniqueID == newTask.UniqueID).First());
            }
        }
Esempio n. 2
0
        public void TestDifferent_NoTasks()
        {
            var prj1 = new Project("Test Project 1");
            var prj2 = new Project("Test Project 2");
            var prj3 = new Project("Test Project 1");
            var prj4 = new Project("Test Project 2");

            Collection <Project> prjList1 = new Collection <Project>
            {
                prj1,
                prj2
            };
            Collection <Project> prjList2 = new Collection <Project>
            {
                prj3,
                prj4
            };

            // Different UniqueIDs and DateTimeCreated
            Assert.IsFalse(ProjectComparer.AreListsEquivalent(prjList1, prjList2,
                                                              out List <Project> chgList, out List <Project> addList, out List <Project> delList,
                                                              out List <Project> chgTaskList));
            Assert.AreEqual(2, addList.Count);
            Assert.AreEqual(0, chgList.Count);
            Assert.AreEqual(2, delList.Count);
            Assert.AreEqual(0, chgTaskList.Count);
        }
Esempio n. 3
0
        public void TestSame_NoTasks()
        {
            var prj1 = new Project("Test Project 1");
            var prj2 = new Project("Test Project 2");
            var prj3 = new Project("Test Project 1");
            var prj4 = new Project("Test Project 2");

            prj3.UniqueID        = prj1.UniqueID;
            prj3.DateTimeCreated = prj1.DateTimeCreated;
            prj4.UniqueID        = prj2.UniqueID;
            prj4.DateTimeCreated = prj2.DateTimeCreated;

            Collection <Project> prjList1 = new Collection <Project>
            {
                prj1,
                prj2
            };
            Collection <Project> prjList2 = new Collection <Project>
            {
                prj3,
                prj4
            };

            Assert.IsTrue(ProjectComparer.AreListsEquivalent(prjList1, prjList2,
                                                             out List <Project> chgList, out List <Project> addList, out List <Project> delList,
                                                             out List <Project> chgTaskList));
        }
Esempio n. 4
0
        public void TestSame_WithTasks()
        {
            CreateTwoIdenticalProjectLists(out Collection <Project> prjList1, out Collection <Project> prjList2);

            Assert.IsTrue(ProjectComparer.AreListsEquivalent(prjList1, prjList2,
                                                             out List <Project> chgList, out List <Project> addList, out List <Project> delList,
                                                             out List <Project> chgTaskList));
        }
Esempio n. 5
0
        public void TestSameProjectAttrs_DifferentTasks()
        {
            CreateTwoIdenticalProjectLists(out Collection <Project> prjList1, out Collection <Project> prjList2);
            var changedProjectID = prjList2[0].UniqueID;

            prjList2[0].TaskList[0].Name = "Changed Name 1";

            Assert.IsFalse(ProjectComparer.AreListsEquivalent(prjList1, prjList2,
                                                              out List <Project> chgList, out List <Project> addList, out List <Project> delList,
                                                              out List <Project> chgTaskList));
            Assert.AreEqual(0, addList.Count);
            Assert.AreEqual(0, chgList.Count);
            Assert.AreEqual(0, delList.Count);
            Assert.AreEqual(1, chgTaskList.Count);
            Assert.AreEqual(changedProjectID, chgTaskList[0].UniqueID);
        }
        public void TestSaveProject_ChangedProject()
        {
            using (SQLitePersistence sqlite = new SQLitePersistence(new SQLitePersistenceConfig(GetTestDBLocation())))
            {
                Collection <Project> prjList = sqlite.LoadProjects();

                var changedID = prjList[0].UniqueID;
                prjList[0].ProjectName = "Changed Name";

                sqlite.SaveProjects(prjList);

                Collection <Project> prjListNew = sqlite.LoadProjects();

                Assert.IsTrue(ProjectComparer.AreListsEquivalent(prjList, prjListNew,
                                                                 out List <Project> chgList, out List <Project> addList, out List <Project> delList,
                                                                 out List <Project> chgTaskList));
            }
        }
Esempio n. 7
0
        public void TestSecondNull()
        {
            var prj1 = new Project("Test Project 1");
            var prj2 = new Project("Test Project 2");
            Collection <Project> prjList1 = new Collection <Project>
            {
                prj1,
                prj2
            };
            Collection <Project> prjList2 = null;

            Assert.IsFalse(ProjectComparer.AreListsEquivalent(prjList1, prjList2,
                                                              out List <Project> chgList, out List <Project> addList, out List <Project> delList,
                                                              out List <Project> chgTaskList));
            Assert.AreEqual(0, addList.Count);
            Assert.AreEqual(0, chgList.Count);
            Assert.AreEqual(2, delList.Count);
            Assert.AreEqual(0, chgTaskList.Count);
        }
        public void TestSaveProject_AddProject_NoTasks()
        {
            using (SQLitePersistence sqlite = new SQLitePersistence(new SQLitePersistenceConfig(GetTestDBLocation())))
            {
                Collection <Project> prjList = sqlite.LoadProjects();

                var removedProjectID = prjList[0].UniqueID;
                var newProject       = new Project("New Test Project");
                prjList.Add(newProject);

                sqlite.SaveProjects(prjList);

                Collection <Project> prjListNew = sqlite.LoadProjects();

                Assert.IsTrue(ProjectComparer.AreListsEquivalent(prjList, prjListNew,
                                                                 out List <Project> chgList, out List <Project> addList, out List <Project> delList,
                                                                 out List <Project> chgTaskList));
            }
        }
        public void TestSaveProject_DeleteExistingTask()
        {
            using (SQLitePersistence sqlite = new SQLitePersistence(new SQLitePersistenceConfig(GetTestDBLocation())))
            {
                Collection <Project> prjList = sqlite.LoadProjects();
                DefinedContexts      dc      = sqlite.LoadContexts();

                var deletedTask = prjList[3].TaskList[1].UniqueID;
                prjList[3].TaskList.RemoveAt(1);

                sqlite.SaveProjects(prjList);

                Collection <Project> prjListNew = sqlite.LoadProjects();

                Assert.IsTrue(ProjectComparer.AreListsEquivalent(prjList, prjListNew,
                                                                 out List <Project> chgList, out List <Project> addList, out List <Project> delList,
                                                                 out List <Project> chgTaskList));
                Assert.AreEqual(0, prjListNew[3].TaskList.Where(t => t.UniqueID == deletedTask).Count());
            }
        }
        public void TestSaveProject_ChangeExistingTask()
        {
            using (SQLitePersistence sqlite = new SQLitePersistence(new SQLitePersistenceConfig(GetTestDBLocation())))
            {
                Collection <Project> prjList = sqlite.LoadProjects();
                DefinedContexts      dc      = sqlite.LoadContexts();

                var changedTask = prjList[2].TaskList[4].UniqueID;
                prjList[2].TaskList[4].Details = "New details";

                sqlite.SaveProjects(prjList);

                Collection <Project> prjListNew = sqlite.LoadProjects();

                Assert.IsTrue(ProjectComparer.AreListsEquivalent(prjList, prjListNew,
                                                                 out List <Project> chgList, out List <Project> addList, out List <Project> delList,
                                                                 out List <Project> chgTaskList));
                Assert.AreEqual("New details", prjListNew[2].TaskList.Where(t => t.UniqueID == changedTask).First().Details);
            }
        }
        public void TestSaveProject_DeleteProject()
        {
            using (SQLitePersistence sqlite = new SQLitePersistence(new SQLitePersistenceConfig(GetTestDBLocation())))
            {
                Collection <Project> prjList = sqlite.LoadProjects();

                var removedProjectID = prjList[0].UniqueID;
                prjList.RemoveAt(0);

                sqlite.SaveProjects(prjList);

                Collection <Project> prjListNew = sqlite.LoadProjects();

                Assert.IsTrue(ProjectComparer.AreListsEquivalent(prjList, prjListNew,
                                                                 out List <Project> chgList, out List <Project> addList, out List <Project> delList,
                                                                 out List <Project> chgTaskList));

                // test that tasks tied to the removed project have been deleted from the DB
                Assert.AreEqual(0, sqlite.LoadTasks(removedProjectID.ToString()).Count);
            }
        }
        public void TestSaveProject_AddTaskToExistingProject()
        {
            using (SQLitePersistence sqlite = new SQLitePersistence(new SQLitePersistenceConfig(GetTestDBLocation())))
            {
                Collection <Project> prjList = sqlite.LoadProjects();
                DefinedContexts      dc      = sqlite.LoadContexts();

                var prjIDWithNewTask = prjList[0].UniqueID;
                var newTask          = new Task("New Task")
                {
                    ContextID = dc.FindIdByDescr("Home").ID
                };
                prjList[0].AddTask(newTask);

                sqlite.SaveProjects(prjList);

                Collection <Project> prjListNew = sqlite.LoadProjects();

                Assert.IsTrue(ProjectComparer.AreListsEquivalent(prjList, prjListNew,
                                                                 out List <Project> chgList, out List <Project> addList, out List <Project> delList,
                                                                 out List <Project> chgTaskList));
                Assert.IsNotNull(prjListNew[0].TaskList.Where(t => t.UniqueID == newTask.UniqueID).First());
            }
        }
Esempio n. 13
0
        public void SaveProjects(Collection <Project> prjListNew)
        {
            log.Info("Saving Projects");
            var prjListFromDB = new Collection <Project>();

            using (SQLiteConnection db = new SQLiteConnection(_connStrBuilder.ConnectionString))
            {
                prjListFromDB = LoadProjects();
            }

            if (!ProjectComparer.AreListsEquivalent(prjListFromDB, prjListNew,
                                                    out List <Project> chgList, out List <Project> addList, out List <Project> delList,
                                                    out List <Project> chgTaskList))
            {
                using (SQLiteConnection db = new SQLiteConnection(_connStrBuilder.ConnectionString))
                {
                    db.Open();
                    foreach (var changedPrj in chgList)
                    {
                        SQLiteCommand cmd = BuildChangedProjectSQL(changedPrj, db);
                        cmd.ExecuteNonQuery();
                    }

                    foreach (var deletedPrj in delList)
                    {
                        DeleteAttachedTasks(deletedPrj, db);
                        SQLiteCommand cmd = BuildDeleteProjectSQL(deletedPrj, db);
                        cmd.ExecuteNonQuery();
                    }

                    foreach (var addedPrj in addList)
                    {
                        SQLiteCommand cmd = BuildAddProjectSQL(addedPrj, db);
                        cmd.ExecuteNonQuery();
                        AddAttachedTasks(addedPrj.TaskList, addedPrj.UniqueID, db);
                    }

                    //changed tasks
                    foreach (var prj in chgTaskList)
                    {
                        var prjFromDB = prjListFromDB.First(p => p.UniqueID == prj.UniqueID);
                        if (!new TaskComparer().AreListsEquivalent(prjFromDB.TaskList.ToList(),
                                                                   prj.TaskList.ToList(), out List <Task> chgTaskListPerPrj,
                                                                   out List <Task> addTaskList, out List <Task> delTaskList))
                        {
                            foreach (var changedTask in chgTaskListPerPrj)
                            {
                                SQLiteCommand cmd = BuildChangedTaskSQL(changedTask,
                                                                        prj.UniqueID.ToString(), db);
                                cmd.ExecuteNonQuery();
                            }

                            foreach (var addedTask in addTaskList)
                            {
                                SQLiteCommand cmd = BuildAddTaskSQL(addedTask,
                                                                    prj.UniqueID.ToString(), db);
                                cmd.ExecuteNonQuery();
                            }
                            foreach (var deletedTask in delTaskList)
                            {
                                SQLiteCommand cmd = BuildDeleteTaskSQL(deletedTask, db);
                                cmd.ExecuteNonQuery();
                            }
                        }
                    }

                    db.Close();
                }
            }
            log.Info("Done saving Projects");
        }