Example #1
0
 def save_logentry(self):
     """
     the logentry is saved to the database after it has been build
     """
     LogEntry.create(task=self.logentry_tmp['task'],
                     time_spent=self.logentry_tmp['time_spent'],
                     note=self.logentry_tmp['note'],
                     employee=self.logentry_tmp['employee'])
     super().save_logentry()
 def setUp(self):
     """
     the database is filled with testdata.
     a logentry queryset is prepared as possible search result
     """
     self.create_test_data()
     self.dialog = SearchDialog()
     self.logentry_queryset = LogEntry.select()
     self.logentry_queryset_empty = LogEntry.select().where(
         LogEntry.employee_id == 100)
 def setUp(self):
     """
     the database is filled with testdata. The logentry
     """
     self.create_test_data()
     self.dialog = SearchDialog()
     self.logentry_queryset = LogEntry.select()
 def check_date(self, userinput):
     """
     the userinput for search by date is checked
     example: "29.8.2016" or "29.8.2016 - 30.8.2016"
     if a date or date range is given,
     the searchparameters are set
     the qury function is returned.
     The user can also choose "l" as list, then a list of all
     dates for which logentries exist is prepared
     for the user to choose from
     """
     if userinput == 'l':
         logentries = \
             LogEntry.select(LogEntry.logdate).group_by(LogEntry.logdate)
         self.choice_list = ChoiceList(list=list(logentries),
                                       fmt_func=_logentry_to_date,
                                       choice_func=self.choice_date)
         if logentries:
             self.choice = True
             return
         else:
             self.msg = "No logentries are in the database yet."
     else:
         try:
             search_parameters = \
                 get_date_searchparameters_from_userinput(userinput)
         except ValueError as e:
             self.msg = e
             return
         else:
             self.search_parameters = search_parameters
             return self.query_by_date
 def test_search_query_by_employee(self):
     employee = Employee.select().get()
     tasks = LogEntry.select().where(LogEntry.employee_id == employee.id)
     self.dialog.search_parameters = SearchParameters(
         employee_id=employee.id)
     self.dialog.query_by_employee()
     self.assertEqual(tasks, self.dialog.logentry_queryset)
Example #6
0
 def test_create_save_logentry(self):
     """
     logentry is saved
     """
     self.dialog.save_logentry()
     self.assertTrue(self.dialog.quit_dialog)
     self.assertIsNotNone(self.dialog.return_msg)
     self.assertTrue(LogEntry.select(LogEntry.task == "some exotic task").exists())
 def query_by_employee(self):
     """
     query for search by employee and set up the searchresult list
     """
     self.logentry_queryset = \
         LogEntry.select().join(Employee).where(
             (Employee.id == self.search_parameters.employee_id)
         )
 def setUp(self):
     """
     sets up seacrh results for the 3 cases: one employee was found with a name,
     more than one employee found, no employee found.
     this set up relies on the knowledge of the testdata that is created
     """
     self.create_test_data()
     self.dialog = SearchDialog()
     self.logentry_queryset = LogEntry.select()
     self.employee1, self.employee_queryset1 = _get_employee_from_name(
         'Love')
     self.employee2, self.employee_queryset2 = _get_employee_from_name(
         'Sabine')
     self.employee3, self.employee_queryset3 = _get_employee_from_name(
         'Nobody')
     self.logentries_dates = list(
         LogEntry.select(LogEntry.logdate).group_by(LogEntry.logdate))
Example #9
0
 def test_result_discard_delete(self):
     """
     when the delete is rejected everything stays as is
     """
     self.dialog.discard_delete()
     self.assertIsNone(self.dialog.activestep)
     self.assertIsNotNone(self.dialog.msg)
     self.assertTrue(
         LogEntry.select().where(LogEntry.id == self.logentry.id).exists())
 def query_by_term(self):
     """
     query for search by term and set up the searchresult list
     """
     searchstring = self.search_parameters.searchterm
     self.logentry_queryset = \
         LogEntry.select()\
                 .where(LogEntry.task.contains(searchstring) |
                        LogEntry.note.contains(searchstring))
 def setUp(self):
     """
     the date list is set up
     """
     self.create_test_data()
     self.dialog = SearchDialog()
     self.dialog.active_choice_index = 0
     date_list = list(
         LogEntry.select(LogEntry.logdate).group_by(LogEntry.logdate))
     self.dialog.choice_list = ChoiceList(list=date_list)
Example #12
0
 def test_result_delete(self):
     """
     when the delete is rejected everything stays as is
     """
     self.dialog.delete()
     self.assertTrue(self.dialog.choice)
     self.assertNotIn(self.logentry, self.dialog.choice_list.list)
     self.assertIsNotNone(self.dialog.msg)
     self.assertFalse(
         LogEntry.select().where(LogEntry.id == self.logentry.id).exists())
     self.assertIsNone(self.dialog.activestep)
 def test_helpers__logentry_to_date(self):
     """
     get formated date out of logentry in format of '%d.%m.%Y'
     """
     with test_database(test_db, (Employee, LogEntry)):
         self.create_test_data()
         logentry = LogEntry.select().get()
         datestring = _logentry_to_date(logentry)
         date_from_datestring = datetime.datetime.strptime(
             datestring, date_fmt).date()
         self.assertEqual(logentry.logdate, date_from_datestring)
