public void TaskTests() { var model = _service.GetSummaryModel(_requestLocal); var contribBefore_A = model.Projects.Where(p => p.TProjectID == _projectID_A).Sum(p => p.TTasks.Sum(t => t.Contrib.ThisMonth)); var contribBefore_B = model.Projects.Where(p => p.TProjectID == _projectID_B).Sum(p => p.TTasks.Sum(t => t.Contrib.ThisMonth)); _service.StartTask(_requestUTC, _taskID_A); Thread.Sleep(100); model = _service.GetSummaryModel(_requestLocal); var statusModel = _service.GetStatusModel(_requestUTC); var contribAfter_A = model.Projects.Where(p => p.TProjectID == _projectID_A).Sum(p => p.TTasks.Sum(t => t.Contrib.ThisMonth)); Assert.IsTrue(model.InProgress); Assert.IsTrue(statusModel.InProgress); Assert.AreEqual(statusModel.TTaskInProgress.TTaskID, _taskID_A); Assert.AreEqual(statusModel.LatestEntry.TTaskID, _taskID_A); Assert.IsTrue(contribAfter_A > contribBefore_A); Assert.IsTrue(model.Projects.Single(p => p.InProgress).TProjectID == _projectID_A); Assert.IsTrue(model.Projects.Single(p => p.InProgress).TTasks.Single(t => t.InProgress).TTaskID == _taskID_A); _service.SwitchTask(_requestLocal, _taskID_A, _taskID_B); Thread.Sleep(100); model = _service.GetSummaryModel(_requestLocal); statusModel = _service.GetStatusModel(_requestUTC); var contribAfter_B = model.Projects.Where(p => p.TProjectID == _projectID_B).Sum(p => p.TTasks.Sum(t => t.Contrib.ThisMonth)); Assert.IsTrue(model.InProgress); Assert.IsTrue(statusModel.InProgress); Assert.AreEqual(statusModel.TTaskInProgress.TTaskID, _taskID_B); Assert.AreEqual(statusModel.LatestEntry.TTaskID, _taskID_B); Assert.IsTrue(contribAfter_B > contribBefore_B); Assert.IsTrue(model.Projects.Single(p => p.InProgress).TProjectID == _projectID_B); Assert.IsTrue(model.Projects.Single(p => p.InProgress).TTasks.Single(t => t.InProgress).TTaskID == _taskID_B); _service.StopTask(_requestLocal, _taskID_B); model = _service.GetSummaryModel(_requestLocal); statusModel = _service.GetStatusModel(_requestUTC); var contribFinal_A = model.Projects.Where(p => p.TProjectID == _projectID_A).Sum(p => p.TTasks.Sum(t => t.Contrib.ThisMonth)); var contribFinal_B = model.Projects.Where(p => p.TProjectID == _projectID_B).Sum(p => p.TTasks.Sum(t => t.Contrib.ThisMonth)); Assert.IsFalse(model.InProgress); Assert.IsFalse(statusModel.InProgress); Assert.AreEqual(statusModel.LatestEntry.TTaskID, _taskID_B); Assert.IsTrue(contribFinal_A > contribAfter_A); Assert.IsTrue(contribFinal_B > contribBefore_B); var entry = _service.GetEntriesModel(_requestLocal, null, null, _projectID_A, 0, 9999).Entries.OrderByDescending(e => e.TEntryID).First(); var entryContribBefore = entry.Contrib; entry.StartDate = entry.StartDate.AddHours(-1); _service.UpdateEntry(_requestLocal, entry); model = _service.GetSummaryModel(_requestLocal); entry = _service.GetEntriesModel(_requestLocal, null, null, _projectID_A, 0, 9999).Entries.OrderByDescending(e => e.TEntryID).First(); var entryContribAfter = entry.Contrib; var contribEdited_A = model.Projects.Where(p => p.TProjectID == _projectID_A).Sum(p => p.TTasks.Sum(t => t.Contrib.ThisMonth)); Assert.AreEqual(contribEdited_A, contribFinal_A + 3600, 0.1); Assert.AreEqual(entryContribAfter, entryContribBefore + 3600, 0.1); }