def add_sample(body): sample = Sample(barcode=body['barcode'], student_id=body['student_id'], computing_id=body['computing_id'], date=body['date']) # Split the 4 digit location code into station and location loc_code = body['location'] sample.location, sample.station = int(loc_code[:2]), int(loc_code[2:]) SampleService().add_or_update_records([sample])
def test_get_all_samples_by_last_modified(self): d1_str = '202012300101' # dec 30th 2020 d1 = datetime.strptime(d1_str, '%Y%m%d%H%M') s1_bar_code = '000000111-'+ d1_str +'-4321' d2_str = '202101010101' # Jan 1st 2021 d2 = datetime.strptime(d2_str, '%Y%m%d%H%M') s2_bar_code = '000000111-'+ d2_str +'-4321' s1 = Sample(barcode=s1_bar_code, location="4321", date= datetime.now(), last_modified=d1, student_id="000000111", email="*****@*****.**", result_code="12345", ivy_file="xxx", email_notified=True, text_notified=True) s2 = Sample(barcode=s2_bar_code, location="4321", date= datetime.now(), last_modified=d2, student_id="000000112", email="*****@*****.**", result_code="12345", ivy_file="yyy", email_notified=False, text_notified=False) db.session.add(s1) db.session.add(s2) rv = self.app.get(f'/v1.0/sample', content_type="application/json", headers={'X-CR-API-KEY': app.config.get('API_TOKEN')}) data = json.loads(rv.get_data(as_text=True)) self.assertEqual(2, len(data)) last_modified_arg = d1.isoformat() rv = self.app.get(f'/v1.0/sample?last_modified={last_modified_arg}', content_type="application/json", headers={'X-CR-API-KEY': app.config.get('API_TOKEN')}) data = json.loads(rv.get_data(as_text=True)) self.assertEqual(1, len(data)) self.assertEqual(s2.barcode, data[0]['barcode']) last_modified_arg = d2.isoformat() rv = self.app.get(f'/v1.0/sample?last_modified={last_modified_arg}', content_type="application/json", headers={'X-CR-API-KEY': app.config.get('API_TOKEN')}) data = json.loads(rv.get_data(as_text=True)) self.assertEqual(0, len(data))
def test_send_notification(self): message_count = len(TEST_MESSAGES) sample = Sample(email="*****@*****.**", result_code="1234") with NotificationService(app) as notifier: notifier.send_result_email(sample) self.assertEqual(len(TEST_MESSAGES), message_count + 1) self.assertEqual("UVA: BE SAFE Notification", self.decode(TEST_MESSAGES[-1]['subject']))
def test_send_sms_notification_with_no_email(self): message_count = len(TEST_MESSAGES) sample = Sample(phone="540-457-0024", result_code="1234") with NotificationService(app) as notifier: notifier.send_result_sms(sample) self.assertEqual(len(TEST_MESSAGES), message_count + 1) self.assertEqual( "Dear Student, You have an important notification from UVA, " "please visit: https://besafe.virginia.edu/result-demo?code=1234. " "Reply 'STOP' to opt-out.", TEST_MESSAGES[-1])
def test_get_all_samples(self): s1 = Sample(barcode="000000111-202009091449-4321", location="4321", date= datetime.now(), student_id="000000111", email="*****@*****.**", result_code="12345", ivy_file="xxx", email_notified=True, text_notified=True) s2 = Sample(barcode="000000112-202009091449-4321", location="4321", date= datetime.now(), student_id="000000112", email="*****@*****.**", result_code="12345", ivy_file="yyy", email_notified=False, text_notified=False) db.session.add(s1) db.session.add(Notification(sample=s1, date="2020-12-09T14:49:00+0000", type="email", successful=True)) db.session.add(Notification(sample=s1, date="2020-12-09T14:49:00+0000", type="text", successful=True)) db.session.add(s2) rv = self.app.get('/v1.0/sample', content_type="application/json", headers={'X-CR-API-KEY': app.config.get('API_TOKEN')}) data = json.loads(rv.get_data(as_text=True)) self.assertEqual(2, len(data)) self.assertEqual("000000111-202009091449-4321", data[0]["barcode"]) self.assertEqual(2, len(data[0]["notifications"])) self.assertEqual(True, data[0]['email_notified']) self.assertEqual(True, data[0]["notifications"][0]["successful"]) self.assertEqual(0, len(data[1]["notifications"])) self.assertEqual(False, data[1]['email_notified']) print(data)
def test_notify_by_email_by_file_name(self): db.session.add(Sample(barcode="000000111-202009091449-4321", location="4321", date="2020-09-09T14:49:00+0000", student_id="000000111", email="*****@*****.**", result_code="12345", ivy_file="xxx")) db.session.add(Sample(barcode="000000112-202009091449-4321", location="4321", date="2020-09-09T14:49:00+0000", student_id="000000112", email="*****@*****.**", result_code="12345", ivy_file="yyy")) db.session.commit() admin._notify_by_email('xxx') samples = db.session.query(Sample).filter(Sample.email_notified == True).all() self.assertEqual(1, len(samples)) samples = db.session.query(Sample).filter(Sample.email_notified != True).all() self.assertEqual(1, len(samples)) admin._notify_by_email() samples = db.session.query(Sample).filter(Sample.email_notified == True).all() self.assertEqual(2, len(samples))
def test_populate_db(self): samples = db.session.query(Sample).all() self.assertEqual(0, len(samples)) days = 7 * 5 for day in daterange(date.today() - timedelta(days), date.today()): day_string = day.strftime("%d-%m-%y") bar_code = '000000111-' + day_string + '-5030' _sample = Sample(barcode=bar_code, location= 50, station= 20, date=day, created_on=day, last_modified=datetime.datetime.now(), # Note Modified date is later than created date. student_id="000000111", email="*****@*****.**", result_code="12345", ivy_file="xxx", email_notified=True, text_notified=True) db.session.add(_sample) db.session.commit() samples = db.session.query(Sample).all() self.assertNotEqual(0, len(samples))