Ejemplo n.º 1
0
 def test_with_factory(self):
     serializer = DateRangeSerializer()
     data = DateRangeFactory.create()
     date_range, errors = serializer.load(data)
     assert date_range[0].utcoffset() == tz_now().utcoffset()
     assert date_range[1].utcoffset() == tz_now().utcoffset()
     delta = date_range[1] - date_range[0]
     assert delta.total_seconds() == 3600 * 24 * 7 - 0.000001
Ejemplo n.º 2
0
    def test_get(self):
        week_beg = week_beginning(tz_now())
        date_range = DateRangeFactory(beg=week_beg.isoformat())
        client = ClientFactory.create()

        time_entries = []
        for day in range(7):
            time_entries.append(
                TimeEntryFactory.create(task__project__client=client,
                                        added_at=week_beg +
                                        datetime.timedelta(days=day)))
        task = TaskFactory.create(project__client=client)
        for day in range(7):
            time_entries.append(
                TimeEntryFactory.create(
                    task=task,
                    duration=datetime.timedelta(minutes=30),
                    added_at=week_beg + datetime.timedelta(days=day)))

        self.db.session.commit()

        timesheet = TimeSheet(client.id, date_range)
        result = timesheet.get()

        assert result['client']['name'] == client.name
        assert result['date_range']['beg'] == week_beg.isoformat()
        assert len(result['projects']) == 8

        total_1 = sum((item.duration for item in time_entries),
                      datetime.timedelta()).total_seconds()
        total_2 = sum(project['total'] for project in result['projects'])
        total_3 = sum(result['totals']['time'])
        total_4 = result['totals']['total']
        assert total_1 == total_2 == total_3 == total_4
Ejemplo n.º 3
0
 def test_localize(self):
     dt = datetime.datetime(2016,
                            4,
                            11,
                            12,
                            12,
                            0,
                            tzinfo=datetime.timezone.utc)
     dt_loc = date.localize(dt)
     assert dt_loc.utcoffset() == date.tz_now().utcoffset()
Ejemplo n.º 4
0
 def test_serialization(self):
     week_beg = week_beginning(tz_now())
     week_end = arrow.get(week_beg).ceil('week').datetime
     date_range = {
         'beg': week_beg,
         'end': week_end,
     }
     serializer = DateRangeSerializer(strict=True)
     data = serializer.dump(date_range).data
     date_range = serializer.load(data).data
     assert date_range == (week_beg, week_end)
Ejemplo n.º 5
0
    def test_serialization(self):
        user = User()
        week_beg = week_beginning(tz_now())
        client = ClientFactory.create()

        time_entries = []
        for day in range(7):
            time_entries.append(TimeEntryFactory.create(
                task__project__client=client,
                added_at=week_beg + datetime.timedelta(days=day)))
        self.db.session.commit()

        result = user.serialize()
        assert result['name'] == settings.USER_NAME
        assert result['open_tasks'] == 7
        total_week = sum((item.duration for item in time_entries),
                         datetime.timedelta()).total_seconds()
        assert result['total_week'] == total_week
        assert any(item.duration.total_seconds() == result['total_today']
                   for item in time_entries)
Ejemplo n.º 6
0
    def test_get_report(self):
        week_beg = week_beginning(tz_now())
        date_range = DateRangeFactory.create(beg=week_beg.isoformat())
        client = ClientFactory.create()
        time_entry = TimeEntryFactory.create(task__project__client=client,
                                             added_at=week_beg)
        self.db.session.commit()

        url = url_for('client_api.report', client_id=client.id)
        response = self.client.get(url, query_string=date_range)
        assert response.status_code == 200
        assert 'report' in response.json
        report = response.json['report']
        assert report['client']['id'] == client.id
        assert len(report['projects']) == 1
        assert report['total'] == time_entry.duration.total_seconds()

        url = url_for('client_api.report', client_id=0)
        response = self.client.get(url)
        assert response.status_code == 404
Ejemplo n.º 7
0
 def beg(self):
     return week_beginning(tz_now()).isoformat()
Ejemplo n.º 8
0
 def test_localize(self):
     dt = datetime.datetime(2016, 4, 11, 12, 12, 0,
                            tzinfo=datetime.timezone.utc)
     dt_loc = date.localize(dt)
     assert dt_loc.utcoffset() == date.tz_now().utcoffset()
Ejemplo n.º 9
0
 def test_tz_now(self):
     now = date.tz_now()
     assert now.tzinfo is not None
Ejemplo n.º 10
0
 def make_time_entry(self, data):
     if 'id' not in data:
         data['added_at'] = tz_now()
     return TimeEntry(**data)
Ejemplo n.º 11
0
Archivo: user.py Proyecto: xuhcc/airy
 def total_week(self):
     week_beg = arrow.get(tz_now()).floor('week').datetime
     week_end = arrow.get(week_beg).ceil('week').datetime
     query = db.session.query(func.sum(TimeEntry.duration)).\
         filter(between(TimeEntry.added_at, week_beg, week_end))
     return query.scalar()
Ejemplo n.º 12
0
 def total_week(self):
     week_beg = arrow.get(tz_now()).floor('week').datetime
     week_end = arrow.get(week_beg).ceil('week').datetime
     query = db.session.query(func.sum(TimeEntry.duration)).\
         filter(between(TimeEntry.added_at, week_beg, week_end))
     return query.scalar()
Ejemplo n.º 13
0
 def make_task(self, data):
     if 'id' not in data:
         data['created_at'] = tz_now()
     data['updated_at'] = tz_now()
     return Task(**data)
Ejemplo n.º 14
0
 def total_today(self):
     day_beg = arrow.get(tz_now()).floor('day').datetime
     day_end = arrow.get(day_beg).ceil('day').datetime
     query = db.session.query(func.sum(TimeEntry.duration)).\
         filter(between(TimeEntry.added_at, day_beg, day_end))
     return query.scalar()
Ejemplo n.º 15
0
Archivo: user.py Proyecto: xuhcc/airy
 def total_today(self):
     day_beg = arrow.get(tz_now()).floor('day').datetime
     day_end = arrow.get(day_beg).ceil('day').datetime
     query = db.session.query(func.sum(TimeEntry.duration)).\
         filter(between(TimeEntry.added_at, day_beg, day_end))
     return query.scalar()
Ejemplo n.º 16
0
 def make_time_entry(self, data):
     if 'id' not in data:
         data['added_at'] = tz_now()
     return TimeEntry(**data)
Ejemplo n.º 17
0
 def make_task(self, data):
     if 'id' not in data:
         data['created_at'] = tz_now()
     data['updated_at'] = tz_now()
     return Task(**data)
Ejemplo n.º 18
0
 def test_tz_now(self):
     now = date.tz_now()
     assert now.tzinfo is not None