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

[TASK] Restructured functional tests.

parent 50dfe627
Branches
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 os
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):
self.current_dir = os.getcwd()
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)
super(TestSyncFileToSQLiteSync, self).setUp()
self.conn = sqlite3.connect(self.test_working_directory + 'person.sqlite3')
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);')
......@@ -22,9 +16,8 @@ class TestSyncFileToSQLiteSync(unittest.TestCase):
sys.argv = ['hshetl', '-d', self.test_working_directory]
def tearDown(self):
os.chdir(self.current_dir)
super(TestSyncFileToSQLiteSync, self).tearDown()
self.conn.close()
shutil.rmtree(self.test_dir)
def test_batch_run_inserts_right_amount_of_data_sets(self):
......@@ -63,8 +56,6 @@ class TestSyncFileToSQLiteSync(unittest.TestCase):
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.')
def test_sync_handles_insert_update_and_delete_simultaneously(self):
expected_result = [(1, u'Hanae Ferguson', 1, 100, 67466035),
(2, u'Rowan Garrison', 1, 102, 39447759),
......@@ -82,115 +73,3 @@ class TestSyncFileToSQLiteSync(unittest.TestCase):
self.cursor.execute('SELECT * FROM user ORDER BY id ASC')
for fetched_data_set in self.cursor:
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