"""Functional tests for approve_product_from_productreview.""" import datetime from operator import itemgetter from product_digital.models import release from tests.factories import release as release_factory from tests.testutils import db @db.test_schema def test_approve_product_from_productreview(client, product_id): """Test approve_product_from_productreview.""" existing_release = release_factory.ReleaseFactory.build( release_id=product_id, release_status='transfer_to_content', ) db.seed_models(existing_release) response = client.put('/product/audio/{}/approve'.format(product_id)) assert response.status_code == 200 assert response.data.decode('utf-8') == 'product approved' release_status, ingestion_completed = itemgetter( 'release_status', 'ingestion_completed')(release.get_release(product_id).message) assert release_status == 'in_content' # the time is set by the database, so we can't test for a specific value assert isinstance(ingestion_completed, datetime.datetime) @db.test_schema def test_approve_product_from_productreview_immediate_preorder(client, product_id): """Test approve_product_from_productreview for immediate preorder.""" existing_release = release_factory.ReleaseFactory.build( release_id=product_id, release_status='transfer_to_content', preorder_date=datetime.date(1900, 1, 1), ) db.seed_models(existing_release) response = client.put('/product/audio/{}/approve'.format(product_id)) assert response.status_code == 200 assert response.data.decode('utf-8') == 'product approved' release_status, ingestion_completed, preorder_date = itemgetter( 'release_status', 'ingestion_completed', 'preorder_date' )(release.get_release(product_id).message) assert release_status == 'in_content' # the time is set by the database, so we can't test for a specific value assert isinstance(ingestion_completed, datetime.datetime) assert isinstance(preorder_date, datetime.date)