def test_block_1_payments_day_8(self): ''' test that block 2 payments are calculated correctly ''' logger = logging.getLogger(__name__) session = self.session session.start_date = todaysDate() - timedelta(days=7) session.calcEndDate() session = Session.objects.get(id=session.id) r = json.loads(startSession({}, session.id).content.decode("UTF-8")) self.assertEqual(r['status'], "success") session = Session.objects.get(id=session.id) start_sleep = 0.2 start_heart = 0.1 for session_subject in self.session.session_subjects.all(): for activity in session_subject.Session_day_subject_actvities.all( ).order_by('session_day__period_number'): activity.heart_activity = start_heart activity.immune_activity = start_sleep activity.paypal_today = True activity.save() start_heart += 0.01 start_sleep += 0.01 start_sleep = 0.2 start_heart = 0.1 for session_subject in self.session.session_subjects.all(): for activity in session_subject.Session_day_subject_actvities.all( ).order_by('session_day__period_number'): logger.info( f"period {activity.session_day.period_number}, subject {activity.session_subject.id}, heart score {activity.heart_activity}, sleep score {activity.immune_activity}, pay pal today {activity.paypal_today}" ) results = do_calc_a_b_c_treatments() #logger.info(results) for result in results["A B C Lumpsum Calculations"]: for payment in result['payments']: self.assertEqual( payment['payment'], round_half_away_from_zero(3 * (3 + 8 * .15 + 8 * .25), 2)) #check for none payment everywhere else #check for correct payment on last block for session_subject in self.session.session_subjects.all(): activity = session_subject.Session_day_subject_actvities.get( session_day__period_number=7) self.assertEqual( float(activity.payment_today), round_half_away_from_zero(3 * (3 + 8 * .15 + 8 * .25), 2))
def test_block_1_payments_day_5_missed_day(self): ''' test that block 1 payments are calculated correctly ''' logger = logging.getLogger(__name__) session = self.session session.start_date = todaysDate() - timedelta(days=4) logger.info( f'test_block_1_payments_day_5 start date {session.start_date}') session.calcEndDate() session = Session.objects.get(id=session.id) r = json.loads(startSession({}, session.id).content.decode("UTF-8")) self.assertEqual(r['status'], "success") session = Session.objects.get(id=session.id) start_sleep = 0.2 start_heart = 0.1 for session_subject in self.session.session_subjects.all(): for activity in session_subject.Session_day_subject_actvities.all( ).order_by('session_day__period_number'): activity.heart_activity = start_heart activity.immune_activity = start_sleep start_heart += 0.01 start_sleep += 0.01 activity.paypal_today = True activity.save() for session_subject in self.session.session_subjects.all(): activity = session_subject.Session_day_subject_actvities.get( session_day__period_number=2) activity.paypal_today = False activity.save() results = do_calc_a_b_c_treatments() for result in results["A B C Lumpsum Calculations"]: for payment in result['payments']: self.assertEqual(payment['payment'], 9) #check for correct payment on last block for session_subject in self.session.session_subjects.all(): activity = session_subject.Session_day_subject_actvities.get( session_day__period_number=4) self.assertEqual(activity.payment_today, 9) #check for none payment everywhere else for session_subject in self.session.session_subjects.all(): for activity in session_subject.Session_day_subject_actvities.exclude( session_day__period_number=4): self.assertEqual(activity.payment_today, 0)
def setUp(self): logger = logging.getLogger(__name__) createSession({}) #set sessoin start to tomorrow session = Session.objects.first() start_date = todaysDate() session.parameterset.block_1_day_count = 3 session.parameterset.block_2_day_count = 3 session.parameterset.block_3_day_count = 5 session.parameterset.save() session.calcEndDate() session = Session.objects.get(id = session.id) data = {'action': 'updateSession', 'formData': [{'name': 'title', 'value': '*** New Session ***'}, {'name': 'start_date', 'value': start_date.date().strftime("%m/%d/%Y")}, {'name': 'treatment', 'value': 'A'}, {'name': 'consent_required', 'value': '1'}, {'name': 'questionnaire1_required', 'value': '1'}, {'name': 'questionnaire2_required', 'value': '1'},{'name': 'instruction_set', 'value': '1'},{'name':'auto_pay','value':'1'}]} r = json.loads(updateSession(data,session.id).content.decode("UTF-8")) self.assertEqual(r['status'],"success") session = Session.objects.first() logger.info(f"Session start date {session.start_date} end date {session.end_date}") addSubject({},session.id) addSubject({},session.id) addSubject({},session.id) addSubject({},session.id) addSubject({},session.id) addSubject({},session.id) r = json.loads(startSession({},session.id).content.decode("UTF-8")) self.assertEqual(r['status'],"success") session = Session.objects.first() self.session = session Session_day_subject_actvity.objects.filter(session_day__session = session).update(fitbit_on_wrist_minutes = session.parameterset.minimum_wrist_minutes) #store synced today for subject in session.session_subjects.all(): subject.fitBitLastSynced = todaysDate() subject.save()
def test_block_1_payments_day_1(self): ''' test that block 1 payments are calculated correctly ''' #logger = logging.getLogger(__name__) session = self.session r = json.loads(startSession({}, session.id).content.decode("UTF-8")) self.assertEqual(r['status'], "success") session = Session.objects.get(id=session.id) start_sleep = 0.2 start_heart = 0.1 for session_subject in self.session.session_subjects.all(): for activity in session_subject.Session_day_subject_actvities.all( ).order_by('session_day__period_number'): activity.heart_activity = start_heart activity.immune_activity = start_sleep start_heart += 0.01 start_sleep += 0.01 activity.paypal_today = True activity.save() results = do_calc_a_b_c_treatments() for result in results["A B C Lumpsum Calculations"]: self.assertEqual(result['payments'], []) #check for none payment everywhere else for session_subject in self.session.session_subjects.all(): for activity in session_subject.Session_day_subject_actvities.all( ): self.assertEqual(activity.payment_today, 0)
def test_c_payments_8_missed_day(self): ''' test treatment c payments ''' logger = logging.getLogger(__name__) session = self.session start_date = todaysDate() - timedelta(days=7) data = { 'action': 'updateSession', 'formData': [{ 'name': 'title', 'value': '*** New Session ***' }, { 'name': 'start_date', 'value': start_date.date().strftime("%m/%d/%Y") }, { 'name': 'treatment', 'value': 'C' }, { 'name': 'consent_required', 'value': '1' }, { 'name': 'questionnaire1_required', 'value': '1' }, { 'name': 'questionnaire2_required', 'value': '1' }, { 'name': 'instruction_set', 'value': '1' }, { 'name': 'auto_pay', 'value': '1' }] } r = json.loads(updateSession(data, session.id).content.decode("UTF-8")) self.assertEqual(r['status'], "success") r = json.loads(startSession({}, session.id).content.decode("UTF-8")) self.assertEqual(r['status'], "success") session = Session.objects.get(id=session.id) session.parameterset.block_2_fixed_pay_per_day = 0 session.parameterset.save() start_sleep = 0.2 start_heart = 0.1 for session_subject in self.session.session_subjects.all(): for activity in session_subject.Session_day_subject_actvities.all( ).order_by('session_day__period_number'): activity.heart_activity = start_heart activity.immune_activity = start_sleep activity.paypal_today = True activity.save() start_heart += 0.01 start_sleep += 0.01 start_sleep = 0.2 start_heart = 0.1 for session_subject in self.session.session_subjects.all(): activity = session_subject.Session_day_subject_actvities.get( session_day__period_number=5) activity.paypal_today = False activity.save() for session_subject in self.session.session_subjects.all(): for activity in session_subject.Session_day_subject_actvities.all( ).order_by('session_day__period_number'): logger.info( f"period {activity.session_day.period_number}, subject {activity.session_subject.id}, heart score {activity.heart_activity}, sleep score {activity.immune_activity}, pay pal today {activity.paypal_today}" ) results = do_calc_a_b_c_treatments() #logger.info(results) for result in results["A B C Lumpsum Calculations"]: for payment in result['payments']: self.assertEqual( payment['payment'], round_half_away_from_zero(2 * (1.5 * .16 + 2 * .26), 2)) #check for none payment everywhere else #check for correct payment on last block for session_subject in self.session.session_subjects.all(): activity = session_subject.Session_day_subject_actvities.get( session_day__period_number=7) self.assertEqual( float(activity.payment_today), round_half_away_from_zero(2 * (1.5 * .16 + 2 * .26), 2)) #check for zeros for session_subject in self.session.session_subjects.all(): for activity in session_subject.Session_day_subject_actvities.exclude( session_day__period_number=7): self.assertEqual(activity.payment_today, 0)
def setUp(self): logger = logging.getLogger(__name__) createSession({}) #set sessoin start to tomorrow self.session = Session.objects.first() start_date = todaysDate() - timedelta(days=1) data = { 'action': 'updateSession', 'formData': [{ 'name': 'title', 'value': '*** New Session ***' }, { 'name': 'start_date', 'value': start_date.date().strftime("%m/%d/%Y") }, { 'name': 'treatment', 'value': 'I' }, { 'name': 'consent_required', 'value': '1' }, { 'name': 'questionnaire1_required', 'value': '1' }, { 'name': 'questionnaire2_required', 'value': '1' }, { 'name': 'instruction_set', 'value': '2' }, { 'name': 'auto_pay', 'value': '1' }] } result = json.loads( updateSession(data, self.session.id).content.decode("UTF-8")) self.assertEqual(result['status'], "success") addSubject({}, self.session.id) addSubject({}, self.session.id) self.session = Session.objects.get(id=self.session.id) self.session.parameterset.block_1_fixed_pay_per_day = 3 self.session.parameterset.block_2_fixed_pay_per_day = 4 self.session.parameterset.block_3_fixed_pay_per_day = 5 self.session.parameterset.save() r = json.loads( startSession({}, self.session.id).content.decode("UTF-8")) self.assertEqual(r['status'], "success") self.session = Session.objects.first() logger.info( f"Session start date {self.session.start_date} end date {self.session.end_date}" ) #store synced today for subject in self.session.session_subjects.all(): subject.fitBitLastSynced = todaysDate() subject.save()