def health(request): """User do a healthy activity or uses substitutes""" context = {} tz_offset = get_client_offset(request) # check if alternatives are in parameters to fill fields with actual alternatives displayed_alt = Alternative.objects.filter(user=request.user, display=True) update_dt_user_model_field(request.user, tz_offset) context['alternatives'] = displayed_alt if displayed_alt: form = HealthForm(request.user, tz_offset) if request.method == 'POST': form = HealthForm(request.user, tz_offset, request.POST) if form.is_valid(): new_health = HealthManager(request.user, form.cleaned_data, tz_offset) new_health.create_conso_alternative() return redirect('QuitSoonApp:today') context['form'] = form healthy = ConsoAlternative.objects.filter( user=request.user).order_by('-datetime_alter') context['health'] = healthy if healthy: last = healthy.latest('datetime_alter').datetime_alter context['lasthealth'] = get_delta_last_event(last) return render(request, 'QuitSoonApp/health.html', context)
def test_required_fields(self): form = HealthForm(self.usertest, {}) self.assertFalse(form.is_valid()) self.assertRaises(ValidationError) self.assertEqual( form.errors, { 'date_health': ['Ce champ est obligatoire.'], 'time_health': ['Ce champ est obligatoire.'], 'type_alternative_field': ['Ce champ est obligatoire.'], '__all__': ["Vous n'avez pas renseigné de durée pour cette activité"], })
def test_get_ecig_none(self): data = { 'date_health': datetime.date(2020, 5, 26), 'time_health': datetime.time(12, 56), 'type_alternative_field': 'Su', 'su_field': self.db_alternative_substitut_ecig.id, 'ecig_vape_or_start': [] } form = HealthForm(self.usertest, data) self.assertFalse(form.is_valid()) self.assertTrue("Vous avez sélectionné la cigarette électronique" in form.errors['__all__'][0])
def test_valid_data(self): data = { 'date_health': datetime.date(2020, 5, 26), 'time_health': datetime.time(12, 56), 'duration_hour': 1, 'duration_min': 30, 'type_alternative_field': 'So', 'sp_field': self.db_alternative_activity_sp.id, 'so_field': self.db_alternative_activity_so.id, 'su_field': self.db_alternative_substitut_p24.id, } form = HealthForm(self.usertest, data) self.assertTrue(form.is_valid())
def test_date_form_inf_today(self): """test HealthForm with valid date""" data = { 'date_health': datetime.date(2020, 5, 25), 'time_health': datetime.time(2, 56), 'duration_hour': 1, 'duration_min': 30, 'type_alternative_field': 'So', 'sp_field': self.db_alternative_activity_sp.id, 'so_field': self.db_alternative_activity_so.id, 'su_field': self.db_alternative_substitut_p24.id, } form = HealthForm(self.usertest, -120, data) self.assertTrue(form.is_valid())
def test_choices_sp_field(self): form = HealthForm(self.usertest) self.assertEqual(form.initial['sp_field'][0], self.db_alternative_activity_sp.id) self.assertEqual(len(form.fields['sp_field'].choices), 1) self.assertEqual(form.fields['sp_field'].choices[0][0], self.db_alternative_activity_sp.id)
def test_choices_lo_field(self): form = HealthForm(self.usertest) try: self.assertTrue(form.initial['lo_field']) except Exception: self.assertRaises(KeyError) self.assertEqual(len(form.fields['lo_field'].choices), 0)
def test_choices_lo_field(self): """test HealthForm choices 'loisir' field""" form = HealthForm(self.usertest, -120) try: self.assertTrue(form.initial['lo_field']) except KeyError: self.assertRaises(KeyError) self.assertEqual(len(form.fields['lo_field'].choices), 0)
def test_duration_0(self): data = { 'date_health': datetime.date(2020, 5, 26), 'time_health': datetime.time(12, 56), 'duration_hour': 0, 'duration_min': 0, 'type_alternative_field': 'So', 'sp_field': self.db_alternative_activity_sp.id, 'so_field': self.db_alternative_activity_so.id, 'su_field': self.db_alternative_substitut_p24.id, } form = HealthForm(self.usertest, data) self.assertFalse(form.is_valid()) self.assertRaises(ValidationError) self.assertEqual( form.errors, { '__all__': ["Vous n'avez pas renseigné de durée pour cette activité"], })
def test_last_alternative(self): form = HealthForm(self.usertest) self.assertEqual(form.last_alternative().type_activity, 'So') self.assertEqual(form.last_alternative('Su').substitut, 'P24') self.assertEqual(form.last_alternative('Ac', 'Sp').activity, 'COURSE') self.assertEqual(form.last_alternative('Ac', 'So').activity, 'MASSAGE') self.assertEqual(form.last_alternative('Ac', 'Lo'), None)
def test_date_form_gt_today(self): """test HealthForm with invalid date""" data = { 'date_health': datetime.date(2020, 5, 27), 'time_health': datetime.time(3, 56), 'duration_hour': 1, 'duration_min': 30, 'type_alternative_field': 'So', 'sp_field': self.db_alternative_activity_sp.id, 'so_field': self.db_alternative_activity_so.id, 'su_field': self.db_alternative_substitut_p24.id, } form = HealthForm(self.usertest, -120, data) self.assertRaises(ValidationError) self.assertEqual( form.errors, { '__all__': [ "Vous ne pouvez pas enregistrer d'action saine pour les jours à venir" ], })
def test_choices_first_health(self): ConsoAlternative.objects.all().delete() self.assertEqual(ConsoAlternative.objects.count(), 0) form = HealthForm(self.usertest) self.assertEqual(form.last_alternative().type_alternative, 'Su') self.assertEqual(form.last_alternative('Su').substitut, 'PAST') self.assertEqual(form.last_alternative('Ac', 'Sp').activity, 'COURSE') self.assertEqual(form.last_alternative('Ac', 'So').activity, 'MASSAGE') self.assertEqual(form.last_alternative('Ac', 'Lo'), None) self.assertEqual(form.initial['type_alternative_field'][0], 'Su') self.assertEqual(form.initial['sp_field'][0], self.db_alternative_activity_sp.id) self.assertEqual(form.initial['so_field'][0], self.db_alternative_activity_so2.id) self.assertEqual(form.initial['su_field'][0], self.db_alternative_substitut_past.id)
def test_choices_type_alternative(self): """test HealthForm choices alternatiev field""" form = HealthForm(self.usertest, -120) self.assertEqual(form.initial['type_alternative_field'][0], 'So') self.assertEqual(len(form.fields['type_alternative_field'].choices), 3)
def test_choices_su_field(self): """test HealthForm choices 'substitut' field""" form = HealthForm(self.usertest, -120) self.assertEqual(form.initial['su_field'][0], self.db_alternative_substitut_p24.id) self.assertEqual(len(form.fields['su_field'].choices), 2)
def test_choices_su_field(self): form = HealthForm(self.usertest) self.assertEqual(form.initial['su_field'][0], self.db_alternative_substitut_p24.id) self.assertEqual(len(form.fields['su_field'].choices), 3)
def test_choices_so_field(self): """test HealthForm choices 'soin' field""" form = HealthForm(self.usertest, -120) self.assertEqual(form.initial['so_field'][0], self.db_alternative_activity_so2.id) self.assertEqual(len(form.fields['so_field'].choices), 2)
def test_choices_type_alternative(self): form = HealthForm(self.usertest) self.assertEqual(form.initial['type_alternative_field'][0], 'So') self.assertEqual(len(form.fields['type_alternative_field'].choices), 3)