"""Test for Track Crop Info Logic.""" from datetime import datetime from oto import response from oto import status as http_status from product_film.constants import error from product_film.logic import track_crop from product_film.models import track_crop_info def test_get_track_crop_info(mocker): """Test get_track_crop_info.""" expected_result = dict( track_id=1, crop_left=10, crop_right=10, crop_top=10, crop_bottom=10, orchard_user_id=1, created_timestamp=datetime.now(), updated_timestamp=datetime.now()) mocker.patch.object( track_crop_info, 'get_track_crop_info', return_value=response.Response(message=expected_result)) result = track_crop.get_track_crop_info(track_id=1) assert result.status == http_status.OK def test_get_track_crop_info_for_not_found(mocker): """Test get_track_crop_info for not found.""" mocker.patch.object( track_crop_info, 'get_track_crop_info', return_value=response.create_not_found_response()) result = track_crop.get_track_crop_info(track_id=2) assert result.status == http_status.NOT_FOUND def test_get_track_crop_info_for_bad_request(mocker): """Test get_track_crop_info for bad request.""" mocker.patch.object( track_crop_info, 'get_track_crop_info', return_value=response.create_error_response( code=error.BAD_REQUEST_CODE, message='Bad Request')) result = track_crop.get_track_crop_info(track_id=None) assert result.status == http_status.BAD_REQUEST def test_add_track_crop_info(mocker): """Test add_track_crop_info.""" expected_result = dict( track_id=1, crop_left=10, crop_right=11, crop_top=12, crop_bottom=13, orchard_user_id=2, created_timestamp=datetime.now(), updated_timestamp=datetime.now()) mock_track = mocker.patch.object( track_crop_info, 'add_track_crop_info', return_value=response.Response(message=expected_result)) input_data = dict( left=10, right=11, top=12, bottom=13, orchard_user_id=2) result = track_crop.add_track_crop_info(input_data, 1) assert result.status == http_status.OK mock_track.assert_called_with(1, 10, 11, 12, 13, 2) def test_add_track_crop_info_bad_request(mocker): """Test add_track_crop_info bad request.""" mocker.patch.object( track_crop_info, 'add_track_crop_info', return_value=response.create_error_response( code=error.BAD_REQUEST_CODE, message='Bad Request')) result = track_crop.add_track_crop_info({}, 1) assert result.status == http_status.BAD_REQUEST