"""Functional tests for creating a track. Test endpoint: PUT /product//tracks/arrange """ import json from unittest.mock import MagicMock from oto import status as response_code from tests.testutils import db from tests.testutils import mocks @db.test_schema def test_reorder_tracks( client, client_headers, track_reorder_data, track_reorder_expected_response, mocker): """Test create track is successful.""" mocks.head_response(mocker) get_response = MagicMock( status_code=200, text=json.dumps( {'upc': 123456789012, 'vendor_id': 100, 'product_id': 1})) mocker.patch('backend.models.ows_product._get_from_ows_product_service', return_value=get_response) res = client.put( '/product/{}/tracks/arrange'.format(1), headers=client_headers, data=json.dumps(track_reorder_data)) res_body = json.loads(res.data.decode()) assert res.status_code == response_code.OK assert res_body == track_reorder_expected_response @db.test_schema def test_reorder_tracks_without_grass_headers( client, valid_headers, track_reorder_data, track_reorder_expected_response, mocker): """Test create track is successful without grass headers.""" mocks.head_response(mocker) get_response = MagicMock( status_code=200, text=json.dumps( {'upc': 123456789012, 'vendor_id': 100, 'product_id': 1})) mocker.patch('backend.models.ows_product._get_from_ows_product_service', return_value=get_response) res = client.put( '/product/{}/tracks/arrange'.format(1), headers=valid_headers, data=json.dumps(track_reorder_data)) res_body = json.loads(res.data.decode()) assert res.status_code == response_code.OK assert res_body == track_reorder_expected_response @db.test_schema def test_reorder_tracks_with_invalid_grass_headers( client, invalid_grass_headers, track_reorder_data): """Test create track fails with invalid grass headers.""" res = client.put( '/product/{}/tracks/arrange'.format(1), headers=invalid_grass_headers, data=json.dumps(track_reorder_data)) assert res.status_code == response_code.BAD_REQUEST