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)
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)
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
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))
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)