def test_when_update_time(self) -> None:
        not_working_activity = Activity('wm_class1',
                                        'window_name1',
                                        datetime(2020, 7, 21, 21, 30, 0, 3),
                                        is_work_time=False).set_end_time(
                                            datetime(2020, 7, 21, 22, 30, 0,
                                                     3))
        working_activity = Activity('wm_class1',
                                    'window_name1',
                                    datetime(2020, 7, 21, 22, 30, 0, 4),
                                    is_work_time=True).set_end_time(
                                        datetime(2020, 7, 21, 22, 35, 0, 5))

        sub_tests_data = {
            'Update off time stat when it was empty':
            (self.activity, not_working_activity, timedelta(0, 3600, 1),
             timedelta(0, 3600)),
            'Update work time stat when it was empty':
            (not_working_activity, working_activity, timedelta(0, 300, 1),
             timedelta(0, 3600)),
            'Update work time stat when it was not empty':
            (self.activity, working_activity, timedelta(0, 3900,
                                                        2), timedelta(0)),
        }

        for sub_test, (activity, same_activity_with_diff_time, work_time,
                       off_time) in sub_tests_data.items():
            with self.subTest(name=sub_test):
                activity_stat = ActivityStat.from_activity(activity)
                activity_stat.update(same_activity_with_diff_time)

                self.assertEqual(activity_stat.work_time, work_time)
                self.assertEqual(activity_stat.off_time, off_time)
Exemple #2
0
    def setUpClass(cls):
        cls.activities = ActivitiesStorage()
        cls.a = Activity('title', datetime.now() - timedelta(hours=1, minutes=15), datetime.now())
        cls.a2 = Activity('title2', datetime.now() - timedelta(minutes=4, seconds=23), datetime.now())

        cls.activities2 = ActivitiesStorage()
        cls.activities2.storage = [
            {
                'active_tab': 'title3',
                'active_sessions': [{'hours': 2, 'minutes': 20, 'seconds': 0}],
                'last_active_session': {'hours': 2, 'minutes': 20, 'seconds': 0},
                'total_time': timedelta(seconds=8400, microseconds=11)
            }
        ]
        cls.a3 = Activity('title3', datetime.now() - timedelta(minutes=12, seconds=45), datetime.now())
Exemple #3
0
 def get_activity(self, key):
     with dbapi2.connect(self.app.config['dsn']) as connection:
         cursor = connection.cursor()
         query = "SELECT TITLE, ACTIVITY_TYPE, FOUNDERID, PARTICIPANT_COUNT,  TIME, PLACE, ACTIVITY_INFO FROM ACTIVITY WHERE (ID = %s)"
         cursor.execute(query, (key,))
         title, activity_type, founder, participant_count, time, place, activity_info = cursor.fetchone()
     return Activity(title, activity_type, founder, participant_count, time, place, activity_info)
def getActivityInfo():
    activity_id = int(request.form.get("activity_id"))
    manager = DataManager(DataType.activity)
    activity_info = manager.getInfo(activity_id)
    if len(activity_info) == 0:
        return json.dumps({'status': 'Not Found'})

    activity = Activity(at_id=activity_id,
                        at_name=activity_info[0][1],
                        at_description=activity_info[0][2],
                        at_club_id=activity_info[0][3],
                        at_place=activity_info[0][4],
                        at_start_time=activity_info[0][5],
                        at_end_time=activity_info[0][6],
                        at_lottery_time=activity_info[0][7],
                        at_lottery_method=activity_info[0][8],
                        at_max_number=activity_info[0][9],
                        at_fee=activity_info[0][10],
                        at_sign_up_ddl=activity_info[0][11],
                        at_sponsor=activity_info[0][12],
                        at_undertaker=activity_info[0][13])

    res = activity.Jsonfy()

    return res
    def test_entity_activity_init_params(self):
        uuid = "ActivityUUID-321"
        start_datetime = datetime.datetime(year=2018,
                                           month=1,
                                           day=2,
                                           hour=1,
                                           minute=0,
                                           second=0)
        end_datetime = datetime.datetime(year=2018,
                                         month=1,
                                         day=2,
                                         hour=1,
                                         minute=0,
                                         second=2)
        obj = Activity(uuid=uuid,
                       start_datetime=start_datetime,
                       end_datetime=end_datetime)

        e_flag = False
        try:
            str_rep = obj.__str__()
            self.assertFalse(
                obj.in_daytime(),
                msg='activity not properly assigned to day or night time')
            self.assertEqual(
                obj.seconds,
                2,
                msg='seconds between start and end datetime calculated wrongly'
            )
        except Exception as e:
            print(e)
            e_flag = True
        self.assertFalse(e_flag, 'exception thrown')
    def _add_activity(self, activity_name, time_entry):
        """
        Add the activity with its time entry to the activity list.

        If activity was already present in the list, only update the duration
        and add the time entry. If activity was not present, add it.

        Parameters
        ----------
        activity_name: string
            The name of the activity to add
        time_entry: TimeEntry
            The time entry of the activity to add

        Returns
        -------
        bool: True
        """
        for activity in self.activities:
            if activity_name == activity.name:
                activity.duration += time_entry.delta
                activity.entries.append(time_entry)
                return True

        activity = Activity(name=activity_name,
                            duration=time_entry.delta,
                            entries=[time_entry])

        self.activities.append(activity)
        return True
