# !/usr/bin/python
# -*- coding: utf-8 -*-
"""test class"""
import os
import unittest
from plasoscaffolder.dal import explain_query_plan
from plasoscaffolder.dal import sqlite_query_execution
from tests.test_helper import path_helper
[docs]class ExplainQueryPlanTest(unittest.TestCase):
"""test the SQLite Query execution test"""
[docs] def setUp(self):
database_path = path_helper.TestDatabasePath()
file_path = os.path.join(database_path, 'twitter_ios.db')
execute = sqlite_query_execution.SQLiteQueryExecution(file_path)
execute.TryToConnect()
self.explain_query_plan = explain_query_plan.ExplainQueryPlan(execute)
[docs] def testIsReadOnlyIfTrue(self):
"""test IsReadOnly if it is True"""
select_query = 'select id from users'
result = self.explain_query_plan.IsReadOnly(select_query)
self.assertTrue(result)
[docs] def testIsReadOnlyIfFalseBecauseOfDrop(self):
"""test IsReadOnly if it is False because it is a drop query"""
drop_query = 'drop table users'
result = self.explain_query_plan.IsReadOnly(drop_query)
self.assertFalse(result)
[docs] def testIsReadOnlyIfFalseBecauseOfAlter(self):
"""test IsReadOnly if it is False because it is a alter query"""
alter_query = 'alter table users rename users2'
result = self.explain_query_plan.IsReadOnly(alter_query)
self.assertFalse(result)
[docs] def testIsReadOnlyIfFalseBecauseOfError(self):
"""test IsReadOnly with erroneous SQL query"""
error_query = 'select bla from blub'
result = self.explain_query_plan.IsReadOnly(error_query)
self.assertFalse(result)
[docs] def testIsReadOnlyIfFalseBecauseOfWarning(self):
"""test IsReadOnly with erroneous SQL query"""
warning_query = 'select id from users;select id from users'
result = self.explain_query_plan.IsReadOnly(warning_query)
self.assertFalse(result)
if __name__ == '__main__':
unittest.main()