Example #14
0
 def test_update_save_logentry(self):
     """
     logentry is saved with the updated values
     """
     self.dialog.save_logentry()
     updated_logentry = LogEntry.get(LogEntry.id == self.logentry.id)
     self.assertEqual(updated_logentry.employee, self.employee)
     self.assertEqual(updated_logentry.task, "some exotic task")
     self.assertEqual(updated_logentry.time_spent, 20)
     self.assertEqual(updated_logentry.note, "some note")
     self.assertEqual(updated_logentry.logdate, self.logentry.logdate)
 def query_by_date(self):
     """
     query for search by date and set up the searchresult list
     """
     date_from = self.search_parameters.date_from
     if self.search_parameters.date_to:
         date_to = self.search_parameters.date_to
     else:
         date_to = date_from
     self.logentry_queryset = \
         LogEntry.select()\
                 .where((LogEntry.logdate <= date_to) &
                        (LogEntry.logdate >= date_from))
 def query_by_time_spent(self):
     """
     query for search by time spent
     and set up the searchresult list
     """
     time_from = self.search_parameters.time_from
     if self.search_parameters.time_to:
         time_to = self.search_parameters.time_to
     else:
         time_to = time_from
     self.logentry_queryset = \
         LogEntry.select()\
                 .where((LogEntry.time_spent <= time_to) &
                        (LogEntry.time_spent >= time_from))
Example #17
0
 def setUp(self):
     """
     a logentry has been chosen from the list, so the
     dialog is in detail view
     the list of the dialog consists of logentries
     """
     self.create_test_data()
     self.logentry_queryset = LogEntry.select()
     self.logentry_list = list(self.logentry_queryset)
     searchresult = ChoiceList(list=self.logentry_list, name="logentries")
     data = {"searchresult": searchresult}
     self.dialog = ResultDialog(**data)
     self.logentry = self.logentry_queryset.get()
     self.dialog.active_choice_item = self.logentry
     self.dialog.active_choice_index = self.dialog.choice_list.list.index(
         self.logentry)
     self.dialog.prepare_delete()
Example #18
0
 def setUp(self):
     """
     Szenario: temporary logentry has been build.
     the user can now decide what to do with it.
     """
     self.create_test_data()
     self.logentry = LogEntry.select().get()
     data = {'logentry': self.logentry}
     self.dialog = UpdateDialog(**data)
     self.employee = Employee.select().get()
     self.dialog.logentry_tmp = {
         'task': "some exotic task",
         'time_spent': 20,
         'note': "some note",
         'employee': self.employee,
     }
     self.print_stack = ['some item']
     self.print_logentries = _print_logentry_tmp(self.dialog.logentry_tmp, self.logentry)
 def test_helpers__print_logentry_tmp_for_update(self):
     """
     print in case of update: fields are taken from tmps and if they are
     not filled, from the database record
     """
     with test_database(test_db, (Employee, LogEntry)):
         self.create_test_data()
         employee = Employee.select().get()
         logentry = LogEntry.select().get()
         logentry_tmp = {
             'employee': employee,
             'time_spent': 45,
         }
         printstring = _print_logentry_tmp(logentry_tmp=logentry_tmp,
                                           logentry=logentry)
         self.assertEqual(
             printstring,
             (("{0:<20s} {1}\n{2:<20s} {3}\n"
               "{4:<20s} {5} min\n{6}\n{7}").format(
                   'Employee:', employee, 'Task:', logentry.task,
                   'Time spent:', 45, 'Note:', logentry.note)))
    def create_test_data(self):
        """ ... create a bunch of employees"""
        employees = [
            {'first_name': 'Kenneth',
             'last_name': 'Love'},
            {'first_name': 'Sabine',
             'last_name': 'Maennel'},
            {'first_name': 'Sabine',
             'last_name': 'Konecny'},
        ]

        task_set_m = [
            {'task': 'Cleaning',
             'time_spent': 15,
             'note': 'fun',
             'logdate': datetime.date(2016, 8, 29),
             },
            {'task': 'Baking',
             'time_spent': 23,
             'note': 'hard',
             'logdate': datetime.date(2015, 8, 29),
             },
            {'task': 'Cooking',
             'time_spent': 45,
             'note': 'my best dinner ever',
             'logdate': datetime.date(2016, 8, 30),
             },
        ]

        task_set_l = [
            {'task': 'Testing',
             'time_spent': 15,
             'note': 'hard stuff',
             'logdate': datetime.date(2016, 8, 29),
             },
            {'task': 'Programming Python',
             'time_spent': 30,
             'note': 'was fun',
             'logdate': datetime.date(2015, 9, 29),
             },
            {'task': 'Learning Javascript',
             'time_spent': 30,
             'note': 'difficult',
             'logdate': datetime.date(2016, 9, 29),
             },
        ]

        task_set_k = [
            {'task': 'Gardening',
             'time_spent': 15,
             'note': 'the rain is helping',
             'logdate': datetime.date(2016, 8, 30),
             },
            {'task': 'Building a chincilla cage',
             'time_spent': 200,
             'note': 'need more wood',
             'logdate': datetime.date(2015, 8, 29),
             },

            {'task': 'Jogging',
             'time_spent': 15,
             'note': 'my usual round',
             'logdate': datetime.date(2016, 8, 29),
             },
        ]

        task_sets = {'Maennel': task_set_m, 'Konecny': task_set_k, 'Love': task_set_l}

        self.employee_list = []
        self.task_list = []

        for employee_record in employees:
            employee, created = Employee.get_or_create(
                first_name=employee_record['first_name'],
                last_name=employee_record['last_name']
            )
            self.employee_list.append(employee)
            for task in task_sets[employee.last_name]:
                logentry, created = LogEntry.get_or_create(
                    task=task['task'],
                    time_spent=task['time_spent'],
                    note=task['note'],
                    employee=employee.id,
                    logdate=task['logdate']
                )
                self.task_list.append(logentry)