Exemple #7
0
    def activity_stream_item(self, activity_type, revision, user_id):
        import ckan.model
        import ckan.lib.dictization
        import ckan.logic
        assert activity_type in ("new", "changed"), (str(activity_type))

        # Handle 'deleted' objects.
        # When the user marks a package as deleted this comes through here as
        # a 'changed' package activity. We detect this and change it to a
        # 'deleted' activity.
        if activity_type == 'changed' and self.state == u'deleted':
            if ckan.model.Session.query(ckan.model.Activity).filter_by(
                    object_id=self.id, activity_type='deleted').all():
                # A 'deleted' activity for this object has already been emitted
                # FIXME: What if the object was deleted and then activated
                # again?
                return None
            else:
                # Emit a 'deleted' activity for this object.
                activity_type = 'deleted'

        try:
            d = {
                'package':
                ckan.lib.dictization.table_dictize(
                    self, context={'model': ckan.model})
            }
            return Activity(user_id, self.id, revision.id,
                            "%s package" % activity_type, d)
        except ckan.logic.NotFound:
            # This happens if this package is being purged and therefore has no
            # current revision.
            # TODO: Purge all related activity stream items when a model object
            # is purged.
            return None
Exemple #8
0
 def updateTimer(self, event):
     self.processTimeActive += self.timerDelay / 1000
     windowName = win32gui.GetWindowText(win32gui.GetForegroundWindow())
     if self.processName == "ERROR-FINDING-PROCESS":
         try:
             self.pid = win32process.GetWindowThreadProcessId(
                 win32gui.GetForegroundWindow())[-1]
             self.processName = psutil.Process(self.pid).name()
         except:
             self.processName = "ERROR-FINDING-PROCESS"
     if self.lastWindowName != windowName:
         #OutputActivity(startTime, time.time(), lastWindowName, processName)
         activity = Activity(self.startTime, time.time(),
                             self.lastWindowName, self.processName,
                             self.filePath)
         activity.SaveToFile()
         self.startTime = time.time()
         try:
             self.pid = win32process.GetWindowThreadProcessId(
                 win32gui.GetForegroundWindow())[-1]
             self.processName = psutil.Process(self.pid).name()
         except:
             self.processName = "ERROR-FINDING-PROCESS"
         self.lastWindowName = windowName
         del activity
         self.processTimeActive = 0
     self.updateGUI()
