Skip to content
Snippets Groups Projects
Commit a7b53c2f authored by Tim Fechner's avatar Tim Fechner
Browse files

[TASK] Restructured functional tests.

parent 50dfe627
No related branches found
No related tags found
No related merge requests found
Showing
with 201 additions and 4 deletions
import unittest
import sys
import os
import shutil
import sqlite3
class TestBaseClass(unittest.TestCase):
example_dir_name = None
def setUp(self):
self.current_dir = os.getcwd()
self.fixture_dir = os.path.dirname(__file__) + '/../../../docs/examples/' + self.example_dir_name + '/'
self.test_dir = '/tmp/hshetl_test/'
self.test_working_directory = '/tmp/hshetl_test/' + self.example_dir_name + '/'
os.makedirs(self.test_dir)
shutil.copytree(self.fixture_dir, self.test_working_directory)
def tearDown(self):
os.chdir(self.current_dir)
shutil.rmtree(self.test_dir)
from hshetl.test.functional import TestBaseClass
from hshetl.cli import Controller
import sys
import filecmp
class TestCopyJob(TestBaseClass):
example_dir_name = 'copy_sqlite2file'
def setUp(self):
super(TestCopyJob, self).setUp()
sys.argv = ['hshetl', '-d', self.test_working_directory]
def test_job(self):
Controller().configure().execute()
self.assertTrue(filecmp.cmp(self.test_working_directory + 'data/expected_person.csv', self.test_working_directory + 'person.csv'))
from hshetl.test.functional import TestBaseClass
from hshetl.cli import Controller
import sys
import filecmp
class TestFakerCopyJob(TestBaseClass):
example_dir_name = 'copy_faker2file'
def setUp(self):
super(TestFakerCopyJob, self).setUp()
sys.argv = ['hshetl', '-d', self.test_working_directory]
def test_job(self):
Controller().configure().execute()
self.assertTrue(filecmp.cmp(self.test_working_directory + 'data/expected_fakeperson.csv', self.test_working_directory + 'fakeperson.csv'))
\ No newline at end of file
from hshetl.test.functional import TestBaseClass
from hshetl.cli import Controller
import sys
import sqlite3
class TestFileToSQLiteWithMultipleIdentifiers(TestBaseClass):
example_dir_name = 'eetl_file2sqliteWithMultipleIdentifiers'
def setUp(self):
super(TestFileToSQLiteWithMultipleIdentifiers, self).setUp()
self.conn = sqlite3.connect(self.test_working_directory + 'person.sqlite3')
self.cursor = self.conn.cursor()
self.cursor.execute('CREATE TABLE user (name VARCHAR(50), first_name VARCHAR(255), inactive BOOL, foreign_id INT, telephone INT);')
self.conn.commit()
sys.argv = ['hshetl', '-d', self.test_working_directory]
def tearDown(self):
super(TestFileToSQLiteWithMultipleIdentifiers, self).tearDown()
self.conn.close()
def test_sync_handles_insert_update_and_delete_simultaneously(self):
expected_result = [(u'Mueller', u'Hannah', 1, 100, 67466035),
(u'Mueller', u'Robert', 1, 102, 39447759),
(u'Meier', u'David', 1, 106, 70673167),
(u'Meier', u'Ingrid', 1, 108, 14499323),
(u'Mustermann', u'Max', 0, 110, 12345567)]
self.cursor.execute('INSERT INTO user (foreign_id,inactive,first_name,name,telephone) VALUES (100, 0, \'Hannah\', \'Mueller\', 12345678)')
self.cursor.execute('INSERT INTO user (foreign_id,inactive,first_name,name,telephone) VALUES (100, 0, \'Robert\', \'Mueller\', 67466035)')
self.cursor.execute('INSERT INTO user (foreign_id,inactive,first_name,name,telephone) VALUES (104, 1, \'Eagan\', \'Hutchinson\', 93829462)')
self.cursor.execute('INSERT INTO user (foreign_id,inactive,first_name,name,telephone) VALUES (108, 1, \'Rahim\', \'Wilson\', 14499323)')
self.conn.commit()
Controller().configure().execute()
self.cursor.execute('SELECT * FROM user ORDER BY foreign_id ASC')
for fetched_data_set in self.cursor:
self.assertEqual(fetched_data_set, expected_result.pop(0))
\ No newline at end of file
from hshetl.test.functional import TestBaseClass
from hshetl.cli import Controller
import sys
import sqlite3
class TestSqlQueryJob(TestBaseClass):
example_dir_name = 'query_sqlquery2sqlite'
def setUp(self):
super(TestSqlQueryJob, self).setUp()
self.conn = sqlite3.connect(self.test_working_directory + 'person.sqlite3')
self.cursor = self.conn.cursor()
sys.argv = ['hshetl', '-d', self.test_working_directory]
def tearDown(self):
super(TestSqlQueryJob, self).tearDown()
self.conn.close()
def test_job_creates_table_and_inserts_data_as_configured(self):
Controller().configure().execute()
self.cursor.execute('SELECT * FROM user')
for result in self.cursor:
pass
expected_result = (1, u'Max', 0, 42, 12345678)
self.assertEqual(expected_result, result, 'The sqlite3 db does not contain the results from the job query.')
\ No newline at end of file
import unittest from hshetl.test.functional import TestBaseClass
from hshetl.cli import Controller
import sys import sys
import os
import sqlite3 import sqlite3
import shutil
import filecmp
from hshetl.cli import Controller
class TestSyncFileToSQLiteSync(unittest.TestCase): class TestSyncFileToSQLiteSync(TestBaseClass):
example_dir_name = 'sync_file2sqlite'
def setUp(self): def setUp(self):
self.current_dir = os.getcwd() super(TestSyncFileToSQLiteSync, self).setUp()
self.fixture_dir = os.path.dirname(__file__) + '/../../../docs/examples/file2sqlitesync/'
self.test_dir = '/tmp/hshetl_test/'
self.test_working_directory = '/tmp/hshetl_test/file2sqlitesync/'
os.makedirs(self.test_dir)
shutil.copytree(self.fixture_dir, self.test_working_directory)
self.conn = sqlite3.connect(self.test_working_directory + 'person.sqlite3') self.conn = sqlite3.connect(self.test_working_directory + 'person.sqlite3')
self.cursor = self.conn.cursor() self.cursor = self.conn.cursor()
self.cursor.execute('CREATE TABLE user (id INTEGER PRIMARY KEY, name VARCHAR(50), inactive BOOL, foreign_id INT, telephone INT);') self.cursor.execute('CREATE TABLE user (id INTEGER PRIMARY KEY, name VARCHAR(50), inactive BOOL, foreign_id INT, telephone INT);')
...@@ -22,9 +16,8 @@ class TestSyncFileToSQLiteSync(unittest.TestCase): ...@@ -22,9 +16,8 @@ class TestSyncFileToSQLiteSync(unittest.TestCase):
sys.argv = ['hshetl', '-d', self.test_working_directory] sys.argv = ['hshetl', '-d', self.test_working_directory]
def tearDown(self): def tearDown(self):
os.chdir(self.current_dir) super(TestSyncFileToSQLiteSync, self).tearDown()
self.conn.close() self.conn.close()
shutil.rmtree(self.test_dir)
def test_batch_run_inserts_right_amount_of_data_sets(self): def test_batch_run_inserts_right_amount_of_data_sets(self):
...@@ -63,8 +56,6 @@ class TestSyncFileToSQLiteSync(unittest.TestCase): ...@@ -63,8 +56,6 @@ class TestSyncFileToSQLiteSync(unittest.TestCase):
self.cursor.execute('SELECT * FROM user') self.cursor.execute('SELECT * FROM user')
self.assertEqual(self.cursor.fetchone(), None, 'A data set that does not exist in the source system was not deleted.') self.assertEqual(self.cursor.fetchone(), None, 'A data set that does not exist in the source system was not deleted.')
def test_sync_handles_insert_update_and_delete_simultaneously(self): def test_sync_handles_insert_update_and_delete_simultaneously(self):
expected_result = [(1, u'Hanae Ferguson', 1, 100, 67466035), expected_result = [(1, u'Hanae Ferguson', 1, 100, 67466035),
(2, u'Rowan Garrison', 1, 102, 39447759), (2, u'Rowan Garrison', 1, 102, 39447759),
...@@ -82,115 +73,3 @@ class TestSyncFileToSQLiteSync(unittest.TestCase): ...@@ -82,115 +73,3 @@ class TestSyncFileToSQLiteSync(unittest.TestCase):
self.cursor.execute('SELECT * FROM user ORDER BY id ASC') self.cursor.execute('SELECT * FROM user ORDER BY id ASC')
for fetched_data_set in self.cursor: for fetched_data_set in self.cursor:
self.assertEqual(fetched_data_set, expected_result.pop(0)) self.assertEqual(fetched_data_set, expected_result.pop(0))
class TestFileToSQLiteWithMultipleIdentifiers(unittest.TestCase):
def setUp(self):
self.current_dir = os.getcwd()
self.fixture_dir = os.path.dirname(__file__) + '/../../../docs/examples/file2sqlitemultipleidentifiers/'
self.test_dir = '/tmp/hshetl_test/'
self.test_working_directory = '/tmp/hshetl_test/file2sqlitemultipleidentifiers/'
os.makedirs(self.test_dir)
shutil.copytree(self.fixture_dir, self.test_working_directory)
self.conn = sqlite3.connect(self.test_working_directory + 'person.sqlite3')
self.cursor = self.conn.cursor()
self.cursor.execute('CREATE TABLE user (name VARCHAR(50), first_name VARCHAR(255), inactive BOOL, foreign_id INT, telephone INT);')
self.conn.commit()
sys.argv = ['hshetl', '-d', self.test_working_directory]
def tearDown(self):
os.chdir(self.current_dir)
self.conn.close()
shutil.rmtree(self.test_dir)
def test_sync_handles_insert_update_and_delete_simultaneously(self):
expected_result = [(u'Mueller', u'Hannah', 1, 100, 67466035),
(u'Mueller', u'Robert', 1, 102, 39447759),
(u'Meier', u'David', 1, 106, 70673167),
(u'Meier', u'Ingrid', 1, 108, 14499323),
(u'Mustermann', u'Max', 0, 110, 12345567)]
self.cursor.execute('INSERT INTO user (foreign_id,inactive,first_name,name,telephone) VALUES (100, 0, \'Hannah\', \'Mueller\', 12345678)')
self.cursor.execute('INSERT INTO user (foreign_id,inactive,first_name,name,telephone) VALUES (100, 0, \'Robert\', \'Mueller\', 67466035)')
self.cursor.execute('INSERT INTO user (foreign_id,inactive,first_name,name,telephone) VALUES (104, 1, \'Eagan\', \'Hutchinson\', 93829462)')
self.cursor.execute('INSERT INTO user (foreign_id,inactive,first_name,name,telephone) VALUES (108, 1, \'Rahim\', \'Wilson\', 14499323)')
self.conn.commit()
Controller().configure().execute()
self.cursor.execute('SELECT * FROM user ORDER BY foreign_id ASC')
for fetched_data_set in self.cursor:
self.assertEqual(fetched_data_set, expected_result.pop(0))
class TestSqlQueryJob(unittest.TestCase):
def setUp(self):
self.current_dir = os.getcwd()
self.fixture_dir = os.path.dirname(__file__) + '/../../../docs/examples/sqlquery/'
self.test_dir = '/tmp/hshetl_test/'
self.test_working_directory = '/tmp/hshetl_test/sqlquery/'
os.makedirs(self.test_dir)
shutil.copytree(self.fixture_dir, self.test_working_directory)
self.conn = sqlite3.connect(self.test_working_directory + 'person.sqlite3')
self.cursor = self.conn.cursor()
sys.argv = ['hshetl', '-d', self.test_working_directory]
def tearDown(self):
os.chdir(self.current_dir)
self.conn.close()
shutil.rmtree(self.test_dir)
def test_job_creates_table_and_inserts_data_as_configured(self):
Controller().configure().execute()
self.cursor.execute('SELECT * FROM user')
for result in self.cursor:
pass
expected_result = (1, u'Max', 0, 42, 12345678)
self.assertEqual(expected_result, result, 'The sqlite3 db does not contain the results from the job query.')
class TestFakerCopyJob(unittest.TestCase):
def setUp(self):
self.current_dir = os.getcwd()
self.fixture_dir = os.path.dirname(__file__) + '/../../../docs/examples/faker2filecopy/'
self.test_dir = '/tmp/hshetl_test/'
self.test_working_directory = '/tmp/hshetl_test/faker2filecopy/'
os.makedirs(self.test_dir)
shutil.copytree(self.fixture_dir, self.test_working_directory)
sys.argv = ['hshetl', '-d', self.test_working_directory]
def tearDown(self):
os.chdir(self.current_dir)
shutil.rmtree(self.test_dir)
def test_job(self):
Controller().configure().execute()
self.assertTrue(filecmp.cmp(self.test_working_directory + 'data/expected_fakeperson.csv', self.test_working_directory + 'fakeperson.csv'))
class TestCopyJob(unittest.TestCase):
def setUp(self):
self.current_dir = os.getcwd()
self.fixture_dir = os.path.dirname(__file__) + '/../../../docs/examples/sqlite2filecopy/'
self.test_dir = '/tmp/hshetl_test/'
self.test_working_directory = '/tmp/hshetl_test/sqlite2filecopy/'
os.makedirs(self.test_dir)
shutil.copytree(self.fixture_dir, self.test_working_directory)
sys.argv = ['hshetl', '-d', self.test_working_directory]
def tearDown(self):
os.chdir(self.current_dir)
shutil.rmtree(self.test_dir)
def test_job(self):
Controller().configure().execute()
self.assertTrue(filecmp.cmp(self.test_working_directory + 'data/expected_person.csv', self.test_working_directory + 'person.csv'))
if __name__ == "__main__":
unittest.main()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment