"""Accommodations for integration tests.""" from flask import g from product_review.api import db from product_review.models import ( approval, canned_response_history, queue_move_history, rejection, review_queue, review_validation_history, unsubmit, score_history, ) from product_review.testing_accommodations import art_relations from product_review.util.db import db_transaction def delete_review_queue_item(review_queue_id): """Hard delete a review queue item and associated records.""" rejection.delete(review_queue_id) approval.delete(review_queue_id) review_validation_history.delete(review_queue_id) queue_move_history.delete(review_queue_id) unsubmit.delete(review_queue_id) canned_response_history.delete(review_queue_id) score_history.delete(review_queue_id) review_queue.delete(review_queue_id) def reset_integration_test_db_records(product_id): """Reset db state relied on by integration tests.""" setattr(g.request_context, "is_integration_test_preparation", True) with db_transaction: history, _ = review_queue.get_items(product_id=product_id) for review in history: delete_review_queue_item(review.review_queue_id) art_relations.reset_product(product_id) review_queue_item = review_queue.ReviewQueue( product_id=product_id, submission_type="new" ) db.session.add(review_queue_item) return review_queue_item.to_dict()