"""Integration test for Theatrical flow.""" from boto.s3.connection import Bucket from boto.s3.connection import S3Connection from garcon_contrib.dynamo_feed_status import garcon_feed_status from flows import datastore from flows.theatrical import config as flow_config from integration_tests.flows.theatrical import config from integration_tests.flows.theatrical import helpers from integration_tests.flows.theatrical import queries def test_flow_execution(): """Test Theatrical workflow execution.""" # preparing test data for test flow execution helpers.prepare_data() # execute test flow helpers.execute_flow() # check database state db_checks = [queries.assert_queries['raw_data'], queries.assert_queries['revenue_data']] for check in db_checks: value = datastore.execute(check['sql']).rowcount assert value == check['check_value'], check['error_message'] # check DynamoDB status for batch_date in config.batch_dates: garcon_feed_status.get_overall_status( flow_config.SWF_WORKFLOW_NAME, batch_date) == 'INGESTED' # check S3 state source_bucket = Bucket(S3Connection(), config.test_bucket_name) archive_bucket = Bucket(S3Connection(), flow_config.ARCHIVE_BUCKET) for file in config.source_files_data: assert source_bucket.get_key( file['s3_path']) is None, ( "File wasn't deleted from source path") assert archive_bucket.get_key( '{}/{}'.format( flow_config.ARCHIVE_PREFIX, file['file_name'])) is not None, ( "File wasn't copied to the archive path")