class ImporterXmlRpcClientTestCase(TestCase): fixtures = ['patients', 'clinics'] def setUp(self): self.importer = Importer() self.user = User.objects.get(username="******") # patching the client to automatically return our specified result # sets without doing an XML-RPC call patched_client = PatchedClient( patients_update=[{ 'dr_site_name': '', 'dr_site_id': '', 'age': '2%s' % i, 'sex': random.choice(['Male', 'Female']), 'celphone': '2712345678%s' % i, 'dr_status': '', 'te_id': patient.te_id, } for i, patient in enumerate(Patient.objects.all())], comingvisits=[{ 'dr_site_name': '', 'dr_site_id': '', 'dr_status': '', 'scheduled_visit_date': str(datetime.now() + timedelta(days=2)), 'key_id': '02-1234%s' % i, 'te_id': patient.te_id, } for i, patient in enumerate(Patient.objects.all())], missedvisits=[{ 'dr_site_name': '', 'dr_site_id': '', 'missed_date': str(datetime.now() - timedelta(days=2)), 'dr_status': '', 'key_id': '03-1234%s' % i, 'te_id': patient.te_id } for i, patient in enumerate(Patient.objects.all())], donevisits=[{ 'done_date': str(datetime.now() - timedelta(days=2)), 'dr_site_id': '', 'dr_status': '', 'dr_site_name': '', 'scheduled_date': str(datetime.now() - timedelta(days=2)), 'key_id': '04-1234%s' % i, 'te_id': patient.te_id } for i, patient in enumerate(Patient.objects.all())], deletedvisits=[{ 'key_id': '02-1234%s' % i, 'dr_status': '', 'dr_site_id': '', 'te_id': patient.te_id, 'dr_site_name': '' } for i, patient in enumerate(Patient.objects.all())] ) # monkey patching self.importer.client.rpc_call = patched_client.rpc_call self.clinic = Clinic.objects.all()[0] # make sure we have a clinic self.assertTrue(Patient.objects.count()) # make sure our fixtures aren't empty def tearDown(self): pass def test_import_updated_patients(self): """The xmlrpc client is largely some boilterplate code and some little helpers that transform the returned Dict into class instances. We're testing that functionality here. Since all the stuff uses the same boiler plate code we're only testing it for one method call. """ updated_patients = self.importer.import_updated_patients( user=self.user, clinic=self.clinic, since=(datetime.now() - timedelta(days=1)), until=datetime.now() ) updated_patients = list(updated_patients) self.assertTrue(len(updated_patients), Patient.objects.count()) self.assertTrue(isinstance(updated_patients[0], Patient)) def test_import_coming_visits(self): coming_visits = self.importer.import_coming_visits( user=self.user, clinic=self.clinic, since=(datetime.now() - timedelta(days=1)), until=datetime.now() ) coming_visits = list(coming_visits) self.assertEquals(len(coming_visits), Patient.objects.count()) self.assertTrue(isinstance(coming_visits[0], Visit)) def test_missed_visits(self): missed_visits = self.importer.import_missed_visits( user=self.user, clinic=self.clinic, since=(datetime.now() - timedelta(days=1)), until=datetime.now() ) missed_visits = list(missed_visits) self.assertEquals(len(missed_visits), Patient.objects.count()) self.assertTrue(isinstance(missed_visits[0], Visit)) def test_done_visits(self): done_visits = self.importer.import_done_visits( user=self.user, clinic=self.clinic, since=(datetime.now() - timedelta(days=1)), until=datetime.now() ) done_visits = list(done_visits) self.assertEquals(len(done_visits), Patient.objects.count()) self.assertTrue(isinstance(done_visits[0], Visit)) def test_deleted_visits(self): # first have some coming visits coming_visits = list(self.importer.import_coming_visits( user=self.user, clinic=self.clinic, since=(datetime.now() - timedelta(days=1)), until=datetime.now() )) # then mark them as deleted, they're matched because they # have the same key_id deleted_visits = list(self.importer.import_deleted_visits( user=self.user, clinic=self.clinic, since=(datetime.now() - timedelta(days=1)), until=datetime.now() )) self.assertEquals(len(deleted_visits), Patient.objects.count()) self.assertTrue(isinstance(deleted_visits[0], Visit))
class ImporterXmlRpcClientTestCase(TestCase): fixtures = ['patients', 'clinics'] def setUp(self): self.importer = Importer() self.user = User.objects.get(username="******") # patching the client to automatically return our specified result # sets without doing an XML-RPC call patched_client = PatchedClient( patients_update=[{ 'dr_site_name': '', 'dr_site_id': '', 'age': '2%s' % i, 'sex': random.choice(['Male', 'Female']), 'celphone': '2712345678%s' % i, 'dr_status': '', 'te_id': patient.te_id, } for i, patient in enumerate(Patient.objects.all())], comingvisits=[{ 'dr_site_name': '', 'dr_site_id': '', 'dr_status': '', 'scheduled_visit_date': str(datetime.now() + timedelta(days=2)), 'key_id': '02-1234%s' % i, 'te_id': patient.te_id, } for i, patient in enumerate(Patient.objects.all())], missedvisits=[{ 'dr_site_name': '', 'dr_site_id': '', 'missed_date': str(datetime.now() - timedelta(days=2)), 'dr_status': '', 'key_id': '03-1234%s' % i, 'te_id': patient.te_id } for i, patient in enumerate(Patient.objects.all())], donevisits=[{ 'done_date': str(datetime.now() - timedelta(days=2)), 'dr_site_id': '', 'dr_status': '', 'dr_site_name': '', 'scheduled_date': str(datetime.now() - timedelta(days=2)), 'key_id': '04-1234%s' % i, 'te_id': patient.te_id } for i, patient in enumerate(Patient.objects.all())], deletedvisits=[{ 'key_id': '02-1234%s' % i, 'dr_status': '', 'dr_site_id': '', 'te_id': patient.te_id, 'dr_site_name': '' } for i, patient in enumerate(Patient.objects.all())]) # monkey patching self.importer.client.rpc_call = patched_client.rpc_call self.clinic = Clinic.objects.all()[0] # make sure we have a clinic self.assertTrue( Patient.objects.count()) # make sure our fixtures aren't empty def tearDown(self): pass def test_import_updated_patients(self): """The xmlrpc client is largely some boilterplate code and some little helpers that transform the returned Dict into class instances. We're testing that functionality here. Since all the stuff uses the same boiler plate code we're only testing it for one method call. """ updated_patients = self.importer.import_updated_patients( user=self.user, clinic=self.clinic, since=(datetime.now() - timedelta(days=1)), until=datetime.now()) updated_patients = list(updated_patients) self.assertTrue(len(updated_patients), Patient.objects.count()) self.assertTrue(isinstance(updated_patients[0], Patient)) def test_import_coming_visits(self): coming_visits = self.importer.import_coming_visits( user=self.user, clinic=self.clinic, since=(datetime.now() - timedelta(days=1)), until=datetime.now()) coming_visits = list(coming_visits) self.assertEquals(len(coming_visits), Patient.objects.count()) self.assertTrue(isinstance(coming_visits[0], Visit)) def test_missed_visits(self): missed_visits = self.importer.import_missed_visits( user=self.user, clinic=self.clinic, since=(datetime.now() - timedelta(days=1)), until=datetime.now()) missed_visits = list(missed_visits) self.assertEquals(len(missed_visits), Patient.objects.count()) self.assertTrue(isinstance(missed_visits[0], Visit)) def test_done_visits(self): done_visits = self.importer.import_done_visits( user=self.user, clinic=self.clinic, since=(datetime.now() - timedelta(days=1)), until=datetime.now()) done_visits = list(done_visits) self.assertEquals(len(done_visits), Patient.objects.count()) self.assertTrue(isinstance(done_visits[0], Visit)) def test_deleted_visits(self): # first have some coming visits coming_visits = list( self.importer.import_coming_visits(user=self.user, clinic=self.clinic, since=(datetime.now() - timedelta(days=1)), until=datetime.now())) # then mark them as deleted, they're matched because they # have the same key_id deleted_visits = list( self.importer.import_deleted_visits(user=self.user, clinic=self.clinic, since=(datetime.now() - timedelta(days=1)), until=datetime.now())) self.assertEquals(len(deleted_visits), Patient.objects.count()) self.assertTrue(isinstance(deleted_visits[0], Visit))