repos
/ timestrap-django master

timestrap-django

mirror archived upstream

Time tracking you can host anywhere, built on Django. Full export support in multiple formats and easily extensible.

djangodockerhandcodedpythonself-hostedtime-trackingtimetracker

3.0 KB · 96 lines · Python Raw History
 1from decimal import Decimal
 2
 3from selenium.common.exceptions import NoSuchElementException
 4
 5from core.models import Task
 6
 7from . import SeleniumTestCase
 8
 9
10class TasksTestCase(SeleniumTestCase):
11    def test_tasks_navigation(self):
12        nav_tasks = self.find("nav-tasks")
13        nav_tasks.click()
14
15        self.find("view-tasks")
16
17    def test_tasks_visible(self):
18        self.test_tasks_navigation()
19
20        tasks = Task.objects.all()
21        for task in tasks:
22            task_id = "task-%s" % (task.id,)
23            self.find(task_id)
24
25    def test_tasks_add(self):
26        self.test_tasks_navigation()
27
28        task_add = self.find("task-add")
29
30        task_add.click()
31
32        task_name_new = self.find("task-name-new")
33        task_hourly_rate_new = self.find("task-hourly-rate-new")
34        task_submit_new = self.find("task-submit-new")
35
36        task_name_new.send_keys("new task name")
37        task_hourly_rate_new.send_keys("3.50")
38        task_submit_new.click()
39
40        view_tasks = self.find("view-tasks")
41        self.contains("new task name", view_tasks)
42        self.contains("3.50", view_tasks)
43
44        task = Task.objects.get(name="new task name")
45        self.assertEqual(task.name, "new task name")
46        self.assertEqual(task.hourly_rate, Decimal(3.50))
47
48    def test_tasks_delete(self):
49        self.test_tasks_navigation()
50
51        task = Task.objects.first()
52        task_id = "task-%s" % (task.id,)
53        task_element = self.find(task_id)
54        task_menu = self.find("task-menu", task_element)
55        task_menu_delete = self.find("task-menu-delete", task_element)
56
57        task_menu.click()
58        task_menu_delete.click()
59
60        self.assertRaises(NoSuchElementException, self.find, task_id)
61        self.assertRaises(Task.DoesNotExist, Task.objects.get, id=task.id)
62
63    def test_tasks_change(self):
64        self.test_tasks_navigation()
65
66        task = Task.objects.first()
67        task_id = "task-%s" % (task.id,)
68        task_element = self.find(task_id)
69        task_menu = self.find("task-menu", task_element)
70        task_menu_change = self.find("task-menu-change", task_element)
71
72        task_menu.click()
73        task_menu_change.click()
74
75        task_name_edit = self.find("task-name-edit")
76        task_hourly_rate_edit = self.find("task-hourly-rate-edit")
77        task_submit_edit = self.find("task-submit-edit")
78
79        self.assertEqual(task.name, task_name_edit.get_attribute("value"))
80        self.assertEqual(
81            task.hourly_rate, Decimal(task_hourly_rate_edit.get_attribute("value"))
82        )  # noqa: E501
83
84        self.clear(task_name_edit)
85        task_name_edit.send_keys("new task name")
86        self.clear(task_hourly_rate_edit)
87        task_hourly_rate_edit.send_keys("3.50")
88        task_submit_edit.click()
89
90        self.contains("new task name", task_element)
91        self.contains("3.50", task_element)
92
93        task = Task.objects.get(id=task.id)
94        self.assertEqual(task.name, "new task name")
95        self.assertEqual(task.hourly_rate, Decimal(3.50))