Exemple #9
0
    def set_work_time_state(self, value: bool) -> None:
        if value == self.is_work_time:
            self.logger.debug(
                'Trying to change is_work_time to the same value')
            return

        self.is_work_time = value

        current_activity = Value.get_or_raise(self.current_activity,
                                              'current_activity')
        now = datetime.now()
        new_activity = Activity(current_activity.wm_class,
                                current_activity.window_name, now,
                                self.is_work_time)

        self.__on_activity_changed(current_activity, new_activity)

        self.is_work_time_update_time = now

        self.logger.debug(f'Set Work Time to [{self.is_work_time}]')

        icon = self.active_icon if self.is_work_time else self.disabled_icon
        self.tray_icon.set_icon_if_exist(icon)

        if self.is_work_time:
            self.last_lock_screen_time = now
            self.last_break_notification = None
            self.last_overtime_notification = None
    def test_when_tree_day_activity(self, mock_is_dir_res, mock_open_res) -> None:
        files_provider = FilesProvider(Path('/root_dir/'))
        self.assertEqual(4, mock_is_dir_res.call_count)

        writer = ActivityWriter(files_provider)

        handle_new_day_event = Mock()

        writer.event.on(ActivityWriter.NEW_DAY_EVENT, handle_new_day_event)

        three_days_activity = Activity('wm_class2',
                                       'window_name2',
                                       datetime(2020, 7, 31, 12, 5),
                                       is_work_time=True).set_end_time(datetime(2020, 8, 2, 11, 30))

        writer.write(three_days_activity)

        mock_open_res.assert_has_calls([
            call('/root_dir/dest/2020-07-31_speaking_eye_raw_data.tsv', 'a'),
            call().write('2020-07-31 12:05:00\t2020-07-31 23:59:59.999999\t'
                         '11:54:59.999999\twm_class2\twindow_name2\tTrue\n'),
            call().flush(),
            call().close(),
            call('/root_dir/dest/2020-08-01_speaking_eye_raw_data.tsv', 'a'),
            call().write('2020-08-01 00:00:00\t2020-08-01 23:59:59.999999\t'
                         '23:59:59.999999\twm_class2\twindow_name2\tTrue\n'),
            call().flush(),
            call().close(),
            call('/root_dir/dest/2020-08-02_speaking_eye_raw_data.tsv', 'a'),
            call().write('2020-08-02 00:00:00\t2020-08-02 11:30:00\t'
                         '11:30:00\twm_class2\twindow_name2\tTrue\n'),
            call().flush()
        ])

        self.assertEqual(2, handle_new_day_event.call_count)
    def test_when_activity_has_not_finished(self, mock_is_dir_res, mock_open_res) -> None:
        files_provider = FilesProvider(Path('/root_dir/'))
        self.assertEqual(4, mock_is_dir_res.call_count)

        writer = ActivityWriter(files_provider)

        not_finished_activity = Activity('wm_class1',
                                         'window_name1',
                                         datetime(2020, 7, 21, 20, 30, 0),
                                         is_work_time=True)

        handle_new_day_event = Mock()

        writer.event.on(ActivityWriter.NEW_DAY_EVENT, handle_new_day_event)

        with self.assertRaisesRegex(
                ValueError,
                expected_regex='Activity \\[2020-07-21 20:30:00\tNone\tNone\twm_class1\twindow_name1\tTrue\n\\] '
                               'should be finished!'):
            writer.write(not_finished_activity)

        mock_open_res.assert_not_called()

        mock_file = mock_open_res.return_value

        mock_file.write.assert_not_called()
        mock_file.flush.assert_not_called()
        mock_file.close.assert_not_called()
        handle_new_day_event.assert_not_called()
Exemple #12
0
def add_activity_to_bucketlist():
    ''' Add activity to named bucketlist '''
    user = None
    username = session['user']['username']

    if username in users.keys():
        user = users[username]

    current_bucketlist = request.args.get('name')

    if request.method == 'POST':
        title = request.form['title']
        description = request.form['description']

        activity = Activity(title, description)

        if current_bucketlist in user.bucketlists.keys():
            user.bucketlists[current_bucketlist].add_activity(activity)

        activities = user.bucketlists[current_bucketlist].activities

        return render_template('bucketlist.html',
                               name=current_bucketlist,
                               activities=activities)
    else:
        return render_template(
            'bucketlist.html',
            name=current_bucketlist,
            activities=user.bucketlists[current_bucketlist].activities)
Exemple #13
0
 def get_activities(self):
     with dbapi2.connect(self.app.config['dsn']) as connection:
         cursor = connection.cursor()
         query = "SELECT * FROM ACTIVITY ORDER BY ID"
         cursor.execute(query)
         activities = [(key, Activity(title, activity_type, founder, participant_count, time, place, activity_info))
                   for key, title, activity_type, founder, participant_count, time, place, activity_info in cursor]
     return activities
    def test_when_activities_are_equal(self):
        wm_class = 'wm_class'
        window_name = 'window_name'
        start_time = datetime(2020, 7, 12, 20, 30, 0)
        is_work_time = True

        left = Activity(wm_class, window_name, start_time, is_work_time)
        right = Activity(wm_class, window_name, start_time, is_work_time)

        self.assertEqual(left, right)

        end_time = datetime(2020, 7, 12, 21, 30, 0)

        left.set_end_time(end_time)
        right.set_end_time(end_time)

        self.assertEqual(left, right)
Exemple #15
0
    def __init__(self, db, models):
        """

        :type db: flask_sqlalchemy.SQLAlchemy
        :type models: models
        """
        self.db = db
        self.models = models
        self.activity = Activity(db=db, models=models, logger=logging)
