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()); } }
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); }
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)); }
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)); }
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)); } }
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()); } }
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"); }