"""Utils for database operations. Note: this is strange to have methods for tests that is in the application directory. It probably should be in tests since we aren't looking to get metrics like code coverage. """ import datetime from content_review import config from content_review.connectors import mysql from content_review.models import product_review_status from content_review.models import product_review_status_history from content_review.models import review_status_type from content_review.models import review_type review_type_data = [ { 'name': 'MENA', 'description': 'Middle Eastern and North African territories' } ] review_status_type_data = [ { 'id': 1, 'status': 'Approved' }, { 'id': 2, 'status': 'Rejected' }, { 'id': 3, 'status': 'Pending' } ] now_datetime = datetime.datetime.utcnow() product_review_status_seed = [ { 'product_id': 100, 'review_type_id': 1, 'review_status_type_id': 1, 'created_timestamp': now_datetime, 'updated_timestamp': now_datetime }, { 'product_id': 200, 'review_type_id': 1, 'review_status_type_id': 1, 'created_timestamp': now_datetime, 'updated_timestamp': now_datetime } ] product_review_status_history_seed = [ { 'product_id': 100, 'review_type_id': 1, 'review_status_type_id': 2, 'created_timestamp': now_datetime, 'review_timestamp': now_datetime }, { 'product_id': 100, 'review_type_id': 1, 'review_status_type_id': 3, 'created_timestamp': now_datetime, 'review_timestamp': now_datetime + datetime.timedelta(seconds=-60) } ] def create_tables(): """Create tables defined in account.models.""" if config.ENVIRONMENT != config.TEST_ENVIRONMENT: return mysql.BaseModel.metadata.drop_all(mysql.db_engine) mysql.BaseModel.metadata.create_all(mysql.db_engine) def seed_review_type_table(): """Insert test data into review_type table.""" with mysql.db_session() as session: if config.ENVIRONMENT != config.TEST_ENVIRONMENT: return session.execute( review_type.ReviewType.__table__.insert().values(review_type_data)) session.commit() session.close() def seed_review_status_type_table(): """Insert test data into review_status_type table.""" with mysql.db_session() as session: if config.ENVIRONMENT != config.TEST_ENVIRONMENT: return session.execute( review_status_type.ReviewStatusType.__table__.insert().values( review_status_type_data)) session.commit() session.close() def seed_product_status_review_and_history_table(): """Insert test data into review_status_type table.""" with mysql.db_session() as session: if config.ENVIRONMENT != config.TEST_ENVIRONMENT: return session.execute( product_review_status.ProductReviewStatus .__table__.insert().values(product_review_status_seed)) session.execute( product_review_status_history.ProductReviewStatusHistory .__table__.insert().values(product_review_status_history_seed)) session.commit() session.close()