コード例 #1
0
        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);
        }