Exemple #16
0
 def search_activity(self, key):
     with dbapi2.connect(self.app.config['dsn']) as connection:
         cursor = connection.cursor()
         query = "SELECT * FROM ACTIVITY WHERE (TITLE ILIKE %s OR ACTIVITY_TYPE ILIKE %s OR PLACE ILIKE %s OR ACTIVITY_INFO ILIKE %s)"
         key = '%'+key+'%'
         cursor.execute(query, (key, key, key, key))
         activities = [(key, Activity( title, activity_type, founder, participant_count, time, place, activity_info))
                   for key,  title, activity_type, founder, participant_count, time, place, activity_info in cursor]
     return activities
Exemple #17
0
    def test_activity(self):
        date = datetime.datetime(2019, 12, 10, 12, 10)
        activity = Activity('1', ['1234', '5678'], date.date(), date.time(),
                            'test')

        self.assertEqual(activity.uid, '1')
        self.assertEqual(activity.persons_uids, ['1234', '5678'])
        self.assertEqual(activity.date, date.date())
        self.assertEqual(activity.time, date.time())
        self.assertEqual(activity.description, 'test')
Exemple #18
0
    def test_add_activity_successfully_to_bucketlist(self):
        bucketlist = BucketList('Travels', 'Tour Africa')
        activity = Activity('Egypt', 'Visit the Pyramids')

        initial_no_of_activities = len(bucketlist.activities)

        bucketlist.add_activity(activity)

        self.assertEqual(
            len(bucketlist.activities) - initial_no_of_activities, 1)
Exemple #19
0
    def on_name_changed(self, window: Wnck.Window) -> None:
        now = datetime.now()

        current_activity = Value.get_or_raise(self.current_activity,
                                              'current_activity')
        window_name = get_window_name(window)

        new_activity = Activity(current_activity.wm_class, window_name, now,
                                current_activity.is_work_time)

        self.__on_activity_changed(current_activity, new_activity)
Exemple #20
0
    def get_all_activities(self):
        with dbapi2.connect(app.config['dsn']) as connection:
            cursor = connection.cursor()
            query = """SELECT ID, ACTIVATOR, STATUS, DATE FROM ACTIVITIES
                       ORDER BY ID DESC"""
            cursor.execute(query)
            table = [(id, Activity(activator, status, date))
                     for id, activator, status, date in cursor]

            connection.commit()
            cursor.close()
        return table
Exemple #21
0
    def test_convert_from_string_when_correct_activity_line(self):
        sub_tests_data = [(
            '2020-07-18 20:00:00.000001\t2020-07-18 20:30:00.000001\t0:30:00.000000\twm_class1\twindow_name1\tFalse\n',
            Activity('wm_class1',
                     'window_name1',
                     datetime(2020, 7, 18, 20, 0, 0, 1),
                     is_work_time=False).set_end_time(
                         datetime(2020, 7, 18, 20, 30, 0, 1)))]

        for i, (line, expected) in enumerate(sub_tests_data, 1):
            with self.subTest(name=f'Subtest №{i}'):
                self.assertEqual(expected, ActivityConverter.from_string(line))
    def test_when_activities_are_not_equal(self):
        wm_class = 'wm_class'
        window_name = 'window_name'
        start_time = datetime(2020, 7, 12, 20, 30, 0)
        end_time = datetime(2020, 7, 12, 21, 30, 0)
        is_work_time = True

        activity = Activity(wm_class, window_name, start_time, is_work_time).set_end_time(end_time)

        another_wm_class = 'another_wm_class'
        another_window_name = 'another_window_name'
        another_start_time = datetime(2020, 7, 12, 20, 50, 0)
        another_end_time = datetime(2020, 7, 12, 23, 30, 0)
        another_is_work_time = False

        sub_tests_data = {
            'Different wm classes':
                Activity(another_wm_class, window_name, start_time, is_work_time).set_end_time(end_time),
            'Different window names':
                Activity(wm_class, another_window_name, start_time, is_work_time).set_end_time(end_time),
            'Different start times':
                Activity(wm_class, window_name, another_start_time, is_work_time).set_end_time(end_time),
            'Different end times':
                Activity(wm_class, window_name, start_time, is_work_time).set_end_time(another_end_time),
            'Different "is_work_time" status':
                Activity(wm_class, window_name, start_time, another_is_work_time).set_end_time(end_time),
            'Different types':
                'I am not an Activity',
        }

        for sub_test, another_activity in sub_tests_data.items():
            with self.subTest(name=sub_test):
                self.assertNotEqual(activity, another_activity)
