///<summary>Correct signals are sent when user completes a TaskNote edit operation after adding a new TaskNote.</summary> public void FormTaskEdit_OnNoteEditComplete_Add() { _formTaskEditAccessor.Invoke("OnNoteEditComplete_Add", new object()); List <Signalod> listSignals = SignalodT.GetAllSignalods(); Assert.AreEqual(3, listSignals.Count); Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskPopup && x.FKeyType == KeyType.Task && x.FKey == _task.TaskNum)); Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskList && x.FKeyType == KeyType.Undefined && x.FKey == _task.TaskListNum)); }
///<summary>User clicks "OK" after having not made any changes to the Task.</summary> public void FormTaskEdit_butOK_NoChange() { _formTaskEditAccessor.SetField("_taskCur", _task); _formTaskEditAccessor.SetField("_taskOld", _task.Copy()); _formTaskEditAccessor.Invoke("butOK_Click", new object(), new EventArgs()); List <Signalod> listSignals = SignalodT.GetAllSignalods(); Assert.AreEqual(0, listSignals.Count); //No signals sent. }
///<summary>Context menu right-click and select the "Done" option.</summary> public void UserControlTasks_Done_Clicked() { _userControlTasksAccessor.SetField("_clickedTask", _task); //Directly set which task is clicked. _userControlTasksAccessor.Invoke("Done_Clicked"); //Context menu "Done" option click. List <Signalod> listSignals = SignalodT.GetAllSignalods(); OpenDentBusiness.Task taskDb = Tasks.GetOne(_task.TaskNum); Assert.AreEqual(1, listSignals.Count); Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.Task && x.FKeyType == KeyType.Task && x.FKey == _task.TaskNum)); Assert.AreEqual(TaskStatusEnum.Done, taskDb.TaskStatus); }
///<summary>Correct signals are sent when user deletes a Task using "Delete" button, and Task is no longer in database.</summary> public void FormTaskEdit_butDelete_Click() { _formTaskEditAccessor.SetField("IsNew", true); //Causes butDelete_Click to skip UI interaction. _formTaskEditAccessor.Invoke("butDelete_Click", new object(), new EventArgs()); List <Signalod> listSignals = SignalodT.GetAllSignalods(); Assert.AreEqual(2, listSignals.Count); OpenDentBusiness.Task task = Tasks.GetOne(_task.TaskNum); Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskList && x.FKeyType == KeyType.Undefined && x.FKey == _task.TaskListNum)); Assert.IsNull(task); }
///<summary>Correct signals are sent when changing the TaskList of the Task.</summary> public void FormTaskEdit_SendSignalsRefillLocal_ChangeTaskListNum() { _task.TaskListNum = _taskListGrandchild.TaskListNum; long newTaskListNum = _taskListParent.TaskListNum; _formTaskEditAccessor.Invoke("SendSignalsRefillLocal", _task, newTaskListNum, true); List <Signalod> listSignals = SignalodT.GetAllSignalods(); Assert.AreEqual(3, listSignals.Count); //Only one signal sent. Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskList && x.FKeyType == KeyType.Undefined && x.FKey == newTaskListNum)); //new TL Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskList && x.FKeyType == KeyType.Undefined && x.FKey == _task.TaskListNum)); //old TL }
///<summary>Context menu right-click and select the "Mark Read" with TaskNewTrackedByUser preference turned on.</summary> public void UserControlTasks_MarkRead_TasksNewTrackedByUser() { Prefs.UpdateBool(PrefName.TasksNewTrackedByUser, true); //TaskNewTrackedByUser=true; TaskUnreads.SetUnread(Security.CurUser.UserNum, _task); //Set the task to unread for our user. _userControlTasksAccessor.Invoke("MarkRead", _task); //TaskNewTrackedByUser=false; List <Signalod> listSignals = SignalodT.GetAllSignalods(); Assert.AreEqual(1, listSignals.Count); Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.Task && x.FKeyType == KeyType.Task && x.FKey == _task.TaskNum));//Signal for _task. Assert.IsFalse(_task.IsUnread); }
///<summary>Context menu right-click and select the "Mark Read" with TaskNewTrackedByUser preference turned off.</summary> public void UserControlTasks_MarkRead() { Prefs.UpdateBool(PrefName.TasksNewTrackedByUser, false); //TaskNewTrackedByUser=false; _userControlTasksAccessor.Invoke("MarkRead", _task); List <Signalod> listSignals = SignalodT.GetAllSignalods(); Assert.AreEqual(1, listSignals.Count); Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.Task && x.FKeyType == KeyType.Task && x.FKey == _task.TaskNum));//Signal for _task. OpenDentBusiness.Task taskDb = Tasks.GetOne(_task.TaskNum); Assert.AreEqual(TaskStatusEnum.Viewed, taskDb.TaskStatus); }
///<summary>Correct signals are sent when changing the Object of the Task from non Patient to a Patient.</summary> public void FormTaskEdit_SendSignalsRefillLocal_ChangeFromNoPatientObjectToPatient() { _formTaskEditAccessor.SetField("_patientPatNum", 0); //No patient object on load. long patNum = 1; _task.KeyNum = patNum; _task.ObjectType = TaskObjectType.Patient; _formTaskEditAccessor.Invoke("SendSignalsRefillLocal", _task, _task.TaskListNum, true); List <Signalod> listSignals = SignalodT.GetAllSignalods(); Assert.AreEqual(3, listSignals.Count); //Two signals sent. Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskList && x.FKeyType == KeyType.Undefined && x.FKey == _task.TaskListNum)); //current TL Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskPatient && x.FKeyType == KeyType.Undefined && x.FKey == patNum)); //new Patient }
///<summary>Correct signals are sent when changing the UserNum of the Task.</summary> public void FormTaskEdit_SendSignalsRefillLocal_ChangeUser() { long oldUserNum = Security.CurUser.UserNum; _formTaskEditAccessor.SetField("_userNumFrom", oldUserNum); _task.UserNum = Security.CurUser.UserNum + 1; _formTaskEditAccessor.Invoke("SendSignalsRefillLocal", _task, _task.TaskListNum, true); List <Signalod> listSignals = SignalodT.GetAllSignalods(); Assert.AreEqual(4, listSignals.Count); //Three signals sent. Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskList && x.FKeyType == KeyType.Undefined && x.FKey == _task.TaskListNum)); //current TL Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskAuthor && x.FKeyType == KeyType.Undefined && x.FKey == oldUserNum)); //old User Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskAuthor && x.FKeyType == KeyType.Undefined && x.FKey == _task.UserNum)); //new User }
///<summary>If a note was added to a Done task and the user hits "Cancel", the task status is set to Viewed because the note is still there and the task didn't move lists.</summary> public void FormTaskEdit_FormTaskEdit_FormClosing_Cancel() { _task.TaskStatus = TaskStatusEnum.Done; _formTaskEditAccessor.SetField("_taskCur", _task); _formTaskEditAccessor.SetField("_taskOld", _task.Copy()); Tasks.Update(_task); _formTaskEditAccessor.SetField("NotesChanged", true); _formTaskEditAccessor.Invoke("FormTaskEdit_FormClosing", new object(), new FormClosingEventArgs(CloseReason.UserClosing, false)); List <Signalod> listSignals = SignalodT.GetAllSignalods(); Assert.AreEqual(3, listSignals.Count); Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskPopup && x.FKeyType == KeyType.Task && x.FKey == _task.TaskNum)); Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskList && x.FKeyType == KeyType.Undefined && x.FKey == _task.TaskListNum)); }
///<summary>Context menu right-click and select the "Send to Me" option.</summary> public void UserControlTasks_SendToMe_Clicked() { _userControlTasksAccessor.SetField("_clickedTask", _task); _userControlTasksAccessor.Invoke("SendToMe_Clicked", false); List <Signalod> listSignals = SignalodT.GetAllSignalods(); Assert.AreEqual(3, listSignals.Count); Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskList && x.FKeyType == KeyType.Undefined && x.FKey == _taskListGrandchild.TaskListNum)); //Signal for source taskList. Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskList && x.FKeyType == KeyType.Undefined && x.FKey == _taskListParent.TaskListNum)); //Signal for destination taskList. OpenDentBusiness.Task taskDb = Tasks.GetOne(_task.TaskNum); Assert.AreEqual(taskDb.TaskListNum, _taskListParent.TaskListNum); //Db was properly updated with new taskListNum on _task. }
///<summary>Correct signals are sent when user clicks "Reply" button (without having added a TaskNote), and Task.TaskListNum is correctly updated in database.</summary> public void FormTaskEdit_OnNoteEditComplete_Reply() { long oldTaskListNum = _task.TaskListNum; _formTaskEditAccessor.SetField("_replyToUserNum", Security.CurUser.UserNum); //User we are replying to. _formTaskEditAccessor.Invoke("OnNoteEditComplete_Reply", new object()); List <Signalod> listSignals = SignalodT.GetAllSignalods(); Assert.AreEqual(4, listSignals.Count); OpenDentBusiness.Task task = Tasks.GetOne(_task.TaskNum); Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskList && x.FKeyType == KeyType.Undefined && x.FKey == oldTaskListNum)); //Old TL Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskList && x.FKeyType == KeyType.Undefined && x.FKey == _task.TaskListNum)); //New TL Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskPopup && x.FKeyType == KeyType.Task && x.FKey == _task.TaskNum)); Assert.AreEqual(_task.TaskListNum, task.TaskListNum); }
///<summary>Correct signals are sent when user clicks "Reply" button, and Task.TaskListNum is correctly updated in database.</summary> public void FormTaskEdit_butReply_Click() { long oldTaskListNum = _task.TaskListNum; _formTaskEditAccessor.SetField("_replyToUserNum", Security.CurUser.UserNum); //User we are replying to. _formTaskEditAccessor.SetField("NotesChanged", true); //Causes butReply_Click to skip UI interaction. _formTaskEditAccessor.Invoke("butReply_Click", new object(), new EventArgs()); List <Signalod> listSignals = SignalodT.GetAllSignalods(); OpenDentBusiness.Task task = Tasks.GetOne(_task.TaskNum); Assert.AreEqual(4, listSignals.Count); Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskList && x.FKeyType == KeyType.Undefined && x.FKey == oldTaskListNum)); //Old TL Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskList && x.FKeyType == KeyType.Undefined && x.FKey == _task.TaskListNum)); //New TL Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskPopup && x.FKeyType == KeyType.Task && x.FKey == _task.TaskNum)); Assert.AreEqual(_task.TaskListNum, task.TaskListNum); }
///<summary>Context menu right-click and drill down in the "Set Priority" option, selecting one of the priority options.</summary> public void UserControlTasks_menuTaskPriority_Click() { Def newDef = new Def() { DefNum = 5 }; _userControlTasksAccessor.Invoke("menuTaskPriority_Click", _task, newDef); List <Signalod> listSignals = SignalodT.GetAllSignalods(); Assert.AreEqual(1, listSignals.Count); Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.Task && x.FKeyType == KeyType.Task && x.FKey == _task.TaskNum));//Signal for _task. OpenDentBusiness.Task taskDb = Tasks.GetOne(_task.TaskNum); Assert.AreEqual(newDef.DefNum, taskDb.PriorityDefNum); }
///<summary>User clicks "OK" after having changed the Description.</summary> public void FormTaskEdit_butOK_Click_DescriptionChanged() { _formTaskEditAccessor.SetField("_taskCur", _task); _formTaskEditAccessor.SetField("_taskOld", _task.Copy()); string newDescript = "new" + _task.Descript; ODtextBox textDescript = (ODtextBox)_formTaskEditAccessor.GetField("textDescript"); textDescript.Text = newDescript; _formTaskEditAccessor.SetField("textDescript", textDescript); _formTaskEditAccessor.Invoke("butOK_Click", new object(), new EventArgs()); List <Signalod> listSignals = SignalodT.GetAllSignalods(); Assert.AreEqual(2, listSignals.Count); OpenDentBusiness.Task task = Tasks.GetOne(_task.TaskNum); Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskList && x.FKeyType == KeyType.Undefined && x.FKey == _task.TaskListNum)); //New TL Assert.AreEqual(newDescript, task.Descript); }
///<summary>Context menu right-click and select the "Paste" option with a cut TaskList on the clipboard.</summary> public void UserControlTasks_Paste_Clicked_TaskList() { _userControlTasksAccessor.SetField("_wasCut", true); //taskList is cut, not copied. //Destination task list is the root node (item 0) from _listTaskListTreeHistory which was initialized in SetupTest(). _userControlTasksAccessor.SetField("_clipTaskList", _taskListGrandchild); //Directly set which taskList is cut. _userControlTasksAccessor.Invoke("Paste_Clicked"); //Context menu "Paste" option click. List <Signalod> listSignals = SignalodT.GetAllSignalods(); Assert.AreEqual(2, listSignals.Count); Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskList && x.FKeyType == KeyType.Undefined && x.FKey == _taskListGrandchild.Parent)); //Signal for source taskList. Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskList && x.FKeyType == KeyType.Undefined && x.FKey == _taskListParent.TaskListNum)); //Signal for destination taskList. TaskList taskListDb = TaskLists.GetOne(_taskListGrandchild.TaskListNum); Assert.AreEqual(_taskListParent.TaskListNum, taskListDb.Parent); //Db was properly updated with new Parent taskList. }
///<summary>When sending a Task to multiple TaskLists, copies of the Task are made for the extra TaskLists. Verifies correct signals and Tasks are actually copied.</summary> public void FormTaskEdit_SaveCopy_OtherUserInbox() { _formTaskEditAccessor.SetField("_taskCur", _task); _formTaskEditAccessor.SetField("_listTaskNotes", new List <TaskNote>()); List <long> listTaskListNums = new List <long>() { _taskListChild.TaskListNum }; //Not current user's inbox, but still subscribed. _formTaskEditAccessor.Invoke("SaveCopy", listTaskListNums); List <Signalod> listSignals = SignalodT.GetAllSignalods(); Assert.AreEqual(2, listSignals.Count); //One popup signal, one tasklist signal. List <OpenDentBusiness.Task> listAllTasks = Tasks.GetNewTasksThisUser(Security.CurUser.UserNum, Clinics.ClinicNum); OpenDentBusiness.Task task = listAllTasks.FirstOrDefault(x => x.TaskListNum == _taskListChild.TaskListNum); //copied task. Assert.IsNotNull(task); //Task was copied correctly. //popup signal for copied task. Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskPopup && x.FKeyType == KeyType.Task && x.FKey == task.TaskNum)); Assert.AreEqual(_taskListChild.TaskListNum, task.TaskListNum); //Correct tasklist. }
///<summary>Context menu right-click and select the "Paste" option with a copied Task on the clipboard.</summary> public void UserControlTasks_Paste_Clicked_Task_Copied() { _userControlTasksAccessor.SetField("_wasCut", false); //task is copied. //Destination task list is the root node (item 0) from _listTaskListTreeHistory which was initialized in SetupTest(). _userControlTasksAccessor.SetField("_clipTask", _task); //Directly set which task is cut. _userControlTasksAccessor.Invoke("Paste_Clicked"); //Context menu "Paste" option click. List <Signalod> listSignals = SignalodT.GetAllSignalods(); Assert.AreEqual(3, listSignals.Count); Assert.IsTrue(!listSignals.Exists(x => x.IType == InvalidType.TaskList && x.FKeyType == KeyType.Undefined && x.FKey == _taskListGrandchild.TaskListNum)); //Should not have signal for source taskList. Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskList && x.FKeyType == KeyType.Undefined && x.FKey == _taskListParent.TaskListNum)); //Signal for destination taskList. //Signal for Task Popup. Don't know the primary key for this. Assert.IsTrue(listSignals.Exists(x => x.IType == InvalidType.TaskPopup && x.FKeyType == KeyType.Task)); long pastedTaskPK = listSignals.FirstOrDefault(x => x.IType == InvalidType.TaskPopup)?.FKey ?? 0; //Only way to get new key is by reading the associated signal. OpenDentBusiness.Task taskCopiedDb = Tasks.GetOne(_task.TaskNum); //Copied task. OpenDentBusiness.Task taskPastedDb = Tasks.GetOne(pastedTaskPK); //Pasted task. Assert.AreEqual(_taskListGrandchild.TaskListNum, taskCopiedDb.TaskListNum); //Db did not change on copied task. Assert.AreEqual(_taskListParent.TaskListNum, taskPastedDb.TaskListNum); //Db has pasted task in the correct tasklist. }