"""Tests for Get Image Status Handler.""" import json import pytest from images import response from tests.factories import image_assets from tests.factories import image_status from tests.utils import db @pytest.fixture def import_asset_id(): """Fake import asset id for testing.""" return 123 def test_get_image_status_on_image_success( client, import_asset_id, import_asset_detail_id, test_schema, expected_url): """Test that the response body from GET /image//status. Should contain the expected image status data. """ import_asset = image_status.ImportAssetFactory.build( id=import_asset_id, result='success') import_asset_detail = image_assets.ImportAssetDetailFactory.build( id=import_asset_detail_id) image_asset = image_assets.ImageAssetsFactory.build() release_cover_images = image_assets.ReleaseCoverImagesFactory.build() db.seed_models([ import_asset, import_asset_detail, image_asset, release_cover_images]) res = client.get('/image/{0}/status'.format(import_asset_id)) import_asset_response = json.loads(res.data.decode('utf-8')) assert res.status_code == 200 assert import_asset_response == { 'filename': import_asset.filename, 'result': import_asset.result, 'status': import_asset.status, 'path': expected_url, 'import_asset_id': import_asset.id} def test_get_image_status_on_image_not_success( client, import_asset_id, test_schema): """Test that the response body from GET /image//status. Should contain correct response body and have 200 status. """ seed_asset = image_status.ImportAssetFactory.build(id=import_asset_id) db.seed_models(seed_asset) res = client.get('/image/{0}/status'.format(import_asset_id)) import_asset = json.loads(res.data.decode('utf-8')) assert res.status_code == 200 assert import_asset == { 'filename': seed_asset.filename, 'result': seed_asset.result, 'status': seed_asset.status, 'path': None, 'import_asset_id': seed_asset.id} def test_get_image_status_not_found(client, import_asset_id, test_schema): """Test that the response body from GET /image//status. Should contain a not found message for non-existant image assets. """ res = client.get('/image/{0}/status'.format(import_asset_id)) import_asset = json.loads(res.data.decode('utf-8')) assert res.status_code == 404 assert import_asset == { 'code': response.ERROR_CODE_NOT_FOUND, 'message': 'image asset not found'}