"""Functional test for delete product.""" from product.constants import header from product.constants import service_name from tests.testutils import db @db.test_schema def test_delete_product_success( client, ows_request_mocker, test_valid_product): """Test delete product without errors.""" db.insert_vw_product() vendor_id = test_valid_product['vendor_id'] upc = test_valid_product['upc'] product_id = test_valid_product['product_id'] ows_request_mocker.add({ 'method': 'put', 'service': service_name.OWS_CARVEOUTS, 'path': '/carveout/{}/territory'.format(upc), 'status': 200 }) ows_request_mocker.add({ 'method': 'delete', 'service': service_name.OWS_CARVEOUTS_PYTHON, 'path': '/release_dms_master_carveouts/{}'.format(product_id), 'status': 200 }) ows_request_mocker.add({ 'method': 'delete', 'service': service_name.OWS_CARVEOUTS_PYTHON, 'path': '/release_dms_carveouts/{}'.format(product_id), 'status': 200 }) ows_request_mocker.add({ 'method': 'delete', 'service': service_name.OWS_MARKETING, 'path': '/highlights/release/{}'.format(product_id), 'status': 200 }) ows_request_mocker.add({ 'method': 'delete', 'service': service_name.OWS_PRODUCT_PHYSICAL, 'path': '/product/{}/tracks'.format(product_id), 'status': 200 }) ows_request_mocker.add({ 'method': 'delete', 'service': service_name.OWS_PRODUCT_PHYSICAL, 'path': '/product/{}'.format(product_id), 'status': 200 }) ows_request_mocker.apply() client_response = client.delete( '/product/{}'.format(product_id), headers={ header.CORRELATION_ID: '1234567890', header.GRASS_ACCOUNT_TYPE: 'vendor', header.GRASS_ACCOUNT_ID: str(vendor_id)}) assert client_response.status_code == 200 @db.test_schema def test_delete_product_failure( client, ows_request_mocker, test_valid_product): """Test delete product with error.""" db.insert_vw_product() vendor_id = test_valid_product['vendor_id'] upc = test_valid_product['upc'] product_id = test_valid_product['product_id'] ows_request_mocker.add({ 'method': 'put', 'service': service_name.OWS_CARVEOUTS, 'path': '/carveout/{}/territory'.format(upc), 'status': 200 }) ows_request_mocker.add({ 'method': 'delete', 'service': service_name.OWS_CARVEOUTS_PYTHON, 'path': '/release_dms_master_carveouts/{}'.format(product_id), 'status': 200 }) ows_request_mocker.add({ 'method': 'delete', 'service': service_name.OWS_CARVEOUTS_PYTHON, 'path': '/release_dms_carveouts/{}'.format(product_id), 'status': 200 }) ows_request_mocker.add({ 'method': 'delete', 'service': service_name.OWS_MARKETING, 'path': '/highlights/release/{}'.format(product_id), 'status': 200 }) ows_request_mocker.add({ 'method': 'delete', 'service': service_name.OWS_PRODUCT_PHYSICAL, 'path': '/product/{}/tracks'.format(product_id), 'status': 200 }) ows_request_mocker.add({ 'method': 'delete', 'service': service_name.OWS_PRODUCT_PHYSICAL, 'path': '/product/{}'.format(product_id), 'status': 500 }) ows_request_mocker.apply() client_response = client.delete( '/product/{}'.format(product_id), headers={ header.CORRELATION_ID: '1234567890', header.GRASS_ACCOUNT_TYPE: 'vendor', header.GRASS_ACCOUNT_ID: str(vendor_id)}) assert client_response.status_code == 500 @db.test_schema def test_delete_digital_product_success( client, ows_request_mocker, test_valid_digital_product): """Test delete digital product without errors.""" db.insert_vw_product() vendor_id = test_valid_digital_product['vendor_id'] upc = test_valid_digital_product['upc'] product_id = test_valid_digital_product['product_id'] ows_request_mocker.add({ 'method': 'put', 'service': service_name.OWS_CARVEOUTS, 'path': '/carveout/{}/territory'.format(upc), 'status': 200 }) ows_request_mocker.add({ 'method': 'delete', 'service': service_name.OWS_CARVEOUTS_PYTHON, 'path': '/release_dms_master_carveouts/{}'.format(product_id), 'status': 200 }) ows_request_mocker.add({ 'method': 'delete', 'service': service_name.OWS_CARVEOUTS_PYTHON, 'path': '/release_dms_carveouts/{}'.format(product_id), 'status': 200 }) ows_request_mocker.add({ 'method': 'delete', 'service': service_name.OWS_MARKETING, 'path': '/highlights/release/{}'.format(product_id), 'status': 200 }) ows_request_mocker.add({ 'method': 'delete', 'service': service_name.OWS_PRODUCT_DIGITAL, 'path': '/product/{}'.format(product_id), 'status': 200 }) ows_request_mocker.apply() client_response = client.delete( '/product/{}'.format(product_id), headers={ header.CORRELATION_ID: '1234567890', header.GRASS_ACCOUNT_TYPE: 'vendor', header.GRASS_ACCOUNT_ID: str(vendor_id)}) assert client_response.status_code == 200