def test_remove_task_by_name(self): e.new_list(*build_context("foo\nbar\nbaz")) actual, _, _ = e.remove_tasks(*build_context("bar")) expected = f"{OWNER.name}'s list\n" \ ":white_large_square: foo (1)\n" \ ":white_large_square: baz (2)" self.assertEqual(expected, actual)
def test_reorder_move(self): e.new_list(*build_context('foo\nbar\nbaz\nspam\ntake my "splut" for 2 times')) actual, _, _ = e.move(*build_context('my "splut" for 2 3')) expected = f"{OWNER.name}'s list\n" \ ":white_large_square: foo (1)\n" \ ":white_large_square: bar (2)\n" \ ':white_large_square: take my "splut" for 2 times (3)\n' \ ":white_large_square: baz (4)\n" \ ":white_large_square: spam (5)" self.assertEqual(expected, actual) actual, _, _ = e.move(*build_context('"splut" 2')) expected = f"{OWNER.name}'s list\n" \ ":white_large_square: foo (1)\n" \ ':white_large_square: take my "splut" for 2 times (2)\n' \ ':white_large_square: bar (3)\n' \ ":white_large_square: baz (4)\n" \ ":white_large_square: spam (5)" self.assertEqual(expected, actual) actual, _, _ = e.move(*build_context('splut 4')) expected = f"{OWNER.name}'s list\n" \ ":white_large_square: foo (1)\n" \ ':white_large_square: bar (2)\n' \ ':white_large_square: baz (3)\n' \ ':white_large_square: take my "splut" for 2 times (4)\n' \ ":white_large_square: spam (5)" self.assertEqual(expected, actual) actual, _, _ = e.move(*build_context('"take" 1')) expected = f"{OWNER.name}'s list\n" \ ':white_large_square: take my "splut" for 2 times (1)\n' \ ':white_large_square: foo (2)\n' \ ':white_large_square: bar (3)\n' \ ':white_large_square: baz (4)\n' \ ":white_large_square: spam (5)" self.assertEqual(expected, actual)
def test_add_tasks(self): e.new_list(*build_context("foo")) actual, _, _ = e.add_tasks(*build_context("bar\nbaz")) expected = f"{OWNER.name}'s list\n" \ ":white_large_square: foo (1)\n" \ ":white_large_square: bar (2)\n" \ ":white_large_square: baz (3)" self.assertEqual(expected, actual)
def test_check_task_not_started(self): e.new_list(*build_context("foo\nbar\nbaz")) actual, _, _ = e.check_task(*build_context("bar")) expected = f"{OWNER.name}'s list\n" \ ":white_large_square: foo (1)\n" \ ":white_check_mark: bar (2)\n" \ ":white_large_square: baz (3)" self.assertEqual(expected, actual)
def test_reorder_top(self): e.new_list(*build_context("foo\nbar\nbaz\nspam\nsplut")) actual, _, _ = e.top(*build_context('spa')) expected = f"{OWNER.name}'s list\n" \ ":white_large_square: spam (1)\n" \ ":white_large_square: foo (2)\n" \ ":white_large_square: bar (3)\n" \ ":white_large_square: baz (4)\n" \ ":white_large_square: splut (5)" self.assertEqual(expected, actual)
def test_clear_tasks(self): e.new_list(*build_context("foo\nbar\nbaz")) e.start_task(*build_context("foo")) e.check_task(*build_context("foo")) e.start_task(*build_context("bar")) actual, _, _ = e.clear_checked_tasks(*build_context()) expected = f"FunctionalTestUser's list\n" \ f":arrow_forward: bar (1)\n" \ f":white_large_square: baz (2)" self.assertEqual(expected, actual)
def test_check_list(self): e.new_list(*build_context("foo\nbar\nbaz\nfweep\nslurp")) e.start_task(*build_context("foo")) actual, _, _ = e.check_list(*build_context("1 2 4")) expected = f"{OWNER.name}'s list\n" \ ":white_check_mark: foo (1)\n" \ ":white_check_mark: bar (2)\n" \ ":white_large_square: baz (3)\n" \ ":white_check_mark: fweep (4)\n" \ ":white_large_square: slurp (5)" self.assertEqual(expected, actual)
def test_start_and_stop_task(self): e.new_list(*build_context("foo\nbar\nbaz")) actual, _, _ = e.start_task(*build_context("bar")) expected = f"{OWNER.name}'s list\n" \ ":white_large_square: foo (1)\n" \ ":arrow_forward: bar (2)\n" \ ":white_large_square: baz (3)" self.assertEqual(expected, actual) actual, _, _ = e.stop_task(*build_context("bar")) expected = f"{OWNER.name}'s list\n" \ ":white_large_square: foo (1)\n" \ ":white_large_square: bar (2)\n" \ ":white_large_square: baz (3)" self.assertEqual(expected, actual)
def test_new_list(self): actual, _, _ = e.new_list(*build_context("foo\nbar\nbaz")) expected = f"Created a new list for {OWNER.name}\n" \ ":white_large_square: foo (1)\n" \ ":white_large_square: bar (2)\n" \ ":white_large_square: baz (3)" self.assertEqual(expected, actual)
def test_time_spent_sec(self): e.new_list(*build_context("foo\nbar\nbaz")) e.start_task(*build_context("foo")) sleep(2) e.stop_task(*build_context("foo")) e.start_task(*build_context("bar")) sleep(2) e.check_task(*build_context("bar")) e.start_task(*build_context("foo")) sleep(2) e.check_task(*build_context("foo")) actual, _, _ = e.task_time(*build_context()) expected = f"{OWNER.name} times\n" \ f"foo: 4s\n" \ f"bar: 2s\n" \ f"baz: 0s\n" \ f"\n" \ f"Total time: 6s" self.assertEqual(expected, actual)
def test_uncheck_task_not_completed(self): e.new_list(*build_context("foo\nbar\nbaz")) actual, _, _ = e.uncheck_task(*build_context("bar")) expected = "That task hasn't been completed." self.assertEqual(expected, actual)
def test_remove_task_no_value(self): e.new_list(*build_context("foo\nbar\nbaz")) with self.assertRaisesRegex(ListBotError, f'Couldn\'t find any list item matching "spam"'): e.remove_tasks(*build_context("spam"))
def test_remove_task_multiple_values(self): e.new_list(*build_context("foo\nbar\nbaz")) with self.assertRaisesRegex(ListBotError, f'Multiple items found matching "ba":\nbar\nbaz'): e.remove_tasks(*build_context("ba"))
def test_start_two_tasks(self): e.new_list(*build_context("foo\nbar\nbaz")) e.start_task(*build_context("foo")) actual, _, _ = e.start_task(*build_context("bar")) expected = "You can only have one started task at a time." self.assertEqual(expected, actual)
def test_already_stopped(self): e.new_list(*build_context("foo\nbar\nbaz")) actual, _, _ = e.stop_task(*build_context("bar")) expected = "That task hasn't been started." self.assertEqual(expected, actual)
def test_check_list_already_finished(self): e.new_list(*build_context("foo\nbar\nbaz")) e.check_task(*build_context("foo")) actual, _, _ = e.check_list(*build_context("1 2")) expected = "Task 1 has already been finished." self.assertEqual(expected, actual)
def test_check_list_item_not_in_list(self): e.new_list(*build_context("foo\nbar\nbaz")) e.start_task(*build_context("foo")) with self.assertRaisesRegex(ListBotError, "4 is not a valid list position."): e.check_list(*build_context("1 2 4"))
def test_check_list_invalid_entry(self): e.new_list(*build_context("foo\nbar\nbaz")) e.start_task(*build_context("foo")) actual, _, _ = e.check_list(*build_context("1 2 fweep")) expected = "All arguments must be positions of tasks, not names." self.assertEqual(expected, actual)