Source code for tests.dal.test_sqlite_database_information
# !/usr/bin/python
# -*- coding: utf-8 -*-
"""test class"""
import os
import unittest
from plasoscaffolder.dal import sqlite_database_information
from plasoscaffolder.dal import sqlite_query_execution
from tests.test_helper import path_helper
[docs]class SQLiteDatabaseInformationTest(unittest.TestCase):
"""test the SQLite Query execution test"""
[docs] def testGetRequiredTables(self):
"""get the required tables if nothing went wrong"""
database_path = path_helper.TestDatabasePath()
file_path = os.path.join(database_path, 'twitter_ios.db')
execute = sqlite_query_execution.SQLiteQueryExecution(file_path)
connected = execute.TryToConnect()
database_information = (
sqlite_database_information.SQLiteDatabaseInformation(execute))
result = database_information.GetTablesFromDatabase()
self.assertEqual(len(result), 7)
self.assertTrue(connected)
self.assertEqual(result[0], 'Lists')
self.assertEqual(result[1], 'ListsShadow')
self.assertEqual(result[2], 'MyRetweets')
self.assertEqual(result[3], 'Statuses')
self.assertEqual(result[4], 'StatusesShadow')
self.assertEqual(result[5], 'Users')
self.assertEqual(result[6], 'UsersShadow')
[docs] def testGetRequiredTablesWithError(self):
"""get the required tables if anything went wrong"""
database_path = path_helper.TestDatabasePath()
file_path = os.path.join(database_path, 'twitter_ios_error.db')
execute = sqlite_query_execution.SQLiteQueryExecution(file_path)
connected = execute.TryToConnect()
database_information = (
sqlite_database_information.SQLiteDatabaseInformation(execute))
result = database_information.GetTablesFromDatabase()
self.assertEqual(result, [])
self.assertFalse(connected)
[docs] def testGetTableColumnsAndType(self):
"""get columns for the table nodata with every possible type."""
database_path = path_helper.TestDatabasePath()
file_path = os.path.join(database_path, 'test_database_types.db')
execute = sqlite_query_execution.SQLiteQueryExecution(file_path)
connected = execute.TryToConnect()
database_information = (
sqlite_database_information.SQLiteDatabaseInformation(execute))
actual_data = database_information.GetTableColumnsAndType('nodata')
expected_data = {'intval': 'int',
'integerval': 'integer',
'tinyintval': 'tinyint',
'smallintval': 'smallint',
'mediuintval': 'mediumint',
'bigintval': 'bigint',
'unsignedbigintval': 'unsigned big int',
'int2val': 'int2',
'int8val': 'int8',
'characterval': 'character(20)',
'varcharval': 'varchar(255)',
'varyingcharacterval': 'varying character(255)',
'ncharval': 'nchar(55)',
'nativecharacterval': 'native character(70)',
'nvarcharval': 'nvarchar(100)',
'textval': 'text',
'clobval': 'clob',
'blobval': 'blob',
'realval': 'real',
'doubleval': 'double',
'doubleprecisionval': 'double precision',
'floatval': 'float',
'numericval': 'numeric',
'decimalval': 'decimal(10,5)',
'booleanval': 'boolean',
'dateval': 'date',
'datetimeval': 'datetime'}
self.assertEqual(len(actual_data), 27)
self.assertEqual(actual_data, expected_data)
self.assertTrue(connected)
[docs] def testGetTableColumnsAndTypeWithNoTables(self):
"""get the columns for the table if the table can not be found."""
database_path = path_helper.TestDatabasePath()
file_path = os.path.join(database_path, 'test_database_types.db')
execute = sqlite_query_execution.SQLiteQueryExecution(file_path)
connected = execute.TryToConnect()
database_information = (
sqlite_database_information.SQLiteDatabaseInformation(execute))
actual_data = database_information.GetTableColumnsAndType('thisisnot')
expected_data = {}
self.assertEqual(len(actual_data), 0)
self.assertEqual(actual_data, expected_data)
self.assertTrue(connected)
[docs] def testGetTableColumnsAndTypeWithError(self):
"""get the columns for the table if anything went wrong"""
database_path = path_helper.TestDatabasePath()
file_path = os.path.join(database_path, 'test_database_types.db')
execute = sqlite_query_execution.SQLiteQueryExecution(file_path)
connected = execute.TryToConnect()
database_information = (
sqlite_database_information.SQLiteDatabaseInformation(execute))
actual_data = database_information.GetTableColumnsAndType(
"bla);select * from nodata; (")
expected_data = {}
self.assertEqual(len(actual_data), 0)
self.assertEqual(actual_data, expected_data)
self.assertTrue(connected)
if __name__ == '__main__':
unittest.main()