def test_query_task_update_insert_fail_general(self, mock_create_engine, mock_refresh): with mock.patch.dict(create_query.os.environ, {"Database_Location": "sweden"}): with open('tests/fixtures/test_data.txt') as infile: test_data = json.load(infile) with mock.patch("create_query.Session.add") as mock_insert: with mock.patch("create_query.Session.query") as mock_return: mock_return.return_value.all.return_value = pd.DataFrame( {0: [1]}) mock_therest = mock.Mock() # So many 'mock_therest's are needed # due to the nature of the test data used. mock_insert.side_effect = [ mock_therest, mock_therest, mock_therest, mock_therest, mock_therest, mock_therest, mock_therest, mock_therest, Exception("Bad Me") ] x = create_query.lambda_handler(test_data, '') assert (x["statusCode"] == 500) assert ("Failed To Insert Data: query_task_update" in x['body']['Error']) assert ("General Error" in str(x['body']['Error']))
def test_input_data_exception(self): with open('tests/fixtures/test_data.txt') as infile: test_data = json.load(infile) with mock.patch.dict(create_query.os.environ, {"Database_Location": "sweden"}): test_data.pop('query_type') x = create_query.lambda_handler("MIKE", '') assert (x["statusCode"] == 400) assert ("Invalid" in str(x['body']['Error']))
def test_db_connection_exception_general(self, mock_create_engine): with open('tests/fixtures/test_data.txt') as infile: test_data = json.load(infile) with mock.patch.dict(create_query.os.environ, {"Database_Location": "sweden"}): mock_create_engine.side_effect = Exception("Bad Me") x = create_query.lambda_handler(test_data, '') assert (x["statusCode"] == 500) assert ("Failed To Connect" in str(x['body']['Error'])) assert ("General Error" in str(x['body']['Error']))
def test_db_connection_exception_driver(self, mock_create_engine): with open('tests/fixtures/test_data.txt') as infile: test_data = json.load(infile) with mock.patch.dict(create_query.os.environ, {"Database_Location": "MyPostgresDatase"}): mock_create_engine.side_effect =\ db.exc.NoSuchModuleError('', '', '') x = create_query.lambda_handler(test_data, '') assert (x["statusCode"] == 500) assert ("Failed To Connect" in x['body']['Error']) assert ("Driver Error" in str(x['body']['Error']))
def test_query_table_insert_fail_general(self, mock_create_engine, mock_insert, mock_refresh): with mock.patch.dict(create_query.os.environ, {"Database_Location": "sweden"}): with open('tests/fixtures/test_data.txt') as infile: test_data = json.load(infile) mock_insert.side_effect = Exception("Bad Me") x = create_query.lambda_handler(test_data, '') assert (x["statusCode"] == 500) assert ("Failed To Insert Data: query" in x['body']['Error']) assert ("General Error" in str(x['body']['Error']))
def test_lambda_handler_happy_path(self, mock_create_engine, mock_insert, mock_refresh): with mock.patch.dict(create_query.os.environ, {"Database_Location": "sweden"}): with open('tests/fixtures/test_data.txt') as infile: test_data = json.load(infile) with mock.patch("create_query.Session.query") as mock_return: mock_return.return_value.all.return_value = pd.DataFrame( {0: [1]}) x = create_query.lambda_handler(test_data, '') assert (x["statusCode"] == 201) assert ("Successfully" in x['body']['Success'])
def test_commit_fail_general(self, mock_create_engine, mock_insert): with mock.patch.dict(create_query.os.environ, {"Database_Location": "sweden"}): with open('tests/fixtures/test_data.txt') as infile: test_data = json.load(infile) with mock.patch("create_query.Session") as mock_sesh: mock_session = AlchemyMagicMock() mock_sesh.return_value = mock_session mock_session.commit.side_effect = Exception("Bad Me") mock_insert.return_value.values.return_value\ .returning.return_value\ .on_conflict_do_nothing.return_value = "bob" x = create_query.lambda_handler(test_data, '') assert (x["statusCode"] == 500) assert ("Failed To Commit" in x['body']['Error']) assert ("General Error" in str(x['body']['Error']))
def test_close_fail(self, mock_create_engine, mock_insert): with mock.patch.dict(create_query.os.environ, {"Database_Location": "sweden"}): with open('tests/fixtures/test_data.txt') as infile: test_data = json.load(infile) with mock.patch("create_query.Session") as mock_sesh: mock_session = AlchemyMagicMock() mock_sesh.return_value = mock_session mock_session.close.side_effect =\ db.exc.OperationalError("", "", "") mock_insert.return_value.values.return_value\ .returning.return_value\ .on_conflict_do_nothing.return_value = "bob" x = create_query.lambda_handler(test_data, '') assert (x["statusCode"] == 500) assert ("Database Session Closed Badly" in x['body']['Error']) assert ("Operational Error" in str(x['body']['Error']))
def test_failed_vet_insert_fail(self, mock_create_engine, mock_refresh): with mock.patch.dict(create_query.os.environ, {"Database_Location": "sweden"}): with open('tests/fixtures/test_data.txt') as infile: test_data = json.load(infile) with mock.patch("create_query.Session.add") as mock_insert: with mock.patch("create_query.Session.query") as mock_return: mock_return.return_value.all.return_value = pd.DataFrame( {0: [1]}) mock_therest = mock.Mock() mock_insert.side_effect = [ mock_therest, mock_therest, mock_therest, db.exc.OperationalError("", "", "") ] x = create_query.lambda_handler(test_data, '') assert (x["statusCode"] == 500) assert ("Failed To Insert Data: failed_vet" in x['body']['Error']) assert ("Operational Error" in str(x['body']['Error']))
def test_environment_variable_exception(self): x = create_query.lambda_handler("MIKE", '') assert (x["statusCode"] == 500) assert ("Configuration Error:" in x['body']['Error'])