Exemple #23
0
    def _parse_activity(self, activity_child: ElementTree) -> Activity:
        activity_fields = self._parse_activity_fields(activity_child)

        return Activity(id=activity_fields.get('id'),
                        name=activity_fields.get('name'),
                        distribution=activity_fields.get('distribution', 0),
                        data_input=activity_fields.get('data_input'),
                        data_output=activity_fields.get('data_output'),
                        resources=activity_fields.get('resources'),
                        failure_rate=activity_fields.get('failure_rate', 0),
                        retries=activity_fields.get('retries', 0),
                        timeout=activity_fields.get('timeout'),
                        priority=activity_fields.get('priority', 'normal'))
Exemple #24
0
    def __init__(self, community):
        self.schedules = [[], [], [], [], []]
        self.community = community

        # Class in discovery hall, 1:15 - 3:15pm (start walking at 12:40)
        class1 = Activity(start_time=13 * 60 - 20,
                          end_time=15.25 * 60,
                          dest_institution_int=1)

        # Class in uwbb, 3:30 - 5:30 (start walking at 3:15)
        class2 = Activity(start_time=15.25 * 60,
                          end_time=17.5 * 60,
                          dest_institution_int=6)

        # Go to the parking area 1. (from 5:30pm to 11:59pm)
        going_home = Activity(start_time=17.5 * 60,
                              end_time=23 * 60 + 59,
                              dest_institution_int=11)

        self.schedules[0].append(class1)
        self.schedules[0].append(class2)
        self.schedules[0].append(going_home)
Exemple #25
0
    def build(self) -> Activity:
        if self.start_time is None:
            raise RuntimeError('start_time should be set!')

        if self.end_time is None:
            raise RuntimeError('end_time should be set!')

        activity = Activity(self.origin_activity.wm_class,
                            self.origin_activity.window_name, self.start_time,
                            self.origin_activity.is_work_time)

        activity.set_end_time(self.end_time)

        return activity
    def test_when_end_time_is_greater_than_start_time(self):
        start_time = datetime(2020, 7, 12, 20, 30, 0)
        end_time = datetime(2020, 7, 12, 21, 30, 0)
        expected_activity_time = timedelta(hours=1)

        self.assertGreater(end_time, start_time)

        activity = Activity('wm_class', 'window_name', start_time, is_work_time=True)

        activity.set_end_time(end_time)

        self.assertTrue(activity.has_finished())
        self.assertEqual(end_time, activity.end_time)
        self.assertEqual(expected_activity_time, activity.activity_time)
Exemple #27
0
    def test_split_by_day(self) -> None:
        one_day_activity = Activity('wm_class1',
                                    'window_name1',
                                    datetime(2020, 7, 21, 12, 5),
                                    is_work_time=True).set_end_time(
                                        datetime(2020, 7, 21, 21, 30))
        three_days_activity = Activity('wm_class2',
                                       'window_name2',
                                       datetime(2020, 7, 31, 12, 5),
                                       is_work_time=True).set_end_time(
                                           datetime(2020, 8, 2, 11, 30))
        expected_for_three_days_activity = [
            (date(2020, 7, 31),
             Activity('wm_class2',
                      'window_name2',
                      datetime(2020, 7, 31, 12, 5),
                      is_work_time=True).set_end_time(
                          datetime(2020, 7, 31, 23, 59, 59, 999_999))),
            (date(2020, 8, 1),
             Activity('wm_class2',
                      'window_name2',
                      datetime(2020, 8, 1),
                      is_work_time=True).set_end_time(
                          datetime(2020, 8, 1, 23, 59, 59, 999_999))),
            (date(2020, 8, 2),
             Activity('wm_class2',
                      'window_name2',
                      datetime(2020, 8, 2),
                      is_work_time=True).set_end_time(
                          datetime(2020, 8, 2, 11, 30))),
        ]

        for (activity, expected) in [
            (one_day_activity, [(date(2020, 7, 21), one_day_activity)]),
            (three_days_activity, expected_for_three_days_activity),
        ]:
            self.assertEqual(expected, ActivitySplitter.split_by_day(activity))
