Example #1
0
    def test_calc_stat_for_dates(self):
        """Test that stat is right between 2 dates"""
        create_runnings()

        start_date = create_date(2015, 9, 2)
        end_date = create_date(2015, 9, 3)

        stat = stat_service.calc_stat(
            StatLog.StatType.DATE,
            start_range=date_to_js_unix_time(start_date),
            end_range=date_to_js_unix_time(end_date))

        max_one_man_distance = RunnerDto(Profile.objects.get(pk=117963335), 1,
                                         16)
        max_one_man_training_count = RunnerDto(
            Profile.objects.get(pk=39752943), 2, 9)

        top_all_runners = [
            RunnerDto(Profile.objects.get(pk=117963335), 1, 16),
            RunnerDto(Profile.objects.get(pk=8429458), 1, 12),
            RunnerDto(Profile.objects.get(pk=39752943), 2, 9),
            RunnerDto(Profile.objects.get(pk=63399502), 1, 8),
            RunnerDto(Profile.objects.get(pk=10811344), 1, 6)
        ]

        top_interval_runners = [
            RunnerDto(Profile.objects.get(pk=117963335), 1, 16),
            RunnerDto(Profile.objects.get(pk=63399502), 1, 8),
            RunnerDto(Profile.objects.get(pk=10811344), 1, 6),
            RunnerDto(Profile.objects.get(pk=11351451), 1, 5),
            RunnerDto(Profile.objects.get(pk=39752943), 1, 5)
        ]

        self.assertIsNone(stat.start_distance)
        self.assertIsNone(stat.end_distance)
        self.assertEqual(stat.start_date, start_date)
        self.assertEqual(stat.end_date, create_date(2015, 9, 3, 23, 59, 59))
        self.assertEqual(stat.all_days_count, 3)
        self.assertEqual(stat.interval_days_count, 2)
        self.assertEqual(stat.all_distance, 77)
        self.assertEqual(stat.max_one_man_distance, max_one_man_distance)
        self.assertEqual(stat.all_training_count, 13)
        self.assertEqual(stat.max_one_man_training_count,
                         max_one_man_training_count)
        self.assertEqual(stat.all_runners_count, 12)
        self.assertEqual(stat.interval_runners_count, 11)
        self.assertEqual(len(stat.new_runners), 10)
        self.assertEqual(stat.new_runners_count, 10)
        self.assertEqual(stat.top_all_runners, top_all_runners)
        self.assertEqual(stat.top_interval_runners, top_interval_runners)
        self.assertEqual(stat.type, StatLog.StatType.DATE)
        self.assertAlmostEqual(stat.distance_per_day, 25.67, 2)
        self.assertAlmostEqual(stat.distance_per_training, 5.92, 2)
        self.assertAlmostEqual(stat.training_count_per_day, 4.33, 2)
Example #2
0
def update_stat():
    temp_data = TempData.objects.get()
    temp_data.last_sync_date = timezone.now()
    temp_data.save()
    ws_service.main_group_send(date_to_js_unix_time(temp_data.last_sync_date),
                               ObjectType.LAST_SYNC_DATE)
    ws_service.main_group_send(get_stat(), ObjectType.STAT)
Example #3
0
def get_data(user):
    serializer = FrontendDataSerializer({
        'user':
        user if user.is_authenticated else None,
        'stat':
        stat_service.get_stat(),
        'last_sync_date':
        date_to_js_unix_time(TempData.objects.get().last_sync_date),
        'config': {
            'project_version': settings.VERSION,
            'group_link': vk_api_service.get_group_url()
        }
    })

    data = {
        'debug': settings.DEBUG,
        'google_analytics_id': settings.GOOGLE_ANALYTICS_ID,
        'frontend_data': encode_json(serializer.data)
    }

    if settings.DEBUG:
        host = 'http://localhost:8080'
        data['js_files'] = [f'{host}/js/app.js', f'{host}/js/chunk-vendors.js']
        data['css_files'] = []
    else:
        data['js_files'] = _get_files('js', 'js')
        data['css_files'] = _get_files('css', 'css')

    return data
Example #4
0
 def test_calc_stat_without_params(self):
     """Test that test_calc_stat raises RuntimeError without params"""
     create_runnings()
     with self.assertRaises(RuntimeError):
         stat_service.calc_stat(None, None, None)
     """Test without start distance"""
     stat = stat_service.calc_stat(StatLog.StatType.DISTANCE, None, 100)
     self.assertEqual(stat.type, StatLog.StatType.DATE)
     self.assertIsNone(stat.start_distance)
     self.assertEqual(stat.end_distance, 100)
     self.assertEqual(stat.start_date, create_date(2015, 9, 1, 3, 56, 9))
     self.assertEqual(stat.end_date, create_date(2015, 9, 4, 3, 22, 14))
     """Test without end distance"""
     stat = stat_service.calc_stat(StatLog.StatType.DISTANCE, 16, None)
     self.assertEqual(stat.type, StatLog.StatType.DATE)
     self.assertEqual(stat.start_distance, 16)
     self.assertIsNone(stat.end_distance)
     self.assertEqual(stat.start_date, create_date(2015, 9, 2, 2, 56, 41))
     self.assertEqual(stat.end_date, create_date(2015, 9, 4, 7, 12, 15))
     """Test without start date"""
     start_date = None
     end_date = create_date(2015, 9, 3)
     end_range = date_to_js_unix_time(end_date)
     stat = stat_service.calc_stat(StatLog.StatType.DATE, start_date,
                                   end_range)
     self.assertEqual(stat.type, StatLog.StatType.DATE)
     self.assertIsNone(stat.start_distance)
     self.assertIsNone(stat.end_distance)
     self.assertEqual(stat.start_date, create_date(2015, 9, 1, 3, 56, 9))
     self.assertEqual(stat.end_date, create_date(2015, 9, 3, 23, 59, 59))
     """Test without end date"""
     start_date = create_date(2015, 9, 3, 4, 38, 2)
     end_date = None
     start_range = date_to_js_unix_time(start_date)
     stat = stat_service.calc_stat(StatLog.StatType.DATE, start_range,
                                   end_date)
     self.assertEqual(stat.type, StatLog.StatType.DATE)
     self.assertIsNone(stat.start_distance)
     self.assertIsNone(stat.end_distance)
     self.assertEqual(stat.start_date, start_date)
     self.assertEqual(stat.end_date, create_date(2015, 9, 4, 7, 12, 15))
Example #5
0
 def test_date_to_js_unix_time(self):
     date = datetime.utcfromtimestamp(0)
     res = util.date_to_js_unix_time(date)
     expected = int(date.timestamp() * 1000)
     self.assertEqual(res, expected)