Source code for af.tests.test_sqlite_controller_sickness_db

import os
import unittest

from af import af_directory
from af.controller.data.SqliteController import SqliteController

[docs]class TestSqliteControllerSicknessDb(unittest.TestCase):
[docs] def setUp(self): db_location = os.path.join(af_directory(), 'utils', 'sickness.db') self.controller = SqliteController(db_location) self.copy_controller = SqliteController(self.create_db_copy('sickness_copy.db'))
[docs] def tearDown(self): os.remove(self.copy_controller.data_location)
[docs] def test_get_count_of_distinct_qi_values_ok(self): qi_key_amount = ( ('Race', 2), ('Birth', 12), ('Gender', 2), ('Zip', 3), ('Problem', 9), ) for val in qi_key_amount: qi, count = val self.assertEqual(count, list(self.controller.get_count_of_distinct_qi_values('sickness', qi))[0])
[docs] def test_get_frequency_of_qi_attributes_ok(self): # 6 black and 6 white for result in self.controller.get_frequency_of_qi_attributes('sickness', ['Race']): self.assertEqual(6, result[0]) # sickness.db is not k=2 anonymized qi_list = ['Race', 'Birth', 'Gender', 'Zip'] for result in self.controller.get_frequency_of_qi_attributes('sickness', qi_list): self.assertGreaterEqual(2, result[0])
[docs] def test_replace_qi_value_ok(self): self.assertEqual(6, self.copy_controller.get_count_of_qi_value('sickness', ['Race'], ['white'])) self.assertEqual(0, self.copy_controller.get_count_of_qi_value('sickness', ['Race'], ['w'])) self.copy_controller.update_qi_value('sickness', 'Race', 'w', 'white') self.assertEqual(0, self.copy_controller.get_count_of_qi_value('sickness', ['Race'], ['white'])) self.assertEqual(6, self.copy_controller.get_count_of_qi_value('sickness', ['Race'], ['w'])) self.copy_controller.update_qi_value('sickness', 'Race', 'white', 'w') self.assertEqual(6, self.copy_controller.get_count_of_qi_value('sickness', ['Race'], ['white'])) self.assertEqual(0, self.copy_controller.get_count_of_qi_value('sickness', ['Race'], ['w']))
[docs] def test_remove_row_ok(self): self.assertEqual(6, self.copy_controller.get_count_of_qi_value('sickness', ['Race'], ['white'])) self.copy_controller.remove_rows('sickness', ['Race'], [['white']]) self.assertEqual(0, self.copy_controller.get_count_of_qi_value('sickness', ['Race'], ['white'])) self.assertEqual(2, self.copy_controller.get_count_of_qi_value('sickness', ['Race', 'Gender'], ['black', 'male'])) self.copy_controller.remove_rows('sickness', ['Race', 'Gender'], [['black', 'male']]) self.assertEqual(0, self.copy_controller.get_count_of_qi_value('sickness', ['Race', 'Gender'], ['black', 'male']))
[docs] def test_remove_row_invalid_length_of_values(self): failed = False try: self.assertEqual(6, self.copy_controller.get_count_of_qi_value('sickness', ['Race'], ['white'])) self.copy_controller.remove_row('sickness', ['Race'], ['white', ['male']]) except Exception: failed = True self.assertTrue(failed, "Method should have failed")
[docs] def create_db_copy(self, db_name): new_db_location = os.path.join(af_directory(), 'utils', db_name) self.controller.create_db_copy(self.controller.data_location, new_db_location) return new_db_location