def activities_page():
    if request.method == 'GET':
        activities = app.store.get_activities()
        now = datetime.datetime.now()
        return render_template('activities.html',
                               activities=activities,
                               current_time=now.ctime())
    elif 'activities_to_delete' in request.form or 'search' in request.form:
        if request.form['submit'] == 'Delete':
            keys = request.form.getlist('activities_to_delete')
            for key in keys:
                app.store.delete_activity(int(key))
            return redirect(url_for('activities_page'))
        elif request.form['submit'] == 'Search':
            keyword = request.form['search']
            activities = app.store.search_activity(keyword)
            now = datetime.datetime.now()
            return render_template('activities.html',
                                   activities=activities,
                                   current_time=now.ctime())
    else:
        title = request.form['title']
        activity_type = request.form.get('activity_type')
        time = request.form['time']
        place = request.form['place']
        activity_info = request.form['activity_info']
        if 'username' in session:
            name = session['username']
            with dbapi2.connect(app.config['dsn']) as connection:
                cursor = connection.cursor()
                cursor.execute(
                    "SELECT memberid FROM MEMBERS WHERE username='******';" % name)
                founder = cursor.fetchone()[0]
                connection.commit()
            participant_count = 1
            activity = Activity(title, activity_type, founder,
                                participant_count, time, place, activity_info)
            app.store.add_activity(activity)
            with dbapi2.connect(app.config['dsn']) as connection:
                cursor = connection.cursor()
                query = (
                    "INSERT INTO ACTIVITY_MEMBERS (MEMBERID, ACTIVITYID ) VALUES (%s, %s)"
                )
                cursor.execute(query, (founder, app.store.activity_last_key))
                connection.commit()
            return redirect(
                url_for('activity_page', key=app.store.activity_last_key))
        else:
            return render_template('guest.html')
Exemple #29
0
def load_model():
    args = get_args()
    file_params = get_file_params()
    kwargs = {}
    if args.folder != None:
        assert os.path.exists(args.folder)
        prev, directory = make_subfolder(args.folder, args.comments)
        with open(os.path.join(prev, 'data.pkl'), 'rb') as f:
            network, _, data_rng = cPickle.load(f)
        kwargs['seed_or_rng'] = data_rng
        network.to_gpu()
        network.current_trial = 0
        parameters = final_parameters(file_params,
                                      cmd_line_args=args,
                                      network_params=network.parameters)
        for attr in [
                'dW_rule', 'function', 'time_data', 'norm_infer', 'OC1', 'OC2',
                'N', 'p', 'n_layers'
        ]:
            if getattr(network.parameters, attr) != getattr(parameters, attr):
                raise ValueError('Value of ' + attr + ' has changed.')
        network.parameters = parameters
    else:
        parameters = final_parameters(file_params, cmd_line_args=args)
        network = Network(parameters)
        directory = make_folder(parameters)
        prev, directory = make_subfolder(directory, args.comments)

    dump_parameters(directory, parameters)

    learn = Learning_Rule(network)
    monitor = Monitor(network)
    activity = Activity(network)
    if parameters.time_data and not (parameters.static_data_control):
        data = Time_Data(
            os.path.join(os.environ['DATA_PATH'],
                         'vanhateren/whitened_images.h5'),
            parameters.num_images, parameters.batch_size, parameters.N,
            parameters.num_frames, **kwargs)
    else:
        data = Static_Data(
            os.path.join(os.environ['DATA_PATH'],
                         'vanhateren/whitened_images.h5'),
            parameters.num_images, parameters.batch_size, parameters.N,
            **kwargs)

    plotter = Plot(directory)

    return activity, data, directory, learn, monitor, network, parameters, plotter
Exemple #30
0
    def test_convert_to_string(self):
        sub_tests_data = {
            'When is_work_time is [True]':
            (Activity('wm_class1',
                      'window_name1',
                      datetime(2020, 7, 12, 20, 30, 0, 1),
                      is_work_time=True).set_end_time(
                          datetime(2020, 7, 12, 21, 30, 0, 2)),
             '2020-07-12 20:30:00.000001\t2020-07-12 21:30:00.000002\t'
             '1:00:00.000001\twm_class1\twindow_name1\tTrue\n'),
            'When is_work_time is [False]':
            (Activity('wm_class2',
                      'window_name2',
                      datetime(2020, 7, 13, 20, 30, 0),
                      is_work_time=False).set_end_time(
                          datetime(2020, 7, 13, 21, 35, 0)),
             '2020-07-13 20:30:00\t2020-07-13 21:35:00\t1:05:00\twm_class2\twindow_name2\tFalse\n'
             )
        }

        for sub_test, (activity, expected) in sub_tests_data.items():
            with self.subTest(name=sub_test):
                self.assertEqual(expected,
                                 ActivityConverter.to_string(activity))