Better account-based wait status
This commit is contained in:
1 parent
10badb282c
commit
33567db5a3
14 files changed
+183
-57
No files matched your search
+84
-3
@@ -215,11 +215,92 @@ class WaitTests(Base):
|
||||
self.assertEqual(self.db.task("a-prompt").status, lls.Status.PROMPT)
|
||||
self.assertTrue(any("back in use" in m for m in self.db.messages))
|
||||
|
||||
def test_a_running_wait_is_never_cleared_automatically(self):
|
||||
def test_explicit_testing_or_prompt_shows_that_status_while_waiting(self):
|
||||
self.db.set_account_wait("A", "6pm")
|
||||
self.db.set_task_status("a-testing", "testing") # explicit
|
||||
task = self.db.task("a-testing")
|
||||
self.assertEqual((task.status, task.status_label, task.overrides_wait), (lls.Status.TESTING, "Testing", True))
|
||||
self.assertTrue(any("ignores it" in m for m in self.db.messages))
|
||||
|
||||
self.db.set_task_status("a-prompt", "prompt")
|
||||
self.assertEqual(self.db.task("a-prompt").status_label, "Prompt")
|
||||
self.db.add_task("n1", "A", "testing")
|
||||
self.assertEqual(self.db.task("n1").status, lls.Status.TESTING)
|
||||
self.db.add_task("n2", "A") # no status given: follows the wait
|
||||
self.assertEqual(self.db.task("n2").status, lls.Status.WAIT)
|
||||
self.assertFalse(self.db.task("n2").overrides_wait)
|
||||
|
||||
# the account itself is still waiting, nothing was cleared
|
||||
self.assertEqual(self.db.account("A").wait_state, lls.WaitState.WAITING)
|
||||
|
||||
def test_other_tasks_keep_waiting_and_wait_makes_a_task_follow_again(self):
|
||||
self.db.set_account_wait("A", "6pm")
|
||||
self.db.add_task("a-other", "A")
|
||||
self.db.set_task_status("a-testing", "testing")
|
||||
self.assertEqual(self.db.task("a-other").status, lls.Status.WAIT)
|
||||
self.assertEqual(self.db.task("a-prompt").status, lls.Status.WAIT)
|
||||
|
||||
self.db.set_task_status("a-testing", "wait") # no time: follow the running wait again
|
||||
task = self.db.task("a-testing")
|
||||
self.assertEqual((task.status, task.overrides_wait), (lls.Status.WAIT, False))
|
||||
self.assertIn("now follows account 'A'", self.db.messages[0])
|
||||
|
||||
def test_a_new_wait_applies_to_every_task_again(self):
|
||||
self.db.set_account_wait("A", "6pm")
|
||||
self.db.set_task_status("a-testing", "testing")
|
||||
self.assertEqual(self.db.account("A").wait_state, lls.WaitState.WAITING)
|
||||
self.assertEqual(self.db.task("a-testing").status, lls.Status.WAIT)
|
||||
self.db.set_account_wait("A", "7pm") # the account hit its limit again
|
||||
task = self.db.task("a-testing")
|
||||
self.assertEqual((task.status_label, task.overrides_wait), ("Wait 19:00", False))
|
||||
|
||||
def test_unwait_clears_the_overrides_too(self):
|
||||
self.db.set_account_wait("A", "6pm")
|
||||
self.db.set_task_status("a-testing", "testing")
|
||||
self.assertTrue(self.db.clear_account_wait("A"))
|
||||
self.assertFalse(self.db.task("a-testing").overrides_wait)
|
||||
self.db.set_account_wait("A", "8pm")
|
||||
self.assertEqual(self.db.task("a-testing").status_label, "Wait 20:00")
|
||||
|
||||
def test_an_override_survives_the_wait_ending(self):
|
||||
self.db.set_account_wait("A", "1pm")
|
||||
self.at(12, 30)
|
||||
self.db.set_task_status("a-testing", "testing") # pinned while the wait runs
|
||||
self.at(14) # the wait is over
|
||||
self.assertEqual(self.db.task("a-testing").status, lls.Status.TESTING)
|
||||
self.assertEqual(self.db.task("a-prompt").status, lls.Status.LIMIT_RESET)
|
||||
self.assertEqual(self.db.account("A").wait_state, lls.WaitState.LIMIT_RESET)
|
||||
# resuming another task after the reset clears the finished wait for everyone
|
||||
self.db.set_task_status("a-prompt", "prompt")
|
||||
self.assertEqual(self.db.account("A").wait_state, lls.WaitState.NONE)
|
||||
self.assertEqual(self.db.task("a-testing").status, lls.Status.TESTING)
|
||||
self.assertEqual(self.db.task("a-prompt").status, lls.Status.PROMPT)
|
||||
|
||||
def test_the_override_ends_when_the_status_changes_or_the_task_moves(self):
|
||||
self.db.set_account_wait("A", "6pm")
|
||||
self.db.set_task_status("a-testing", "testing")
|
||||
self.db.set_task_status("a-testing", "uploading")
|
||||
self.assertFalse(self.db.task("a-testing").overrides_wait)
|
||||
self.db.set_task_status("a-testing", "testing")
|
||||
self.assertTrue(self.db.task("a-testing").overrides_wait)
|
||||
self.db.set_task_account("a-testing", "B") # B is not waiting
|
||||
task = self.db.task("a-testing")
|
||||
self.assertEqual((task.account, task.status, task.overrides_wait), ("B", lls.Status.TESTING, False))
|
||||
|
||||
def test_a_wait_no_task_shows_when_every_task_ignores_it(self):
|
||||
self.db.set_account_wait("A", "6pm")
|
||||
self.db.set_task_status("a-testing", "testing")
|
||||
self.db.set_task_status("a-prompt", "prompt") # a-done is Done
|
||||
account = self.db.account("A")
|
||||
self.assertEqual((account.level, account.wait_state, account.wait_listed),
|
||||
(lls.Level.BUSY, lls.WaitState.WAITING, True))
|
||||
|
||||
def test_overrides_are_saved(self):
|
||||
self.db.set_account_wait("A", "6pm")
|
||||
self.db.set_task_status("a-testing", "testing")
|
||||
self.db.save()
|
||||
with lls.Database(self.path) as other:
|
||||
other.set_clock(NOON)
|
||||
self.assertTrue(other.task("a-testing").overrides_wait)
|
||||
self.assertEqual(other.task("a-prompt").status, lls.Status.WAIT)
|
||||
|
||||
def test_account_wait_nothing_shows(self):
|
||||
self.db.add_account("Empty")
|
||||
|
||||
Reference in new issue
Block a user