"""Release data model tests.""" from datetime import date from unittest.mock import MagicMock from unittest.mock import patch from api.models import release @patch('api.models.release.art_relations') def test_get_vendor_and_release(art_relations): """Test the upc to vendor ID and release ID lookup function.""" upc = '4321' vendor_id = '1234' release_id = '56785678' mock_context = MagicMock() mock_cursor = MagicMock() mock_context.__enter__.return_value = (mock_cursor, None) art_relations.context.return_value = mock_context mock_cursor.fetchone.return_value = (vendor_id, release_id) result = release.get_vendor_and_release(upc) assert result == (vendor_id, release_id) assert upc in mock_cursor.execute.call_args[0][1] @patch('api.models.release.art_relations') def test_get_release_date_and_currency_id(art_relations): """Test release date and currency ID lookup function.""" upc = '4321' advance_id = 2345 release_date = date(2016, 1, 2) currency_id = 2 mock_context = MagicMock() mock_cursor = MagicMock() mock_context.__enter__.return_value = (mock_cursor, None) art_relations.context.return_value = mock_context mock_cursor.fetchone.return_value = (release_date, currency_id) result = release.get_release_date_and_currency_id(upc, advance_id) assert result == (release_date, currency_id) assert { 'upc': upc, 'advance_id': advance_id} == mock_cursor.execute.call_args[0][1] @patch('api.models.release.art_relations') def test_get_exchange_rate(art_relations): """Test exchange rate lookup function.""" currency_id = 2 release_date = date(2016, 1, 2) exchange_rate = 0.5 mock_context = MagicMock() mock_cursor = MagicMock() mock_context.__enter__.return_value = (mock_cursor, None) art_relations.context.return_value = mock_context mock_cursor.fetchone.return_value = (exchange_rate,) result = release.get_exchange_rate(currency_id, release_date) assert result == exchange_rate assert { 'currency_from': 2, 'year': 2016, 'month': 1} == mock_cursor.execute.call_args[0][1] @patch('api.models.release.art_relations') def test_get_releases_by_vendor_id(art_relations): """Test upcs lookup function.""" vandor_id = 12345 rows = ( (842914078023, 'Ultimate Predator (censored)'), (842914078030, 'Ultimate Predator'), (884385048839, 'Mysteries of the Apocalypse')) rows_transformed = [] for upc, name in rows: rows_transformed.append( { 'upc': upc, 'name': name } ) mock_context = MagicMock() mock_cursor = MagicMock() mock_context.__enter__.return_value = (mock_cursor, None) art_relations.context.return_value = mock_context mock_cursor.fetchall.return_value = rows result = release.get_releases_by_vendor_id(vandor_id) assert result == rows_transformed