"""Tests for physical product logic.""" from unittest.mock import MagicMock from oto import response from ows_product_physical.logic import product_physical from ows_product_physical.logic import product_physical_tracks from ows_product_physical.models import track as track_model def test_get_tracks_success(monkeypatch, valid_get_header): """Test get tracks success.""" monkeypatch.setattr( product_physical, 'fetch_by_id', value=MagicMock( return_value=response.Response())) monkeypatch.setattr( track_model, 'get_tracks', value=MagicMock( return_value=response.Response())) account_type = valid_get_header['Grass-Account-Type'] account_id = valid_get_header['Grass-Account-Id'] result = product_physical_tracks.get_tracks(1234, account_type, account_id) assert result.status == 200 assert product_physical.fetch_by_id.called assert track_model.get_tracks.called def test_get_tracks_fetch_by_id_fail(monkeypatch, valid_get_header): """Test get tracks fail when product fetch fails.""" monkeypatch.setattr( product_physical, 'fetch_by_id', value=MagicMock( return_value=response.create_error_response( code=400, message='whatever'))) monkeypatch.setattr( track_model, 'get_tracks', value=MagicMock( return_value=response.Response())) account_type = valid_get_header['Grass-Account-Type'] account_id = valid_get_header['Grass-Account-Id'] result = product_physical_tracks.get_tracks(1234, account_type, account_id) assert result.status == 400 assert product_physical.fetch_by_id.called assert not track_model.get_tracks.called