#!/usr/bin/python # # Copyright 2009 Google Inc. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. __author__ = 'api.eric@google.com (Eric Bidelman)' import unittest from gdata import test_data import gdata.health import gdata.health.service class ProfileEntryTest(unittest.TestCase): def setUp(self): self.profile_entry = gdata.health.ProfileEntryFromString( test_data.HEALTH_PROFILE_ENTRY_DIGEST) def testToAndFromStringWithData(self): entry = gdata.health.ProfileEntryFromString(str(self.profile_entry)) self.assert_(isinstance(entry, gdata.health.ProfileEntry)) self.assert_(isinstance(entry.ccr, gdata.health.Ccr)) self.assertEqual(len(entry.ccr.GetMedications()), 3) self.assertEqual(len(entry.ccr.GetImmunizations()), 1) self.assertEqual(len(entry.ccr.GetAlerts()), 2) self.assertEqual(len(entry.ccr.GetResults()), 1) self.assertEqual(len(entry.ccr.GetProblems()), 2) self.assertEqual(len(entry.ccr.GetProcedures()), 2) def testGetResultsTextFromCcr(self): entry = gdata.health.ProfileEntryFromString(str(self.profile_entry)) result = entry.ccr.GetResults()[0].FindChildren('Test')[0] test_desc = result.FindChildren('Description')[0].FindChildren('Text')[0] self.assertEqual(test_desc.text, 'Acetaldehyde - Blood') def testGetMedicationNameFromCcr(self): entry = gdata.health.ProfileEntryFromString(str(self.profile_entry)) product = entry.ccr.GetMedications()[1].FindChildren('Product')[0] prod_name = product.FindChildren('ProductName')[0].FindChildren('Text')[0] self.assertEqual(prod_name.text, 'A-Fil') def testGetProblemCodeValueFromCcr(self): entry = gdata.health.ProfileEntryFromString(str(self.profile_entry)) problem_desc = entry.ccr.GetProblems()[1].FindChildren('Description')[0] code = problem_desc.FindChildren('Code')[0].FindChildren('Value')[0] self.assertEqual(code.text, '136.9') def testGetGetImmunizationActorIdFromCcr(self): entry = gdata.health.ProfileEntryFromString(str(self.profile_entry)) immun_source = entry.ccr.GetImmunizations()[0].FindChildren('Source')[0] actor_id = immun_source.FindChildren('Actor')[0].FindChildren('ActorID')[0] self.assertEqual(actor_id.text, 'user@gmail.com') def testGetGetProceduresNameFromCcr(self): entry = gdata.health.ProfileEntryFromString(str(self.profile_entry)) proc_desc = entry.ccr.GetProcedures()[1].FindChildren('Description')[0] proc_name = proc_desc.FindChildren('Text')[0] self.assertEqual(proc_name.text, 'Abdominoplasty') def testGetAlertsFromCcr(self): entry = gdata.health.ProfileEntryFromString(str(self.profile_entry)) alert_type = entry.ccr.GetAlerts()[0].FindChildren('Type')[0] self.assertEqual(alert_type.FindChildren('Text')[0].text, 'Allergy') class ProfileListEntryTest(unittest.TestCase): def setUp(self): self.entry = gdata.health.ProfileListEntryFromString( test_data.HEALTH_PROFILE_LIST_ENTRY) def testToAndFromString(self): self.assert_(isinstance(self.entry, gdata.health.ProfileListEntry)) self.assertEqual(self.entry.GetProfileId(), 'vndCn5sdfwdEIY') self.assertEqual(self.entry.GetProfileName(), 'profile name') class ProfileFeedTest(unittest.TestCase): def setUp(self): self.feed = gdata.health.ProfileFeedFromString( test_data.HEALTH_PROFILE_FEED) def testToAndFromString(self): self.assert_(len(self.feed.entry) == 15) for an_entry in self.feed.entry: self.assert_(isinstance(an_entry, gdata.health.ProfileEntry)) new_profile_feed = gdata.health.ProfileFeedFromString(str(self.feed)) for an_entry in new_profile_feed.entry: self.assert_(isinstance(an_entry, gdata.health.ProfileEntry)) def testConvertActualData(self): for an_entry in self.feed.entry: self.assert_(an_entry.ccr is not None) class HealthProfileQueryTest(unittest.TestCase): def testHealthQueryToString(self): query = gdata.health.service.HealthProfileQuery() self.assertEqual(query.ToUri(), '/health/feeds/profile/default') query = gdata.health.service.HealthProfileQuery(feed='feeds/profile') self.assertEqual(query.ToUri(), '/health/feeds/profile/default') query = gdata.health.service.HealthProfileQuery(categories=['medication']) self.assertEqual(query.ToUri(), '/health/feeds/profile/default/-/medication') query = gdata.health.service.HealthProfileQuery(projection='ui', profile_id='12345') self.assertEqual(query.ToUri(), '/health/feeds/profile/ui/12345') query = gdata.health.service.HealthProfileQuery() query.categories.append('medication|condition') self.assertEqual(query.ToUri(), '/health/feeds/profile/default/-/medication%7Ccondition') def testH9QueryToString(self): query = gdata.health.service.HealthProfileQuery(service='h9') self.assertEqual(query.ToUri(), '/h9/feeds/profile/default') query = gdata.health.service.HealthProfileQuery( service='h9', feed='feeds/profile', projection='ui', profile_id='12345') self.assertEqual(query.ToUri(), '/h9/feeds/profile/ui/12345') def testDigestParam(self): query = gdata.health.service.HealthProfileQuery(params={'digest': 'true'}) self.assertEqual(query.ToUri(), '/health/feeds/profile/default?digest=true') query.profile_id = '12345' query.projection = 'ui' self.assertEqual( query.ToUri(), '/health/feeds/profile/ui/12345?digest=true') class HealthProfileListQueryTest(unittest.TestCase): def testHealthProfileListQueryToString(self): query = gdata.health.service.HealthProfileListQuery() self.assertEqual(query.ToUri(), '/health/feeds/profile/list') query = gdata.health.service.HealthProfileListQuery(service='health') self.assertEqual(query.ToUri(), '/health/feeds/profile/list') query = gdata.health.service.HealthProfileListQuery( feed='feeds/profile/list') self.assertEqual(query.ToUri(), '/health/feeds/profile/list') query = gdata.health.service.HealthProfileListQuery( service='health', feed='feeds/profile/list') self.assertEqual(query.ToUri(), '/health/feeds/profile/list') def testH9ProfileListQueryToString(self): query = gdata.health.service.HealthProfileListQuery(service='h9') self.assertEqual(query.ToUri(), '/h9/feeds/profile/list') query = gdata.health.service.HealthProfileListQuery( service='h9', feed='feeds/profile/list') self.assertEqual(query.ToUri(), '/h9/feeds/profile/list') if __name__ == '__main__': unittest.main()