import pytest
import faker
import os
import tempfile


from app.main import app as flask_app


@pytest.fixture
def fake():
    return faker.Faker()


@pytest.fixture
def client():
    flask_app.config['TESTING'] = True

    with flask_app.test_client() as client:
        yield client


@pytest.fixture
def lastfm_response():
    return {
        "recenttracks": {
            "@attr": {
                "page": "1",
                "perPage": "1",
                "total": "229279",
                "totalPages": "229279",
                "user": "biahll"
            },
            "track": [
                {
                    "@attr": {
                        "nowplaying": "true"
                    },
                    "album": {
                        "#text": "My My My!",
                        "mbid": ""
                    },
                    "artist": {
                        "#text": "Mother's Daughter",
                        "mbid": ""
                    },
                    "image": [
                        {
                            "#text": "https: //lastfm.freetls.fastly.net/i/u/34s/2a96cbd8b46e442fc41c2b86b821562f.png",
                            "size": "small"
                        },
                        {
                            "#text": "https: //lastfm.freetls.fastly.net/i/u/64s/2a96cbd8b46e442fc41c2b86b821562f.png",
                            "size": "medium"
                        },
                        {
                            "#text": "https://lastfm.freetls.fastly.net/i/u/174s/2a96cbd8b46e442fc41c2b86b821562f.png",
                            "size": "large"
                        },
                        {
                            "#text": "https: //lastfm.freetls.fastly.net/i/u/300x300/2a96cbd8b46e442fc41c2b86b821562f.png",
                            "size": "extralarge"
                        }
                    ],
                    "mbid": "",
                    "name": "My My My!",
                    "streamable": "0",
                    "url": "https: //www.last.fm/music/Mother%27s+Daughter/_/My+My+My!"
                },
                {
                    "album": {
                        "#text": "Glory Days (Japan Edition)",
                        "mbid": ""
                    },
                    "artist": {
                        "#text": "Little Mix",
                        "mbid": "38f59974-2f4d-4bfa-b2e3-d2696de1b675"
                    },
                    "date": {
                        "#text": "16 Jul 2020,        22: 30",
                        "uts": "1594938632"
                    },
                    "image": [
                        {
                            "#text": "https: //lastfm.freetls.fastly.net/i/u/34s/9e824c0b80bbf5c24807f22d081566c4.jpg",
                            "size": "small"
                        },
                        {
                            "#text": "https://lastfm.freetls.fastly.net/i/u/64s/9e824c0b80bbf5c24807f22d081566c4.jpg",
                            "size": "medium"
                        },
                        {
                            "#text": "https://lastfm.freetls.fastly.net/i/u/174s/9e824c0b80bbf5c24807f22d081566c4.jpg",
                            "size": "large"
                        },
                        {
                            "#text": "https: //lastfm.freetls.fastly.net/i/u/300x300/9e824c0b80bbf5c24807f22d081566c4.jpg",
                            "size": "extralarge"
                        }
                    ],
                    "mbid": "02930d7b-3e67-41c5-9d6e-ad593228d441",
                    "name": "Shout Out to My Ex",
                    "streamable": "0",
                    "url": "https://www.last.fm/music/Little+Mix/_/Shout+Out+to+My+Ex"
                }
            ]
        }
    }

@pytest.fixture
def lastfm_empty_response():
    return {
        "recenttracks": {
            "@attr": {
                "page": "1",
                "perPage": "1",
                "total": "1",
                "totalPages": "1",
                "user": "biahll"
            },
            "track": []
        }
    }

@pytest.fixture
def lastfm_no_recent_tracks_response():
    return {}
