From f79562cbd5f3c4153ae9e2281289da6456a93c20 Mon Sep 17 00:00:00 2001 From: Felipe Allegretti Date: Sat, 11 Jan 2025 19:53:57 +0100 Subject: [PATCH] WIP --- .github/workflows/check.yml | 35 +- .github/workflows/tests.yml | 35 + poetry.lock | 336 ++--- pyproject.toml | 5 +- tests/clubs/test_clubs_players.py | 57 - tests/clubs/test_clubs_profile.py | 74 - tests/clubs/test_clubs_search.py | 50 - tests/competitions/test_competitions_clubs.py | 35 - .../competitions/test_competitions_search.py | 52 - tests/conftest.py | 57 +- tests/data/clubs/players/131_2010.json | 683 +++++++++ tests/data/clubs/players/131_None.json | 543 +++++++ tests/data/clubs/players/210_2017.json | 1274 +++++++++++++++++ tests/data/clubs/players/27_2019.json | 744 ++++++++++ tests/data/clubs/players/31_2018.json | 761 ++++++++++ tests/data/clubs/players/5_2003.json | 734 ++++++++++ tests/data/clubs/profile/131.json | 66 + tests/data/clubs/profile/210.json | 39 + tests/data/clubs/profile/27.json | 60 + tests/data/clubs/profile/31.json | 51 + tests/data/clubs/profile/5.json | 51 + tests/data/clubs/search/Barcelona.json | 87 ++ tests/data/clubs/search/Bayern.json | 87 ++ "tests/data/clubs/search/Gr\303\252mio.json" | 87 ++ tests/data/clubs/search/Liverpool.json | 87 ++ tests/data/clubs/search/Milan.json | 87 ++ tests/data/competitions/clubs/BRA1.json | 87 ++ tests/data/competitions/clubs/ES1.json | 87 ++ tests/data/competitions/clubs/GB1.json | 87 ++ .../search/Brasileir\303\243o.json" | 47 + tests/data/competitions/search/La Liga.json | 47 + .../competitions/search/Premier League.json | 107 ++ tests/data/players/achievements/28003.json | 1135 +++++++++++++++ tests/data/players/achievements/3373.json | 281 ++++ tests/data/players/achievements/68290.json | 509 +++++++ tests/data/players/achievements/8198.json | 1027 +++++++++++++ tests/data/players/injuries/28003.json | 175 +++ tests/data/players/injuries/3373.json | 152 ++ tests/data/players/injuries/68290.json | 175 +++ tests/data/players/injuries/8198.json | 170 +++ tests/data/players/jersey_numbers/28003.json | 260 ++++ tests/data/players/jersey_numbers/3373.json | 175 +++ tests/data/players/jersey_numbers/68290.json | 165 +++ tests/data/players/jersey_numbers/8198.json | 270 ++++ tests/data/players/market_value/28003.json | 350 +++++ tests/data/players/market_value/3373.json | 147 ++ tests/data/players/market_value/68290.json | 315 ++++ tests/data/players/market_value/8198.json | 350 +++++ tests/data/players/profile/28003.json | 71 + tests/data/players/profile/3373.json | 85 ++ tests/data/players/profile/68290.json | 60 + tests/data/players/profile/8198.json | 58 + tests/data/players/search/Cristiano.json | 151 ++ tests/data/players/search/Messi.json | 150 ++ tests/data/players/search/Neymar.json | 133 ++ tests/data/players/search/Ronaldo.json | 152 ++ tests/data/players/stats/28003.json | 1110 ++++++++++++++ tests/data/players/stats/3373.json | 785 ++++++++++ tests/data/players/stats/68290.json | 824 +++++++++++ tests/data/players/stats/8198.json | 1240 ++++++++++++++++ tests/data/players/transfers/28003.json | 137 ++ tests/data/players/transfers/3373.json | 166 +++ tests/data/players/transfers/68290.json | 70 + tests/data/players/transfers/8198.json | 201 +++ tests/players/test_players_achievements.py | 49 - tests/players/test_players_injuries.py | 43 - tests/players/test_players_market_value.py | 62 - tests/players/test_players_profile.py | 216 --- tests/players/test_players_search.py | 54 - tests/players/test_players_stats.py | 86 -- tests/players/test_players_transfers.py | 48 - tests/services/test_clubs.py | 60 + tests/services/test_competitions.py | 36 + tests/services/test_players.py | 156 ++ 74 files changed, 17448 insertions(+), 1050 deletions(-) create mode 100644 .github/workflows/tests.yml delete mode 100644 tests/clubs/test_clubs_players.py delete mode 100644 tests/clubs/test_clubs_profile.py delete mode 100644 tests/clubs/test_clubs_search.py delete mode 100644 tests/competitions/test_competitions_clubs.py delete mode 100644 tests/competitions/test_competitions_search.py create mode 100644 tests/data/clubs/players/131_2010.json create mode 100644 tests/data/clubs/players/131_None.json create mode 100644 tests/data/clubs/players/210_2017.json create mode 100644 tests/data/clubs/players/27_2019.json create mode 100644 tests/data/clubs/players/31_2018.json create mode 100644 tests/data/clubs/players/5_2003.json create mode 100644 tests/data/clubs/profile/131.json create mode 100644 tests/data/clubs/profile/210.json create mode 100644 tests/data/clubs/profile/27.json create mode 100644 tests/data/clubs/profile/31.json create mode 100644 tests/data/clubs/profile/5.json create mode 100644 tests/data/clubs/search/Barcelona.json create mode 100644 tests/data/clubs/search/Bayern.json create mode 100644 "tests/data/clubs/search/Gr\303\252mio.json" create mode 100644 tests/data/clubs/search/Liverpool.json create mode 100644 tests/data/clubs/search/Milan.json create mode 100644 tests/data/competitions/clubs/BRA1.json create mode 100644 tests/data/competitions/clubs/ES1.json create mode 100644 tests/data/competitions/clubs/GB1.json create mode 100644 "tests/data/competitions/search/Brasileir\303\243o.json" create mode 100644 tests/data/competitions/search/La Liga.json create mode 100644 tests/data/competitions/search/Premier League.json create mode 100644 tests/data/players/achievements/28003.json create mode 100644 tests/data/players/achievements/3373.json create mode 100644 tests/data/players/achievements/68290.json create mode 100644 tests/data/players/achievements/8198.json create mode 100644 tests/data/players/injuries/28003.json create mode 100644 tests/data/players/injuries/3373.json create mode 100644 tests/data/players/injuries/68290.json create mode 100644 tests/data/players/injuries/8198.json create mode 100644 tests/data/players/jersey_numbers/28003.json create mode 100644 tests/data/players/jersey_numbers/3373.json create mode 100644 tests/data/players/jersey_numbers/68290.json create mode 100644 tests/data/players/jersey_numbers/8198.json create mode 100644 tests/data/players/market_value/28003.json create mode 100644 tests/data/players/market_value/3373.json create mode 100644 tests/data/players/market_value/68290.json create mode 100644 tests/data/players/market_value/8198.json create mode 100644 tests/data/players/profile/28003.json create mode 100644 tests/data/players/profile/3373.json create mode 100644 tests/data/players/profile/68290.json create mode 100644 tests/data/players/profile/8198.json create mode 100644 tests/data/players/search/Cristiano.json create mode 100644 tests/data/players/search/Messi.json create mode 100644 tests/data/players/search/Neymar.json create mode 100644 tests/data/players/search/Ronaldo.json create mode 100644 tests/data/players/stats/28003.json create mode 100644 tests/data/players/stats/3373.json create mode 100644 tests/data/players/stats/68290.json create mode 100644 tests/data/players/stats/8198.json create mode 100644 tests/data/players/transfers/28003.json create mode 100644 tests/data/players/transfers/3373.json create mode 100644 tests/data/players/transfers/68290.json create mode 100644 tests/data/players/transfers/8198.json delete mode 100644 tests/players/test_players_achievements.py delete mode 100644 tests/players/test_players_injuries.py delete mode 100644 tests/players/test_players_market_value.py delete mode 100644 tests/players/test_players_profile.py delete mode 100644 tests/players/test_players_search.py delete mode 100644 tests/players/test_players_stats.py delete mode 100644 tests/players/test_players_transfers.py create mode 100644 tests/services/test_clubs.py create mode 100644 tests/services/test_competitions.py create mode 100644 tests/services/test_players.py diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 5d73a04..81968dd 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -1,4 +1,5 @@ name: Code Check + on: push: branches: [ main ] @@ -7,19 +8,27 @@ on: jobs: check: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest + steps: - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - - name: ruff - run: | - pip install ruff - ruff check . - - name: black - run: | - pip install black - black --check . - - name: interrogate + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.9.16' + cache: 'pip' + + - name: Install dependencies run: | - pip install interrogate - interrogate app/services -vv + python -m pip install --upgrade pip + pip install ruff black interrogate + + - name: Check code style with Ruff + run: ruff check . + + - name: Check formatting with Black + run: black --check . + + - name: Check docstring coverage with Interrogate + run: interrogate app/services -vv -f 100 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..d403f6a --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,35 @@ +name: Tests +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + tests: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v3 + + - uses: actions/setup-python@v4 + with: + python-version: "3.9.16" + + - name: Install Poetry + uses: snok/install-poetry@v1 + with: + version: 1.5.1 + virtualenvs-create: true + virtualenvs-in-project: true + + - name: Load cached dependencies + uses: actions/cache@v3 + with: + path: .venv + key: venv-${{ runner.os }}-${{ hashFiles('**/poetry.lock') }} + + - name: Install dependencies + run: poetry install --no-interaction --with tests + + - name: Run tests + run: poetry run pytest diff --git a/poetry.lock b/poetry.lock index a821668..f827e16 100644 --- a/poetry.lock +++ b/poetry.lock @@ -13,13 +13,13 @@ files = [ [[package]] name = "anyio" -version = "4.7.0" +version = "4.8.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.9" files = [ - {file = "anyio-4.7.0-py3-none-any.whl", hash = "sha256:ea60c3723ab42ba6fff7e8ccb0488c898ec538ff4df1f1d5e642c3601d07e352"}, - {file = "anyio-4.7.0.tar.gz", hash = "sha256:2f834749c602966b7d456a7567cafcb309f96482b5081d14ac93ccd457f9dd48"}, + {file = "anyio-4.8.0-py3-none-any.whl", hash = "sha256:b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a"}, + {file = "anyio-4.8.0.tar.gz", hash = "sha256:1d9fe889df5212298c0c0723fa20479d1b94883a2df44bd3897aa91083316f7a"}, ] [package.dependencies] @@ -30,7 +30,7 @@ typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} [package.extras] doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21)"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21)"] trio = ["trio (>=0.26.1)"] [[package]] @@ -500,17 +500,6 @@ traitlets = ">=4" [package.extras] test = ["pytest"] -[[package]] -name = "contextlib2" -version = "21.6.0" -description = "Backports and enhancements for the contextlib module" -optional = false -python-versions = ">=3.6" -files = [ - {file = "contextlib2-21.6.0-py2.py3-none-any.whl", hash = "sha256:3fbdb64466afd23abaf6c977627b75b6139a5a3e8ce38405c5b413aed7a0471f"}, - {file = "contextlib2-21.6.0.tar.gz", hash = "sha256:ab1e2bfe1d01d968e1b7e8d9023bc51ef3509bba217bb730cee3827e1ee82869"}, -] - [[package]] name = "coverage" version = "7.6.10" @@ -1395,13 +1384,13 @@ files = [ [[package]] name = "limits" -version = "3.14.1" +version = "4.0.0" description = "Rate limiting utilities" optional = false python-versions = ">=3.9" files = [ - {file = "limits-3.14.1-py3-none-any.whl", hash = "sha256:051aca02da56e6932599a25cb8e70543959294f5d587d57bcd7e38df234e697b"}, - {file = "limits-3.14.1.tar.gz", hash = "sha256:cad16a9b3cf3924e27da48e78bdab33ef312ecb7194fdb50e509cc8111c8d0bb"}, + {file = "limits-4.0.0-py3-none-any.whl", hash = "sha256:0024ebe5a36c905fcff2d30a8e7680840b75ecdb989db10c526e9fabba529b58"}, + {file = "limits-4.0.0.tar.gz", hash = "sha256:0516cec7c0803e0e1ecd48ad2f75547b85e2be5fb343a24e033f1316f5487e31"}, ] [package.dependencies] @@ -2026,13 +2015,13 @@ files = [ [[package]] name = "pydantic" -version = "2.10.4" +version = "2.10.5" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.10.4-py3-none-any.whl", hash = "sha256:597e135ea68be3a37552fb524bc7d0d66dcf93d395acd93a00682f1efcb8ee3d"}, - {file = "pydantic-2.10.4.tar.gz", hash = "sha256:82f12e9723da6de4fe2ba888b5971157b3be7ad914267dea8f05f82b28254f06"}, + {file = "pydantic-2.10.5-py3-none-any.whl", hash = "sha256:4dd4e322dbe55472cb7ca7e73f4b63574eecccf2835ffa2af9021ce113c83c53"}, + {file = "pydantic-2.10.5.tar.gz", hash = "sha256:278b38dbbaec562011d659ee05f63346951b3a248a6f3642e1bc68894ea2b4ff"}, ] [package.dependencies] @@ -2178,13 +2167,13 @@ yaml = ["pyyaml (>=6.0.1)"] [[package]] name = "pygments" -version = "2.18.0" +version = "2.19.1" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" files = [ - {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, - {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, + {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, + {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, ] [package.extras] @@ -2741,20 +2730,6 @@ files = [ {file = "ruff-0.6.1.tar.gz", hash = "sha256:af3ffd8c6563acb8848d33cd19a69b9bfe943667f0419ca083f8ebe4224a3436"}, ] -[[package]] -name = "schema" -version = "0.7.5" -description = "Simple data validation library" -optional = false -python-versions = "*" -files = [ - {file = "schema-0.7.5-py2.py3-none-any.whl", hash = "sha256:f3ffdeeada09ec34bf40d7d79996d9f7175db93b7a5065de0faa7f41083c1e6c"}, - {file = "schema-0.7.5.tar.gz", hash = "sha256:f06717112c61895cabc4707752b88716e8420a8819d71404501e114f91043197"}, -] - -[package.dependencies] -contextlib2 = ">=0.5.5" - [[package]] name = "send2trash" version = "1.8.3" @@ -3135,82 +3110,82 @@ test = ["aiohttp (>=3.10.5)", "flake8 (>=5.0,<6.0)", "mypy (>=0.800)", "psutil", [[package]] name = "watchfiles" -version = "1.0.3" +version = "1.0.4" description = "Simple, modern and high performance file watching and code reload in python." optional = false python-versions = ">=3.9" files = [ - {file = "watchfiles-1.0.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:1da46bb1eefb5a37a8fb6fd52ad5d14822d67c498d99bda8754222396164ae42"}, - {file = "watchfiles-1.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2b961b86cd3973f5822826017cad7f5a75795168cb645c3a6b30c349094e02e3"}, - {file = "watchfiles-1.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34e87c7b3464d02af87f1059fedda5484e43b153ef519e4085fe1a03dd94801e"}, - {file = "watchfiles-1.0.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d9dd2b89a16cf7ab9c1170b5863e68de6bf83db51544875b25a5f05a7269e678"}, - {file = "watchfiles-1.0.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b4691234d31686dca133c920f94e478b548a8e7c750f28dbbc2e4333e0d3da9"}, - {file = "watchfiles-1.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:90b0fe1fcea9bd6e3084b44875e179b4adcc4057a3b81402658d0eb58c98edf8"}, - {file = "watchfiles-1.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0b90651b4cf9e158d01faa0833b073e2e37719264bcee3eac49fc3c74e7d304b"}, - {file = "watchfiles-1.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2e9fe695ff151b42ab06501820f40d01310fbd58ba24da8923ace79cf6d702d"}, - {file = "watchfiles-1.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62691f1c0894b001c7cde1195c03b7801aaa794a837bd6eef24da87d1542838d"}, - {file = "watchfiles-1.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:275c1b0e942d335fccb6014d79267d1b9fa45b5ac0639c297f1e856f2f532552"}, - {file = "watchfiles-1.0.3-cp310-cp310-win32.whl", hash = "sha256:06ce08549e49ba69ccc36fc5659a3d0ff4e3a07d542b895b8a9013fcab46c2dc"}, - {file = "watchfiles-1.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:f280b02827adc9d87f764972fbeb701cf5611f80b619c20568e1982a277d6146"}, - {file = "watchfiles-1.0.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ffe709b1d0bc2e9921257569675674cafb3a5f8af689ab9f3f2b3f88775b960f"}, - {file = "watchfiles-1.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:418c5ce332f74939ff60691e5293e27c206c8164ce2b8ce0d9abf013003fb7fe"}, - {file = "watchfiles-1.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f492d2907263d6d0d52f897a68647195bc093dafed14508a8d6817973586b6b"}, - {file = "watchfiles-1.0.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:48c9f3bc90c556a854f4cab6a79c16974099ccfa3e3e150673d82d47a4bc92c9"}, - {file = "watchfiles-1.0.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:75d3bcfa90454dba8df12adc86b13b6d85fda97d90e708efc036c2760cc6ba44"}, - {file = "watchfiles-1.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5691340f259b8f76b45fb31b98e594d46c36d1dc8285efa7975f7f50230c9093"}, - {file = "watchfiles-1.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1e263cc718545b7f897baeac1f00299ab6fabe3e18caaacacb0edf6d5f35513c"}, - {file = "watchfiles-1.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c6cf7709ed3e55704cc06f6e835bf43c03bc8e3cb8ff946bf69a2e0a78d9d77"}, - {file = "watchfiles-1.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:703aa5e50e465be901e0e0f9d5739add15e696d8c26c53bc6fc00eb65d7b9469"}, - {file = "watchfiles-1.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bfcae6aecd9e0cb425f5145afee871465b98b75862e038d42fe91fd753ddd780"}, - {file = "watchfiles-1.0.3-cp311-cp311-win32.whl", hash = "sha256:6a76494d2c5311584f22416c5a87c1e2cb954ff9b5f0988027bc4ef2a8a67181"}, - {file = "watchfiles-1.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:cf745cbfad6389c0e331786e5fe9ae3f06e9d9c2ce2432378e1267954793975c"}, - {file = "watchfiles-1.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:2dcc3f60c445f8ce14156854a072ceb36b83807ed803d37fdea2a50e898635d6"}, - {file = "watchfiles-1.0.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:93436ed550e429da007fbafb723e0769f25bae178fbb287a94cb4ccdf42d3af3"}, - {file = "watchfiles-1.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c18f3502ad0737813c7dad70e3e1cc966cc147fbaeef47a09463bbffe70b0a00"}, - {file = "watchfiles-1.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a5bc3ca468bb58a2ef50441f953e1f77b9a61bd1b8c347c8223403dc9b4ac9a"}, - {file = "watchfiles-1.0.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0d1ec043f02ca04bf21b1b32cab155ce90c651aaf5540db8eb8ad7f7e645cba8"}, - {file = "watchfiles-1.0.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f58d3bfafecf3d81c15d99fc0ecf4319e80ac712c77cf0ce2661c8cf8bf84066"}, - {file = "watchfiles-1.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1df924ba82ae9e77340101c28d56cbaff2c991bd6fe8444a545d24075abb0a87"}, - {file = "watchfiles-1.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:632a52dcaee44792d0965c17bdfe5dc0edad5b86d6a29e53d6ad4bf92dc0ff49"}, - {file = "watchfiles-1.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bf4b459d94a0387617a1b499f314aa04d8a64b7a0747d15d425b8c8b151da0"}, - {file = "watchfiles-1.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ca94c85911601b097d53caeeec30201736ad69a93f30d15672b967558df02885"}, - {file = "watchfiles-1.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:65ab1fb635476f6170b07e8e21db0424de94877e4b76b7feabfe11f9a5fc12b5"}, - {file = "watchfiles-1.0.3-cp312-cp312-win32.whl", hash = "sha256:49bc1bc26abf4f32e132652f4b3bfeec77d8f8f62f57652703ef127e85a3e38d"}, - {file = "watchfiles-1.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:48681c86f2cb08348631fed788a116c89c787fdf1e6381c5febafd782f6c3b44"}, - {file = "watchfiles-1.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:9e080cf917b35b20c889225a13f290f2716748362f6071b859b60b8847a6aa43"}, - {file = "watchfiles-1.0.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:e153a690b7255c5ced17895394b4f109d5dcc2a4f35cb809374da50f0e5c456a"}, - {file = "watchfiles-1.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ac1be85fe43b4bf9a251978ce5c3bb30e1ada9784290441f5423a28633a958a7"}, - {file = "watchfiles-1.0.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2ec98e31e1844eac860e70d9247db9d75440fc8f5f679c37d01914568d18721"}, - {file = "watchfiles-1.0.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0179252846be03fa97d4d5f8233d1c620ef004855f0717712ae1c558f1974a16"}, - {file = "watchfiles-1.0.3-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:995c374e86fa82126c03c5b4630c4e312327ecfe27761accb25b5e1d7ab50ec8"}, - {file = "watchfiles-1.0.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29b9cb35b7f290db1c31fb2fdf8fc6d3730cfa4bca4b49761083307f441cac5a"}, - {file = "watchfiles-1.0.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f8dc09ae69af50bead60783180f656ad96bd33ffbf6e7a6fce900f6d53b08f1"}, - {file = "watchfiles-1.0.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:489b80812f52a8d8c7b0d10f0d956db0efed25df2821c7a934f6143f76938bd6"}, - {file = "watchfiles-1.0.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:228e2247de583475d4cebf6b9af5dc9918abb99d1ef5ee737155bb39fb33f3c0"}, - {file = "watchfiles-1.0.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:1550be1a5cb3be08a3fb84636eaafa9b7119b70c71b0bed48726fd1d5aa9b868"}, - {file = "watchfiles-1.0.3-cp313-cp313-win32.whl", hash = "sha256:16db2d7e12f94818cbf16d4c8938e4d8aaecee23826344addfaaa671a1527b07"}, - {file = "watchfiles-1.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:160eff7d1267d7b025e983ca8460e8cc67b328284967cbe29c05f3c3163711a3"}, - {file = "watchfiles-1.0.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c05b021f7b5aa333124f2a64d56e4cb9963b6efdf44e8d819152237bbd93ba15"}, - {file = "watchfiles-1.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:310505ad305e30cb6c5f55945858cdbe0eb297fc57378f29bacceb534ac34199"}, - {file = "watchfiles-1.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ddff3f8b9fa24a60527c137c852d0d9a7da2a02cf2151650029fdc97c852c974"}, - {file = "watchfiles-1.0.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:46e86ed457c3486080a72bc837300dd200e18d08183f12b6ca63475ab64ed651"}, - {file = "watchfiles-1.0.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f79fe7993e230a12172ce7d7c7db061f046f672f2b946431c81aff8f60b2758b"}, - {file = "watchfiles-1.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea2b51c5f38bad812da2ec0cd7eec09d25f521a8b6b6843cbccedd9a1d8a5c15"}, - {file = "watchfiles-1.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fe4e740ea94978b2b2ab308cbf9270a246bcbb44401f77cc8740348cbaeac3d"}, - {file = "watchfiles-1.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9af037d3df7188ae21dc1c7624501f2f90d81be6550904e07869d8d0e6766655"}, - {file = "watchfiles-1.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:52bb50a4c4ca2a689fdba84ba8ecc6a4e6210f03b6af93181bb61c4ec3abaf86"}, - {file = "watchfiles-1.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c14a07bdb475eb696f85c715dbd0f037918ccbb5248290448488a0b4ef201aad"}, - {file = "watchfiles-1.0.3-cp39-cp39-win32.whl", hash = "sha256:be37f9b1f8934cd9e7eccfcb5612af9fb728fecbe16248b082b709a9d1b348bf"}, - {file = "watchfiles-1.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:ef9ec8068cf23458dbf36a08e0c16f0a2df04b42a8827619646637be1769300a"}, - {file = "watchfiles-1.0.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:84fac88278f42d61c519a6c75fb5296fd56710b05bbdcc74bdf85db409a03780"}, - {file = "watchfiles-1.0.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c68be72b1666d93b266714f2d4092d78dc53bd11cf91ed5a3c16527587a52e29"}, - {file = "watchfiles-1.0.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:889a37e2acf43c377b5124166bece139b4c731b61492ab22e64d371cce0e6e80"}, - {file = "watchfiles-1.0.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ca05cacf2e5c4a97d02a2878a24020daca21dbb8823b023b978210a75c79098"}, - {file = "watchfiles-1.0.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:8af4b582d5fc1b8465d1d2483e5e7b880cc1a4e99f6ff65c23d64d070867ac58"}, - {file = "watchfiles-1.0.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:127de3883bdb29dbd3b21f63126bb8fa6e773b74eaef46521025a9ce390e1073"}, - {file = "watchfiles-1.0.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:713f67132346bdcb4c12df185c30cf04bdf4bf6ea3acbc3ace0912cab6b7cb8c"}, - {file = "watchfiles-1.0.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abd85de513eb83f5ec153a802348e7a5baa4588b818043848247e3e8986094e8"}, - {file = "watchfiles-1.0.3.tar.gz", hash = "sha256:f3ff7da165c99a5412fe5dd2304dd2dbaaaa5da718aad942dcb3a178eaa70c56"}, + {file = "watchfiles-1.0.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:ba5bb3073d9db37c64520681dd2650f8bd40902d991e7b4cfaeece3e32561d08"}, + {file = "watchfiles-1.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9f25d0ba0fe2b6d2c921cf587b2bf4c451860086534f40c384329fb96e2044d1"}, + {file = "watchfiles-1.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47eb32ef8c729dbc4f4273baece89398a4d4b5d21a1493efea77a17059f4df8a"}, + {file = "watchfiles-1.0.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:076f293100db3b0b634514aa0d294b941daa85fc777f9c698adb1009e5aca0b1"}, + {file = "watchfiles-1.0.4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1eacd91daeb5158c598fe22d7ce66d60878b6294a86477a4715154990394c9b3"}, + {file = "watchfiles-1.0.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:13c2ce7b72026cfbca120d652f02c7750f33b4c9395d79c9790b27f014c8a5a2"}, + {file = "watchfiles-1.0.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:90192cdc15ab7254caa7765a98132a5a41471cf739513cc9bcf7d2ffcc0ec7b2"}, + {file = "watchfiles-1.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:278aaa395f405972e9f523bd786ed59dfb61e4b827856be46a42130605fd0899"}, + {file = "watchfiles-1.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a462490e75e466edbb9fc4cd679b62187153b3ba804868452ef0577ec958f5ff"}, + {file = "watchfiles-1.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8d0d0630930f5cd5af929040e0778cf676a46775753e442a3f60511f2409f48f"}, + {file = "watchfiles-1.0.4-cp310-cp310-win32.whl", hash = "sha256:cc27a65069bcabac4552f34fd2dce923ce3fcde0721a16e4fb1b466d63ec831f"}, + {file = "watchfiles-1.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:8b1f135238e75d075359cf506b27bf3f4ca12029c47d3e769d8593a2024ce161"}, + {file = "watchfiles-1.0.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:2a9f93f8439639dc244c4d2902abe35b0279102bca7bbcf119af964f51d53c19"}, + {file = "watchfiles-1.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9eea33ad8c418847dd296e61eb683cae1c63329b6d854aefcd412e12d94ee235"}, + {file = "watchfiles-1.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:31f1a379c9dcbb3f09cf6be1b7e83b67c0e9faabed0471556d9438a4a4e14202"}, + {file = "watchfiles-1.0.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ab594e75644421ae0a2484554832ca5895f8cab5ab62de30a1a57db460ce06c6"}, + {file = "watchfiles-1.0.4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc2eb5d14a8e0d5df7b36288979176fbb39672d45184fc4b1c004d7c3ce29317"}, + {file = "watchfiles-1.0.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f68d8e9d5a321163ddacebe97091000955a1b74cd43724e346056030b0bacee"}, + {file = "watchfiles-1.0.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f9ce064e81fe79faa925ff03b9f4c1a98b0bbb4a1b8c1b015afa93030cb21a49"}, + {file = "watchfiles-1.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b77d5622ac5cc91d21ae9c2b284b5d5c51085a0bdb7b518dba263d0af006132c"}, + {file = "watchfiles-1.0.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1941b4e39de9b38b868a69b911df5e89dc43767feeda667b40ae032522b9b5f1"}, + {file = "watchfiles-1.0.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4f8c4998506241dedf59613082d1c18b836e26ef2a4caecad0ec41e2a15e4226"}, + {file = "watchfiles-1.0.4-cp311-cp311-win32.whl", hash = "sha256:4ebbeca9360c830766b9f0df3640b791be569d988f4be6c06d6fae41f187f105"}, + {file = "watchfiles-1.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:05d341c71f3d7098920f8551d4df47f7b57ac5b8dad56558064c3431bdfc0b74"}, + {file = "watchfiles-1.0.4-cp311-cp311-win_arm64.whl", hash = "sha256:32b026a6ab64245b584acf4931fe21842374da82372d5c039cba6bf99ef722f3"}, + {file = "watchfiles-1.0.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:229e6ec880eca20e0ba2f7e2249c85bae1999d330161f45c78d160832e026ee2"}, + {file = "watchfiles-1.0.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5717021b199e8353782dce03bd8a8f64438832b84e2885c4a645f9723bf656d9"}, + {file = "watchfiles-1.0.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0799ae68dfa95136dde7c472525700bd48777875a4abb2ee454e3ab18e9fc712"}, + {file = "watchfiles-1.0.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:43b168bba889886b62edb0397cab5b6490ffb656ee2fcb22dec8bfeb371a9e12"}, + {file = "watchfiles-1.0.4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb2c46e275fbb9f0c92e7654b231543c7bbfa1df07cdc4b99fa73bedfde5c844"}, + {file = "watchfiles-1.0.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:857f5fc3aa027ff5e57047da93f96e908a35fe602d24f5e5d8ce64bf1f2fc733"}, + {file = "watchfiles-1.0.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55ccfd27c497b228581e2838d4386301227fc0cb47f5a12923ec2fe4f97b95af"}, + {file = "watchfiles-1.0.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c11ea22304d17d4385067588123658e9f23159225a27b983f343fcffc3e796a"}, + {file = "watchfiles-1.0.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:74cb3ca19a740be4caa18f238298b9d472c850f7b2ed89f396c00a4c97e2d9ff"}, + {file = "watchfiles-1.0.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c7cce76c138a91e720d1df54014a047e680b652336e1b73b8e3ff3158e05061e"}, + {file = "watchfiles-1.0.4-cp312-cp312-win32.whl", hash = "sha256:b045c800d55bc7e2cadd47f45a97c7b29f70f08a7c2fa13241905010a5493f94"}, + {file = "watchfiles-1.0.4-cp312-cp312-win_amd64.whl", hash = "sha256:c2acfa49dd0ad0bf2a9c0bb9a985af02e89345a7189be1efc6baa085e0f72d7c"}, + {file = "watchfiles-1.0.4-cp312-cp312-win_arm64.whl", hash = "sha256:22bb55a7c9e564e763ea06c7acea24fc5d2ee5dfc5dafc5cfbedfe58505e9f90"}, + {file = "watchfiles-1.0.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:8012bd820c380c3d3db8435e8cf7592260257b378b649154a7948a663b5f84e9"}, + {file = "watchfiles-1.0.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:aa216f87594f951c17511efe5912808dfcc4befa464ab17c98d387830ce07b60"}, + {file = "watchfiles-1.0.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62c9953cf85529c05b24705639ffa390f78c26449e15ec34d5339e8108c7c407"}, + {file = "watchfiles-1.0.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7cf684aa9bba4cd95ecb62c822a56de54e3ae0598c1a7f2065d51e24637a3c5d"}, + {file = "watchfiles-1.0.4-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f44a39aee3cbb9b825285ff979ab887a25c5d336e5ec3574f1506a4671556a8d"}, + {file = "watchfiles-1.0.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38320582736922be8c865d46520c043bff350956dfc9fbaee3b2df4e1740a4b"}, + {file = "watchfiles-1.0.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39f4914548b818540ef21fd22447a63e7be6e24b43a70f7642d21f1e73371590"}, + {file = "watchfiles-1.0.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f12969a3765909cf5dc1e50b2436eb2c0e676a3c75773ab8cc3aa6175c16e902"}, + {file = "watchfiles-1.0.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:0986902677a1a5e6212d0c49b319aad9cc48da4bd967f86a11bde96ad9676ca1"}, + {file = "watchfiles-1.0.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:308ac265c56f936636e3b0e3f59e059a40003c655228c131e1ad439957592303"}, + {file = "watchfiles-1.0.4-cp313-cp313-win32.whl", hash = "sha256:aee397456a29b492c20fda2d8961e1ffb266223625346ace14e4b6d861ba9c80"}, + {file = "watchfiles-1.0.4-cp313-cp313-win_amd64.whl", hash = "sha256:d6097538b0ae5c1b88c3b55afa245a66793a8fec7ada6755322e465fb1a0e8cc"}, + {file = "watchfiles-1.0.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:d3452c1ec703aa1c61e15dfe9d482543e4145e7c45a6b8566978fbb044265a21"}, + {file = "watchfiles-1.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7b75fee5a16826cf5c46fe1c63116e4a156924d668c38b013e6276f2582230f0"}, + {file = "watchfiles-1.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e997802d78cdb02623b5941830ab06f8860038faf344f0d288d325cc9c5d2ff"}, + {file = "watchfiles-1.0.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e0611d244ce94d83f5b9aff441ad196c6e21b55f77f3c47608dcf651efe54c4a"}, + {file = "watchfiles-1.0.4-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9745a4210b59e218ce64c91deb599ae8775c8a9da4e95fb2ee6fe745fc87d01a"}, + {file = "watchfiles-1.0.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4810ea2ae622add560f4aa50c92fef975e475f7ac4900ce5ff5547b2434642d8"}, + {file = "watchfiles-1.0.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:740d103cd01458f22462dedeb5a3382b7f2c57d07ff033fbc9465919e5e1d0f3"}, + {file = "watchfiles-1.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdbd912a61543a36aef85e34f212e5d2486e7c53ebfdb70d1e0b060cc50dd0bf"}, + {file = "watchfiles-1.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0bc80d91ddaf95f70258cf78c471246846c1986bcc5fd33ccc4a1a67fcb40f9a"}, + {file = "watchfiles-1.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ab0311bb2ffcd9f74b6c9de2dda1612c13c84b996d032cd74799adb656af4e8b"}, + {file = "watchfiles-1.0.4-cp39-cp39-win32.whl", hash = "sha256:02a526ee5b5a09e8168314c905fc545c9bc46509896ed282aeb5a8ba9bd6ca27"}, + {file = "watchfiles-1.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:a5ae5706058b27c74bac987d615105da17724172d5aaacc6c362a40599b6de43"}, + {file = "watchfiles-1.0.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cdcc92daeae268de1acf5b7befcd6cfffd9a047098199056c72e4623f531de18"}, + {file = "watchfiles-1.0.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d8d3d9203705b5797f0af7e7e5baa17c8588030aaadb7f6a86107b7247303817"}, + {file = "watchfiles-1.0.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bdef5a1be32d0b07dcea3318a0be95d42c98ece24177820226b56276e06b63b0"}, + {file = "watchfiles-1.0.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:342622287b5604ddf0ed2d085f3a589099c9ae8b7331df3ae9845571586c4f3d"}, + {file = "watchfiles-1.0.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9fe37a2de80aa785d340f2980276b17ef697ab8db6019b07ee4fd28a8359d2f3"}, + {file = "watchfiles-1.0.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:9d1ef56b56ed7e8f312c934436dea93bfa3e7368adfcf3df4c0da6d4de959a1e"}, + {file = "watchfiles-1.0.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95b42cac65beae3a362629950c444077d1b44f1790ea2772beaea95451c086bb"}, + {file = "watchfiles-1.0.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e0227b8ed9074c6172cf55d85b5670199c99ab11fd27d2c473aa30aec67ee42"}, + {file = "watchfiles-1.0.4.tar.gz", hash = "sha256:6ba473efd11062d73e4f00c2b730255f9c1bdd73cd5f9fe5b5da8dbd4a717205"}, ] [package.dependencies] @@ -3356,76 +3331,83 @@ files = [ [[package]] name = "wrapt" -version = "1.17.0" +version = "1.17.1" description = "Module for decorators, wrappers and monkey patching." optional = false python-versions = ">=3.8" files = [ - {file = "wrapt-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2a0c23b8319848426f305f9cb0c98a6e32ee68a36264f45948ccf8e7d2b941f8"}, - {file = "wrapt-1.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1ca5f060e205f72bec57faae5bd817a1560fcfc4af03f414b08fa29106b7e2d"}, - {file = "wrapt-1.17.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e185ec6060e301a7e5f8461c86fb3640a7beb1a0f0208ffde7a65ec4074931df"}, - {file = "wrapt-1.17.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb90765dd91aed05b53cd7a87bd7f5c188fcd95960914bae0d32c5e7f899719d"}, - {file = "wrapt-1.17.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:879591c2b5ab0a7184258274c42a126b74a2c3d5a329df16d69f9cee07bba6ea"}, - {file = "wrapt-1.17.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fce6fee67c318fdfb7f285c29a82d84782ae2579c0e1b385b7f36c6e8074fffb"}, - {file = "wrapt-1.17.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0698d3a86f68abc894d537887b9bbf84d29bcfbc759e23f4644be27acf6da301"}, - {file = "wrapt-1.17.0-cp310-cp310-win32.whl", hash = "sha256:69d093792dc34a9c4c8a70e4973a3361c7a7578e9cd86961b2bbf38ca71e4e22"}, - {file = "wrapt-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:f28b29dc158ca5d6ac396c8e0a2ef45c4e97bb7e65522bfc04c989e6fe814575"}, - {file = "wrapt-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:74bf625b1b4caaa7bad51d9003f8b07a468a704e0644a700e936c357c17dd45a"}, - {file = "wrapt-1.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f2a28eb35cf99d5f5bd12f5dd44a0f41d206db226535b37b0c60e9da162c3ed"}, - {file = "wrapt-1.17.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81b1289e99cf4bad07c23393ab447e5e96db0ab50974a280f7954b071d41b489"}, - {file = "wrapt-1.17.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f2939cd4a2a52ca32bc0b359015718472d7f6de870760342e7ba295be9ebaf9"}, - {file = "wrapt-1.17.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6a9653131bda68a1f029c52157fd81e11f07d485df55410401f745007bd6d339"}, - {file = "wrapt-1.17.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4e4b4385363de9052dac1a67bfb535c376f3d19c238b5f36bddc95efae15e12d"}, - {file = "wrapt-1.17.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bdf62d25234290db1837875d4dceb2151e4ea7f9fff2ed41c0fde23ed542eb5b"}, - {file = "wrapt-1.17.0-cp311-cp311-win32.whl", hash = "sha256:5d8fd17635b262448ab8f99230fe4dac991af1dabdbb92f7a70a6afac8a7e346"}, - {file = "wrapt-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:92a3d214d5e53cb1db8b015f30d544bc9d3f7179a05feb8f16df713cecc2620a"}, - {file = "wrapt-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:89fc28495896097622c3fc238915c79365dd0ede02f9a82ce436b13bd0ab7569"}, - {file = "wrapt-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:875d240fdbdbe9e11f9831901fb8719da0bd4e6131f83aa9f69b96d18fae7504"}, - {file = "wrapt-1.17.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5ed16d95fd142e9c72b6c10b06514ad30e846a0d0917ab406186541fe68b451"}, - {file = "wrapt-1.17.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18b956061b8db634120b58f668592a772e87e2e78bc1f6a906cfcaa0cc7991c1"}, - {file = "wrapt-1.17.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:daba396199399ccabafbfc509037ac635a6bc18510ad1add8fd16d4739cdd106"}, - {file = "wrapt-1.17.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4d63f4d446e10ad19ed01188d6c1e1bb134cde8c18b0aa2acfd973d41fcc5ada"}, - {file = "wrapt-1.17.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8a5e7cc39a45fc430af1aefc4d77ee6bad72c5bcdb1322cfde852c15192b8bd4"}, - {file = "wrapt-1.17.0-cp312-cp312-win32.whl", hash = "sha256:0a0a1a1ec28b641f2a3a2c35cbe86c00051c04fffcfcc577ffcdd707df3f8635"}, - {file = "wrapt-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:3c34f6896a01b84bab196f7119770fd8466c8ae3dfa73c59c0bb281e7b588ce7"}, - {file = "wrapt-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:714c12485aa52efbc0fc0ade1e9ab3a70343db82627f90f2ecbc898fdf0bb181"}, - {file = "wrapt-1.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da427d311782324a376cacb47c1a4adc43f99fd9d996ffc1b3e8529c4074d393"}, - {file = "wrapt-1.17.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba1739fb38441a27a676f4de4123d3e858e494fac05868b7a281c0a383c098f4"}, - {file = "wrapt-1.17.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e711fc1acc7468463bc084d1b68561e40d1eaa135d8c509a65dd534403d83d7b"}, - {file = "wrapt-1.17.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:140ea00c87fafc42739bd74a94a5a9003f8e72c27c47cd4f61d8e05e6dec8721"}, - {file = "wrapt-1.17.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:73a96fd11d2b2e77d623a7f26e004cc31f131a365add1ce1ce9a19e55a1eef90"}, - {file = "wrapt-1.17.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0b48554952f0f387984da81ccfa73b62e52817a4386d070c75e4db7d43a28c4a"}, - {file = "wrapt-1.17.0-cp313-cp313-win32.whl", hash = "sha256:498fec8da10e3e62edd1e7368f4b24aa362ac0ad931e678332d1b209aec93045"}, - {file = "wrapt-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:fd136bb85f4568fffca995bd3c8d52080b1e5b225dbf1c2b17b66b4c5fa02838"}, - {file = "wrapt-1.17.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:17fcf043d0b4724858f25b8826c36e08f9fb2e475410bece0ec44a22d533da9b"}, - {file = "wrapt-1.17.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4a557d97f12813dc5e18dad9fa765ae44ddd56a672bb5de4825527c847d6379"}, - {file = "wrapt-1.17.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0229b247b0fc7dee0d36176cbb79dbaf2a9eb7ecc50ec3121f40ef443155fb1d"}, - {file = "wrapt-1.17.0-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8425cfce27b8b20c9b89d77fb50e368d8306a90bf2b6eef2cdf5cd5083adf83f"}, - {file = "wrapt-1.17.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9c900108df470060174108012de06d45f514aa4ec21a191e7ab42988ff42a86c"}, - {file = "wrapt-1.17.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:4e547b447073fc0dbfcbff15154c1be8823d10dab4ad401bdb1575e3fdedff1b"}, - {file = "wrapt-1.17.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:914f66f3b6fc7b915d46c1cc424bc2441841083de01b90f9e81109c9759e43ab"}, - {file = "wrapt-1.17.0-cp313-cp313t-win32.whl", hash = "sha256:a4192b45dff127c7d69b3bdfb4d3e47b64179a0b9900b6351859f3001397dabf"}, - {file = "wrapt-1.17.0-cp313-cp313t-win_amd64.whl", hash = "sha256:4f643df3d4419ea3f856c5c3f40fec1d65ea2e89ec812c83f7767c8730f9827a"}, - {file = "wrapt-1.17.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:69c40d4655e078ede067a7095544bcec5a963566e17503e75a3a3e0fe2803b13"}, - {file = "wrapt-1.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f495b6754358979379f84534f8dd7a43ff8cff2558dcdea4a148a6e713a758f"}, - {file = "wrapt-1.17.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:baa7ef4e0886a6f482e00d1d5bcd37c201b383f1d314643dfb0367169f94f04c"}, - {file = "wrapt-1.17.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8fc931382e56627ec4acb01e09ce66e5c03c384ca52606111cee50d931a342d"}, - {file = "wrapt-1.17.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:8f8909cdb9f1b237786c09a810e24ee5e15ef17019f7cecb207ce205b9b5fcce"}, - {file = "wrapt-1.17.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ad47b095f0bdc5585bced35bd088cbfe4177236c7df9984b3cc46b391cc60627"}, - {file = "wrapt-1.17.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:948a9bd0fb2c5120457b07e59c8d7210cbc8703243225dbd78f4dfc13c8d2d1f"}, - {file = "wrapt-1.17.0-cp38-cp38-win32.whl", hash = "sha256:5ae271862b2142f4bc687bdbfcc942e2473a89999a54231aa1c2c676e28f29ea"}, - {file = "wrapt-1.17.0-cp38-cp38-win_amd64.whl", hash = "sha256:f335579a1b485c834849e9075191c9898e0731af45705c2ebf70e0cd5d58beed"}, - {file = "wrapt-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d751300b94e35b6016d4b1e7d0e7bbc3b5e1751e2405ef908316c2a9024008a1"}, - {file = "wrapt-1.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7264cbb4a18dc4acfd73b63e4bcfec9c9802614572025bdd44d0721983fc1d9c"}, - {file = "wrapt-1.17.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33539c6f5b96cf0b1105a0ff4cf5db9332e773bb521cc804a90e58dc49b10578"}, - {file = "wrapt-1.17.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c30970bdee1cad6a8da2044febd824ef6dc4cc0b19e39af3085c763fdec7de33"}, - {file = "wrapt-1.17.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:bc7f729a72b16ee21795a943f85c6244971724819819a41ddbaeb691b2dd85ad"}, - {file = "wrapt-1.17.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:6ff02a91c4fc9b6a94e1c9c20f62ea06a7e375f42fe57587f004d1078ac86ca9"}, - {file = "wrapt-1.17.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2dfb7cff84e72e7bf975b06b4989477873dcf160b2fd89959c629535df53d4e0"}, - {file = "wrapt-1.17.0-cp39-cp39-win32.whl", hash = "sha256:2399408ac33ffd5b200480ee858baa58d77dd30e0dd0cab6a8a9547135f30a88"}, - {file = "wrapt-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:4f763a29ee6a20c529496a20a7bcb16a73de27f5da6a843249c7047daf135977"}, - {file = "wrapt-1.17.0-py3-none-any.whl", hash = "sha256:d2c63b93548eda58abf5188e505ffed0229bf675f7c3090f8e36ad55b8cbc371"}, - {file = "wrapt-1.17.0.tar.gz", hash = "sha256:16187aa2317c731170a88ef35e8937ae0f533c402872c1ee5e6d079fcf320801"}, + {file = "wrapt-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9176057c60438c2ce2284cdefc2b3ee5eddc8c87cd6e24c558d9f5c64298fa4a"}, + {file = "wrapt-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e0f0e731e0ca1583befd3af71b9f90d64ded1535da7b80181cb9e907cc10bbae"}, + {file = "wrapt-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:144ed42a4ec3aca5d6f1524f99ee49493bbd0d9c66c24da7ec44b4661dca4dcc"}, + {file = "wrapt-1.17.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8a7b0699a381226d81d75b48ea58414beb5891ba8982bdc8e42912f766de074"}, + {file = "wrapt-1.17.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b20fcef5a3ee410671a5a59472e1ff9dda21cfbe5dfd15e23ee4b99ac455c8e"}, + {file = "wrapt-1.17.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b9a58a1cbdc0588ed4c8ab0c191002d5d831a58c3bad88523fe471ea97eaf57d"}, + {file = "wrapt-1.17.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:50bbfa7a92da7540426c774e09d6901e44d8f9b513b276ebae03ae244f0c6dbf"}, + {file = "wrapt-1.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:09f5141599eaf36d6cc0b760ad87c2ab6b8618d009b2922639266676775a73a6"}, + {file = "wrapt-1.17.1-cp310-cp310-win32.whl", hash = "sha256:589f24449fd58508533c4a69b2a0f45e9e3419b86b43a0607e2fdb989c6f2552"}, + {file = "wrapt-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:7eca3a1afa9820785b79cb137c68ca38c2f77cfedc3120115da42e1d5800907e"}, + {file = "wrapt-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:da0d0c1c4bd55f9ace919454776dbf0821f537b9a77f739f0c3e34b14728b3b3"}, + {file = "wrapt-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cd7649f0c493d35f9aad9790bbecd7b6fd2e2f7141f6cb1e1e9bb7a681d6d0a4"}, + {file = "wrapt-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0aad4f54b3155d673a5c4706a71a0a84f3d415b2fc8a2a399a964d70f18846a2"}, + {file = "wrapt-1.17.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ebea3ebb6a394f50f150a52e279508e91c8770625ac8fcb5d8cf35995a320f2"}, + {file = "wrapt-1.17.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53e2986a65eba7c399d7ad1ccd204562d4ffe6e937344fe5a49eb5a83858f797"}, + {file = "wrapt-1.17.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:67c30d3fe245adb0eb1061a0e526905970a0dabe7c5fba5078e0ee9d19f28167"}, + {file = "wrapt-1.17.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:6fd88935b12b59a933ef45facb57575095f205d30d0ae8dd1a3b485bc4fa2fbd"}, + {file = "wrapt-1.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ec3e763e7ca8dcba0792fc3e8ff7061186f59e9aafe4438e6bb1f635a6ab0901"}, + {file = "wrapt-1.17.1-cp311-cp311-win32.whl", hash = "sha256:d792631942a102d6d4f71e4948aceb307310ac0a0af054be6d28b4f79583e0f1"}, + {file = "wrapt-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:3dfd4738a630eddfcb7ff6c8e9fe863df3821f9c991dec73821e05450074ae09"}, + {file = "wrapt-1.17.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b1a4c8edd038fee0ce67bf119b16eaa45d22a52bbaf7d0a17d2312eb0003b1bb"}, + {file = "wrapt-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:181a844005c9818792212a32e004cb4c6bd8e35cae8e97b1a39a1918d95cef58"}, + {file = "wrapt-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21ffcf16f5c243a626b0f8da637948e3d5984e3bc0c1bc500ad990e88e974e3b"}, + {file = "wrapt-1.17.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0eb33799b7582bb73787b9903b70595f8eff67eecc9455f668ed01adf53f9eea"}, + {file = "wrapt-1.17.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57e932ad1908b53e9ad67a746432f02bc8473a9ee16e26a47645a2b224fba5fd"}, + {file = "wrapt-1.17.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b8bd35c15bc82c5cbe397e8196fa57a17ce5d3f30e925a6fd39e4c5bb02fdcff"}, + {file = "wrapt-1.17.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:93018dbb956e0ad99ea2fa2c3c22f033549dcb1f56ad9f4555dfe25e49688c5d"}, + {file = "wrapt-1.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e5bd9186d52cf3d36bf1823be0e85297e4dbad909bc6dd495ce0d272806d84a7"}, + {file = "wrapt-1.17.1-cp312-cp312-win32.whl", hash = "sha256:d609f0ab0603bbcbf2de906b366b9f9bec75c32b4493550a940de658cc2ce512"}, + {file = "wrapt-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:2c160bb8815787646b27a0c8575a26a4d6bf6abd7c5eb250ad3f2d38b29cb2cb"}, + {file = "wrapt-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:99e544e6ce26f89ad5acc6f407bc4daf7c1d42321e836f5c768f834100bdf35c"}, + {file = "wrapt-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:78da796b74f2c8e0af021ee99feb3bff7cb46f8e658fe25c20e66be1080db4a2"}, + {file = "wrapt-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f1bc359f6c52e53565e7af24b423e7a1eea97d155f38ac9e90e95303514710b"}, + {file = "wrapt-1.17.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cbead724daa13cae46e8ab3bb24938d8514d123f34345535b184f3eb1b7ad717"}, + {file = "wrapt-1.17.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bdf7b0e3d3713331c0bb9daac47cd10e5aa60d060e53696f50de4e560bd5617f"}, + {file = "wrapt-1.17.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f17e8d926f63aed65ff949682c922f96d00f65c2e852c24272232313fa7823d5"}, + {file = "wrapt-1.17.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:9e04f3bd30e0b23c0ca7e1d4084e7d28b6d7d2feb8b7bc69b496fe881280579b"}, + {file = "wrapt-1.17.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5660e470edfa15ae7ef407272c642d29e9962777a6b30bfa8fc0da2173dc9afd"}, + {file = "wrapt-1.17.1-cp313-cp313-win32.whl", hash = "sha256:a992f9e019145e84616048556546edeaba68e05e1c1ffbe8391067a63cdadb0c"}, + {file = "wrapt-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:5c2e24ba455af4b0a237a890ea6ed9bafd01fac2c47095f87c53ea3344215d43"}, + {file = "wrapt-1.17.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:88623fd957ba500d8bb0f7427a76496d99313ca2f9e932481c0882e034cf1add"}, + {file = "wrapt-1.17.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:162d5f15bdd3b8037e06540902227ef9e0f298496c0afaadd9e2875851446693"}, + {file = "wrapt-1.17.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bb82447ddae4e3d9b51f40c494f66e6cbd8fb0e8e8b993678416535c67f9a0d"}, + {file = "wrapt-1.17.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ce4cff3922707048d754e365c4ebf41a3bcbf29b329349bf85d51873c7c7e9e"}, + {file = "wrapt-1.17.1-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fdc4e73a3fa0c25eed4d836d9732226f0326957cb075044a7f252b465299433"}, + {file = "wrapt-1.17.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:bca1c0824f824bcd97b4b179dd55dcad1dab419252be2b2faebbcacefa3b27b2"}, + {file = "wrapt-1.17.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:6d44b14f3a2f6343a07c90344850b7af5515538ce3a5d01f9c87d8bae9bd8724"}, + {file = "wrapt-1.17.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:169033329022739c6f0d8cd3031a113953b0ba500f3d5978904bdd40baec4568"}, + {file = "wrapt-1.17.1-cp313-cp313t-win32.whl", hash = "sha256:52f0907287d9104112dbebda46af4db0793fcc4c64c8a867099212d116b6db64"}, + {file = "wrapt-1.17.1-cp313-cp313t-win_amd64.whl", hash = "sha256:7966f98fa36933333d8a1c3d8552aa3d0735001901a4aabcfbd5a502b4ef14fe"}, + {file = "wrapt-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:27a49f217839bf559d436308bae8fc4a9dd0ac98ffdb9d6aeb3f00385b0fb72c"}, + {file = "wrapt-1.17.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:50a4e3b45e62b1ccb96b3fc0e427f1b458ff2e0def34ae084de88418157a09d1"}, + {file = "wrapt-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30c0c08434fe2af6e40c5c75c036d7e3c7e7f499079fc479e740d9586b09fb0d"}, + {file = "wrapt-1.17.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15f96fe5e2efdc613983327240ae89cf6368c07eeb0f194d240e9549aa1ea739"}, + {file = "wrapt-1.17.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14f78f8c313884f889c6696af62aa881af302a989a7c0df398d2b541fa53e8a9"}, + {file = "wrapt-1.17.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d87334b521ab0e2564902c0b10039dee8670485e9d397fe97c34b88801f474f7"}, + {file = "wrapt-1.17.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:97eaff096fcb467e0f486f3bf354c1072245c2045859d71ba71158717ec97dcc"}, + {file = "wrapt-1.17.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:13887d1415dc0e213a9adeb9026ae1f427023f77110d988fbd478643490aa40c"}, + {file = "wrapt-1.17.1-cp38-cp38-win32.whl", hash = "sha256:823a262d967cbdf835787039b873ff551e36c14658bdc2e43267968b67f61f88"}, + {file = "wrapt-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:889587664d245dae75c752b643061f922e8a590d43a4cd088eca415ca83f2d13"}, + {file = "wrapt-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:997e8f9b984e4263993d3baf3329367e7c7673b63789bc761718a6f9ed68653d"}, + {file = "wrapt-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:bac64f57a5a7926ebc9ab519fb9eba1fc6dcd1f65d7f45937b2ce38da65c2270"}, + {file = "wrapt-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7aa07603d67007c15b33d20095cc9276f3e127bfb1b8106b3e84ec6907d137e"}, + {file = "wrapt-1.17.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c53ef8936c4d587cb96bb1cf0d076e822fa38266c2b646837ef60465da8db22e"}, + {file = "wrapt-1.17.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72053cc4706dac537d5a772135dc3e1de5aff52883f49994c1757c1b2dc9db2"}, + {file = "wrapt-1.17.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0ee037e4cc9d039efe712b13c483f4efa2c3499642369e01570b3bb1842eea3f"}, + {file = "wrapt-1.17.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20888d886186d19eab53816db2e615950b1ce7dbd5c239107daf2c8a6a4a03c6"}, + {file = "wrapt-1.17.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1c119802ae432b8c5d55dd5253825d09c1dca1c97ffc7b32c53ecdb348712f64"}, + {file = "wrapt-1.17.1-cp39-cp39-win32.whl", hash = "sha256:3260178f3bc006acae93378bfd6dbf33c9249de93cc1b78d8cc7b7416f4ea99a"}, + {file = "wrapt-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:18fb16fb6bb75f4ec6272829007f3129a9a5264d0230372f9651e5f75cfec552"}, + {file = "wrapt-1.17.1-py3-none-any.whl", hash = "sha256:f3117feb1fc479eaf84b549d3f229d5d2abdb823f003bc2a1c6dd70072912fa0"}, + {file = "wrapt-1.17.1.tar.gz", hash = "sha256:16b2fdfa09a74a3930175b6d9d7d008022aa72a4f02de2b3eecafcc1adfd3cfe"}, ] [[package]] @@ -3450,4 +3432,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "0f98940674f4f3f2063f85a1bdb832a6462e68150d3b5bbb298dc604944179da" +content-hash = "e44f5135eee49ed7bb93c2c0ee106006a41743eb19da3cb6df33bb76c411aafa" diff --git a/pyproject.toml b/pyproject.toml index c43f52b..c173ba0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,7 +16,7 @@ fastapi = "==0.115.6" uvicorn = {extras = ["standard"], version = "==0.34.0"} slowapi = "==0.1.9" pydantic-settings = "==2.7.1" -pydantic= "==2.10.4" +pydantic= "==2.10.5" python-dateutil = "==2.9.0.post0" [tool.poetry.group.dev.dependencies] @@ -31,7 +31,6 @@ interrogate = "==1.7.0" [tool.poetry.group.tests.dependencies] pytest = "==7.3.1" pytest-cov = "==4.1.0" -schema = "==0.7.5" [tool.black] line-length = 120 @@ -53,7 +52,7 @@ lint.select = [ ] [tool.pytest.ini_options] -addopts = "--cov --cov-report term-missing --exitfirst" +addopts = "--cov --cov-report term-missing --exitfirst -vv" testpaths = [ "tests", ] diff --git a/tests/clubs/test_clubs_players.py b/tests/clubs/test_clubs_players.py deleted file mode 100644 index 3bc5668..0000000 --- a/tests/clubs/test_clubs_players.py +++ /dev/null @@ -1,57 +0,0 @@ -from datetime import datetime -from unittest.mock import patch - -import pytest -from fastapi import HTTPException -from schema import And, Or, Schema - -from app.services.clubs.players import TransfermarktClubPlayers - - -def test_get_club_players_not_found(): - with pytest.raises(HTTPException): - TransfermarktClubPlayers(club_id="0") - - -@pytest.mark.parametrize("club_id,season_id", [("418", None), ("131", "2014"), ("210", "2017")]) -@patch("app.utils.utils.clean_response", side_effect=lambda x: x) -def test_get_club_players( - mock_clean_response, - club_id, - season_id, - regex_date_mmm_dd_yyyy, - regex_integer, - regex_height, - regex_market_value, - len_greater_than_0, -): - tfmkt = TransfermarktClubPlayers(club_id=club_id, season_id=season_id) - result = tfmkt.get_club_players() - - expected_schema = Schema( - { - "id": And(str, len_greater_than_0), - "players": [ - { - "id": And(str, len_greater_than_0), - "name": And(str, len_greater_than_0), - "position": And(str, len_greater_than_0), - "dateOfBirth": And(str, len_greater_than_0, regex_date_mmm_dd_yyyy), - "age": And(str, len_greater_than_0, regex_integer), - "nationality": And(list, len_greater_than_0), - "currentClub": Or(None, And(str, len_greater_than_0)), - "height": And(str, len_greater_than_0, regex_height), - "foot": And(str, len_greater_than_0), - "joinedOn": Or("", And(str, len_greater_than_0, regex_date_mmm_dd_yyyy)), - "joined": Or("", And(str, len_greater_than_0)), - "signedFrom": Or("", And(str, len_greater_than_0)), - "contract": Or(None, And(str, regex_date_mmm_dd_yyyy)), - "marketValue": And(str, len_greater_than_0, regex_market_value), - "status": Or("", And(str, len_greater_than_0)), - }, - ], - "updatedAt": datetime, - }, - ) - - assert expected_schema.validate(result) diff --git a/tests/clubs/test_clubs_profile.py b/tests/clubs/test_clubs_profile.py deleted file mode 100644 index c66bb54..0000000 --- a/tests/clubs/test_clubs_profile.py +++ /dev/null @@ -1,74 +0,0 @@ -from datetime import datetime -from unittest.mock import patch - -import pytest -from fastapi import HTTPException -from schema import And, Optional, Schema - -from app.services.clubs.profile import TransfermarktClubProfile - - -def test_get_club_profile_not_found(): - with pytest.raises(HTTPException): - TransfermarktClubProfile(club_id="0") - - -@pytest.mark.parametrize("club_id", ["210", "131", "31", "27", "5"]) -@patch("app.utils.utils.clean_response", side_effect=lambda x: x) -def test_get_club_profile( - mock_clean_response, - club_id, - regex_club_url, - regex_date_mmm_dd_yyyy, - regex_market_value, - regex_value_variation, - regex_integer, - len_greater_than_0, -): - tfmkt = TransfermarktClubProfile(club_id=club_id) - result = tfmkt.get_club_profile() - - expected_schema = Schema( - { - "id": And(str, len_greater_than_0), - "url": And(str, len_greater_than_0, regex_club_url), - "name": And(str, len_greater_than_0), - "officialName": And(str, len_greater_than_0), - "image": And(str, len_greater_than_0), - Optional("legalForm"): And(str, len_greater_than_0), - "addressLine1": And(str, len_greater_than_0), - "addressLine2": And(str, len_greater_than_0), - "addressLine3": And(str, len_greater_than_0), - "tel": And(str, len_greater_than_0), - "fax": And(str, len_greater_than_0), - "website": And(str, len_greater_than_0), - "foundedOn": And(str, len_greater_than_0, regex_date_mmm_dd_yyyy), - Optional("members"): And(str, len_greater_than_0), - Optional("membersDate"): And(str, len_greater_than_0, regex_date_mmm_dd_yyyy), - Optional("otherSports"): list, - Optional("colors"): list, - "stadiumName": And(str, len_greater_than_0), - "stadiumSeats": And(str, len_greater_than_0, regex_integer), - "currentTransferRecord": And(str, len_greater_than_0, regex_value_variation), - "currentMarketValue": And(str, len_greater_than_0, regex_market_value), - Optional("confederation"): str, - Optional("fifaWorldRanking"): str, - "squad": { - "size": And(str, len_greater_than_0), - "averageAge": And(str, len_greater_than_0), - "foreigners": And(str, len_greater_than_0), - "nationalTeamPlayers": And(str, len_greater_than_0), - }, - "league": { - "id": And(str, len_greater_than_0), - "name": And(str, len_greater_than_0), - "countryID": And(str, len_greater_than_0), - "countryName": And(str, len_greater_than_0), - "tier": And(str, len_greater_than_0), - }, - Optional("historicalCrests"): list, - "updatedAt": datetime, - }, - ) - - assert expected_schema.validate(result) diff --git a/tests/clubs/test_clubs_search.py b/tests/clubs/test_clubs_search.py deleted file mode 100644 index 760c050..0000000 --- a/tests/clubs/test_clubs_search.py +++ /dev/null @@ -1,50 +0,0 @@ -from datetime import datetime - -import pytest -from schema import And, Schema - -from app.services.clubs.search import TransfermarktClubSearch - - -def test_search_clubs_empty(len_greater_than_0, len_equal_to_0): - tfmkt = TransfermarktClubSearch(query="0") - result = tfmkt.search_clubs() - - expected_schema = Schema( - { - "query": And(str, len_greater_than_0), - "pageNumber": 1, - "lastPageNumber": 1, - "results": And(list, len_equal_to_0), - "updatedAt": datetime, - }, - ) - - assert expected_schema.validate(result) - - -@pytest.mark.parametrize("query,page_number", [("gremio", 1), ("atletico", 2)]) -def test_search_clubs(query, page_number, regex_club_url, regex_integer, regex_market_value, len_greater_than_0): - tfmkt = TransfermarktClubSearch(query=query, page_number=page_number) - result = tfmkt.search_clubs() - - expected_schema = Schema( - { - "query": query, - "pageNumber": page_number, - "lastPageNumber": And(int, lambda x: x > 1), - "results": [ - { - "id": And(str, len_greater_than_0, regex_integer), - "url": And(str, len_greater_than_0, regex_club_url), - "name": And(str, len_greater_than_0), - "country": And(str, len_greater_than_0), - "squad": And(str, len_greater_than_0, regex_integer), - "marketValue": And(str, len_greater_than_0, regex_market_value), - }, - ], - "updatedAt": datetime, - }, - ) - - assert expected_schema.validate(result) diff --git a/tests/competitions/test_competitions_clubs.py b/tests/competitions/test_competitions_clubs.py deleted file mode 100644 index ba22c61..0000000 --- a/tests/competitions/test_competitions_clubs.py +++ /dev/null @@ -1,35 +0,0 @@ -from datetime import datetime - -import pytest -from fastapi import HTTPException -from schema import And, Schema - -from app.services.competitions.clubs import TransfermarktCompetitionClubs - - -def test_get_competition_clubs_not_found(): - with pytest.raises(HTTPException): - TransfermarktCompetitionClubs(competition_id="0") - - -@pytest.mark.parametrize("competition_id,season_id", [("ES1", None), ("GB1", "2016"), ("BRA1", "2023")]) -def test_get_competition_clubs(competition_id, season_id, len_greater_than_0, regex_integer): - tfmkt = TransfermarktCompetitionClubs(competition_id=competition_id, season_id=season_id) - result = tfmkt.get_competition_clubs() - - expected_schema = Schema( - { - "id": And(str, len_greater_than_0), - "name": And(str, len_greater_than_0), - "seasonID": And(str, len_greater_than_0, regex_integer), - "clubs": [ - { - "id": And(str, len_greater_than_0, regex_integer), - "name": And(str, len_greater_than_0), - }, - ], - "updatedAt": datetime, - }, - ) - - assert expected_schema.validate(result) diff --git a/tests/competitions/test_competitions_search.py b/tests/competitions/test_competitions_search.py deleted file mode 100644 index cdbe7ae..0000000 --- a/tests/competitions/test_competitions_search.py +++ /dev/null @@ -1,52 +0,0 @@ -from datetime import datetime - -import pytest -from schema import And, Schema - -from app.services.competitions.search import TransfermarktCompetitionSearch - - -def test_search_competitions_not_found(len_greater_than_0, len_equal_to_0): - tfmkt = TransfermarktCompetitionSearch(query="0") - result = tfmkt.search_competitions() - - expected_schema = Schema( - { - "query": And(str, len_greater_than_0), - "pageNumber": 1, - "lastPageNumber": 1, - "results": And(list, len_equal_to_0), - "updatedAt": datetime, - }, - ) - - assert expected_schema.validate(result) - - -@pytest.mark.parametrize("query,page_number", [("Serie A", 1), ("Liga", 2)]) -def test_search_competitions(query, page_number, len_greater_than_0, regex_integer, regex_market_value): - tfmkt = TransfermarktCompetitionSearch(query=query, page_number=page_number) - result = tfmkt.search_competitions() - - expected_schema = Schema( - { - "query": query, - "pageNumber": page_number, - "lastPageNumber": And(int, lambda x: x > 1), - "results": [ - { - "id": And(str, len_greater_than_0), - "name": And(str, len_greater_than_0), - "country": And(str, len_greater_than_0), - "continent": And(str, len_greater_than_0), - "clubs": And(str, len_greater_than_0, regex_integer, regex_integer), - "players": And(str, len_greater_than_0, regex_integer, regex_integer), - "totalMarketValue": And(str, len_greater_than_0, regex_market_value), - "meanMarketValue": And(str, len_greater_than_0, regex_market_value), - }, - ], - "updatedAt": datetime, - }, - ) - - assert expected_schema.validate(result) diff --git a/tests/conftest.py b/tests/conftest.py index 2339035..5cf549e 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,42 +1,37 @@ -import pytest -from schema import Regex - - -@pytest.fixture -def len_greater_than_0(): - return lambda x: len(x) > 0 - - -@pytest.fixture -def len_equal_to_0(): - return lambda x: len(x) == 0 - +import json +from pathlib import Path -@pytest.fixture -def regex_club_url(): - return Regex(r"^/\w.+/startseite/verein/\d+$") +import pytest +from pydantic import BaseModel @pytest.fixture -def regex_date_mmm_dd_yyyy(): - return Regex(r"^(\w+\s\d+,\s\d+)|(-)$") +def load_test_data() -> callable: + """Load test data from the `tests/data` directory.""" + def _load_test_data(file_name: str) -> dict: + file_path = Path(__file__).parent / "data" / f"{file_name}.json" -@pytest.fixture -def regex_market_value(): - return Regex(r"^(€\d+\.\d+.(m|bn))|(€\d+.k)|(-)$") + with file_path.open("r", encoding="utf-8") as f: + return json.load(f) + return _load_test_data -@pytest.fixture -def regex_value_variation(): - return Regex(r"^(\+|-)?€(\+|-)?(\d.+)(k|m)$") +@pytest.fixture(autouse=True) +def override_pydantic_eq(): + """Override Pydantic's __eq__ method to ignore the `updated_at` field.""" + original_eq = BaseModel.__eq__ -@pytest.fixture -def regex_integer(): - return Regex(r"^(\d+|-)$") - + def custom_eq(self, other): + if not isinstance(other, self.__class__): + return False + self_dict = self.model_dump() + other_dict = other.model_dump() + self_dict.pop("updated_at", None) + other_dict.pop("updated_at", None) + return self_dict == other_dict -@pytest.fixture -def regex_height(): - return Regex(r"^(\d+,\d+m)|(m)$") + BaseModel.__eq__ = custom_eq + yield + BaseModel.__eq__ = original_eq diff --git a/tests/data/clubs/players/131_2010.json b/tests/data/clubs/players/131_2010.json new file mode 100644 index 0000000..2c52f43 --- /dev/null +++ b/tests/data/clubs/players/131_2010.json @@ -0,0 +1,683 @@ +{ + "id": "131", + "players": [ + { + "id": "7589", + "name": "Víctor Valdés", + "position": "Goalkeeper", + "dateOfBirth": "Jan 14, 1982", + "age": "29", + "nationality": [ + "Spain" + ], + "currentClub": "Retired", + "height": "1,83m", + "foot": "right", + "joinedOn": "Jul 1, 2002", + "joined": "", + "signedFrom": "FC Barcelona B", + "contract": null, + "marketValue": "€20.00m", + "status": "" + }, + { + "id": "65266", + "name": "Rubén Miño", + "position": "Goalkeeper", + "dateOfBirth": "Jan 18, 1989", + "age": "22", + "nationality": [ + "Spain" + ], + "currentClub": "UE Cornellà", + "height": "1,91m", + "foot": "right", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "€1.20m", + "status": "" + }, + { + "id": "8176", + "name": "Oier Olazábal", + "position": "Goalkeeper", + "dateOfBirth": "Sep 14, 1989", + "age": "21", + "nationality": [ + "Spain" + ], + "currentClub": "FC Andorra", + "height": "1,89m", + "foot": "left", + "joinedOn": "Jul 1, 2013", + "joined": "", + "signedFrom": "FC Barcelona B", + "contract": null, + "marketValue": "€900k", + "status": "" + }, + { + "id": "7537", + "name": "José Manuel Pinto", + "position": "Goalkeeper", + "dateOfBirth": "Nov 8, 1975", + "age": "35", + "nationality": [ + "Spain" + ], + "currentClub": "Retired", + "height": "1,85m", + "foot": "right", + "joinedOn": "Jul 1, 2008", + "joined": "", + "signedFrom": "Celta de Vigo", + "contract": null, + "marketValue": "€600k", + "status": "" + }, + { + "id": "18944", + "name": "Gerard Piqué", + "position": "Centre-Back", + "dateOfBirth": "Feb 2, 1987", + "age": "24", + "nationality": [ + "Spain" + ], + "currentClub": "Retired", + "height": "1,94m", + "foot": "right", + "joinedOn": "Jul 1, 2008", + "joined": "", + "signedFrom": "Manchester United", + "contract": null, + "marketValue": "€35.00m", + "status": "" + }, + { + "id": "7594", + "name": "Carles Puyol", + "position": "Centre-Back", + "dateOfBirth": "Apr 13, 1978", + "age": "33", + "nationality": [ + "Spain" + ], + "currentClub": "Retired", + "height": "1,78m", + "foot": "right", + "joinedOn": "Jul 1, 1999", + "joined": "", + "signedFrom": ": Ablöse -", + "contract": null, + "marketValue": "€20.00m", + "status": "" + }, + { + "id": "7968", + "name": "Gabriel Milito", + "position": "Centre-Back", + "dateOfBirth": "Sep 7, 1980", + "age": "30", + "nationality": [ + "Argentina", + "Italy" + ], + "currentClub": "Retired", + "height": "1,79m", + "foot": "left", + "joinedOn": "Jul 12, 2007", + "joined": "", + "signedFrom": ": Ablöse €20.00m", + "contract": null, + "marketValue": "€8.00m", + "status": "" + }, + { + "id": "74228", + "name": "Marc Muniesa", + "position": "Centre-Back", + "dateOfBirth": "Mar 27, 1992", + "age": "19", + "nationality": [ + "Spain" + ], + "currentClub": "Al-Shahania SC", + "height": "1,80m", + "foot": "left", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "€2.50m", + "status": "" + }, + { + "id": "65237", + "name": "Andreu Fontàs", + "position": "Centre-Back", + "dateOfBirth": "Nov 14, 1989", + "age": "21", + "nationality": [ + "Spain" + ], + "currentClub": "Without Club", + "height": "1,86m", + "foot": "left", + "joinedOn": "Mar 1, 2011", + "joined": "", + "signedFrom": "FC Barcelona B", + "contract": null, + "marketValue": "€2.50m", + "status": "" + }, + { + "id": "99922", + "name": "Marc Bartra", + "position": "Centre-Back", + "dateOfBirth": "Jan 15, 1991", + "age": "20", + "nationality": [ + "Spain" + ], + "currentClub": "Real Betis Balompié", + "height": "1,84m", + "foot": "right", + "joinedOn": "Jul 1, 2012", + "joined": "", + "signedFrom": "FC Barcelona B", + "contract": null, + "marketValue": "€1.50m", + "status": "" + }, + { + "id": "92947", + "name": "Sergi Gómez", + "position": "Centre-Back", + "dateOfBirth": "Mar 28, 1992", + "age": "19", + "nationality": [ + "Spain" + ], + "currentClub": "RCD Espanyol Barcelona", + "height": "1,85m", + "foot": "right", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "€500k", + "status": "" + }, + { + "id": "5283", + "name": "Éric Abidal", + "position": "Left-Back", + "dateOfBirth": "Sep 11, 1979", + "age": "31", + "nationality": [ + "France", + "Martinique" + ], + "currentClub": "Retired", + "height": "1,86m", + "foot": "left", + "joinedOn": "Jul 1, 2007", + "joined": "", + "signedFrom": ": Ablöse €15.00m", + "contract": null, + "marketValue": "€17.00m", + "status": "" + }, + { + "id": "34495", + "name": "Adriano", + "position": "Left-Back", + "dateOfBirth": "Oct 26, 1984", + "age": "26", + "nationality": [ + "Brazil", + "Spain" + ], + "currentClub": "Retired", + "height": "1,72m", + "foot": "both", + "joinedOn": "Jul 14, 2010", + "joined": "", + "signedFrom": "Sevilla FC", + "contract": null, + "marketValue": "€12.00m", + "status": "" + }, + { + "id": "4317", + "name": "Maxwell", + "position": "Left-Back", + "dateOfBirth": "Aug 27, 1981", + "age": "29", + "nationality": [ + "Brazil" + ], + "currentClub": "Retired", + "height": "1,76m", + "foot": "left", + "joinedOn": "Jul 15, 2009", + "joined": "", + "signedFrom": ": Ablöse €5.00m", + "contract": null, + "marketValue": "€10.00m", + "status": "" + }, + { + "id": "15951", + "name": "Dani Alves", + "position": "Right-Back", + "dateOfBirth": "May 6, 1983", + "age": "28", + "nationality": [ + "Brazil", + "Spain" + ], + "currentClub": "Retired", + "height": "1,72m", + "foot": "right", + "joinedOn": "Nov 12, 2021", + "joined": "", + "signedFrom": "Without Club", + "contract": null, + "marketValue": "€35.00m", + "status": "" + }, + { + "id": "68645", + "name": "Martín Montoya", + "position": "Right-Back", + "dateOfBirth": "Apr 14, 1991", + "age": "20", + "nationality": [ + "Spain" + ], + "currentClub": "Aris Thessaloniki", + "height": "1,75m", + "foot": "right", + "joinedOn": "Jul 1, 2012", + "joined": "", + "signedFrom": "FC Barcelona B", + "contract": null, + "marketValue": "€1.50m", + "status": "" + }, + { + "id": "65230", + "name": "Sergio Busquets", + "position": "Defensive Midfield", + "dateOfBirth": "Jul 16, 1988", + "age": "22", + "nationality": [ + "Spain" + ], + "currentClub": "Inter Miami CF", + "height": "1,89m", + "foot": "right", + "joinedOn": "Jul 1, 2008", + "joined": "", + "signedFrom": "FC Barcelona Atlètic", + "contract": null, + "marketValue": "€30.00m", + "status": "" + }, + { + "id": "19981", + "name": "Javier Mascherano", + "position": "Defensive Midfield", + "dateOfBirth": "Jun 8, 1984", + "age": "27", + "nationality": [ + "Argentina", + "Italy" + ], + "currentClub": "Retired", + "height": "1,74m", + "foot": "right", + "joinedOn": "Aug 28, 2010", + "joined": "", + "signedFrom": ": Ablöse €20.00m", + "contract": null, + "marketValue": "€25.00m", + "status": "" + }, + { + "id": "60445", + "name": "Jonathan dos Santos", + "position": "Defensive Midfield", + "dateOfBirth": "Apr 26, 1990", + "age": "21", + "nationality": [ + "Mexico", + "Spain" + ], + "currentClub": "CF América", + "height": "1,72m", + "foot": "right", + "joinedOn": "Jul 1, 2012", + "joined": "", + "signedFrom": "FC Barcelona B", + "contract": null, + "marketValue": "€3.00m", + "status": "" + }, + { + "id": "66100", + "name": "Oriol Romeu", + "position": "Defensive Midfield", + "dateOfBirth": "Sep 24, 1991", + "age": "19", + "nationality": [ + "Spain" + ], + "currentClub": "Girona FC", + "height": "1,83m", + "foot": "right", + "joinedOn": "Jul 19, 2023", + "joined": "", + "signedFrom": "Girona FC", + "contract": null, + "marketValue": "€2.50m", + "status": "" + }, + { + "id": "7600", + "name": "Andrés Iniesta", + "position": "Central Midfield", + "dateOfBirth": "May 11, 1984", + "age": "27", + "nationality": [ + "Spain" + ], + "currentClub": "Retired", + "height": "1,71m", + "foot": "both", + "joinedOn": "Jul 1, 2002", + "joined": "", + "signedFrom": "FC Barcelona B", + "contract": null, + "marketValue": "€60.00m", + "status": "" + }, + { + "id": "7607", + "name": "Xavi", + "position": "Central Midfield", + "dateOfBirth": "Jan 25, 1980", + "age": "31", + "nationality": [ + "Spain" + ], + "currentClub": "Retired", + "height": "1,70m", + "foot": "right", + "joinedOn": "Jul 1, 1998", + "joined": "", + "signedFrom": ": Ablöse -", + "contract": null, + "marketValue": "€50.00m", + "status": "" + }, + { + "id": "5486", + "name": "Seydou Keita", + "position": "Central Midfield", + "dateOfBirth": "Jan 16, 1980", + "age": "31", + "nationality": [ + "Mali", + "France" + ], + "currentClub": "Retired", + "height": "1,83m", + "foot": "left", + "joinedOn": "Jul 1, 2008", + "joined": "", + "signedFrom": "Sevilla FC", + "contract": null, + "marketValue": "€14.00m", + "status": "" + }, + { + "id": "60444", + "name": "Thiago Alcántara", + "position": "Central Midfield", + "dateOfBirth": "Apr 11, 1991", + "age": "20", + "nationality": [ + "Spain", + "Brazil" + ], + "currentClub": "Retired", + "height": "1,74m", + "foot": "right", + "joinedOn": "Jul 1, 2011", + "joined": "", + "signedFrom": "FC Barcelona B", + "contract": null, + "marketValue": "€5.00m", + "status": "" + }, + { + "id": "85370", + "name": "Sergi Roberto", + "position": "Central Midfield", + "dateOfBirth": "Feb 7, 1992", + "age": "19", + "nationality": [ + "Spain" + ], + "currentClub": "Como 1907", + "height": "1,78m", + "foot": "right", + "joinedOn": "Jul 1, 2013", + "joined": "", + "signedFrom": "FC Barcelona B", + "contract": null, + "marketValue": "€1.50m", + "status": "Calf problems - Return expected on Jan 14, 2025" + }, + { + "id": "15760", + "name": "Ibrahim Afellay", + "position": "Attacking Midfield", + "dateOfBirth": "Apr 2, 1986", + "age": "25", + "nationality": [ + "Netherlands", + "Morocco" + ], + "currentClub": "Retired", + "height": "1,81m", + "foot": "right", + "joinedOn": "Jan 1, 2011", + "joined": "", + "signedFrom": ": Ablöse €3.00m", + "contract": null, + "marketValue": "€14.00m", + "status": "" + }, + { + "id": "35813", + "name": "Víctor Vázquez", + "position": "Attacking Midfield", + "dateOfBirth": "Jan 20, 1987", + "age": "24", + "nationality": [ + "Spain" + ], + "currentClub": "FC Santa Coloma", + "height": "1,80m", + "foot": "right", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "€1.00m", + "status": "" + }, + { + "id": "70934", + "name": "Nolito", + "position": "Left Winger", + "dateOfBirth": "Oct 15, 1986", + "age": "24", + "nationality": [ + "Spain" + ], + "currentClub": "Retired", + "height": "1,75m", + "foot": "right", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "€2.50m", + "status": "" + }, + { + "id": "28003", + "name": "Lionel Messi", + "position": "Right Winger", + "dateOfBirth": "Jun 24, 1987", + "age": "24", + "nationality": [ + "Argentina", + "Spain" + ], + "currentClub": "Inter Miami CF", + "height": "1,70m", + "foot": "left", + "joinedOn": "Jul 1, 2005", + "joined": "", + "signedFrom": "FC Barcelona B", + "contract": null, + "marketValue": "€100.00m", + "status": "" + }, + { + "id": "65278", + "name": "Pedro", + "position": "Right Winger", + "dateOfBirth": "Jul 28, 1987", + "age": "23", + "nationality": [ + "Spain" + ], + "currentClub": "SS Lazio", + "height": "1,67m", + "foot": "both", + "joinedOn": "Jan 1, 2008", + "joined": "", + "signedFrom": "FC Barcelona B", + "contract": null, + "marketValue": "€25.00m", + "status": "Hamstring injury - Return expected on Jan 13, 2025" + }, + { + "id": "53309", + "name": "Jeffrén", + "position": "Right Winger", + "dateOfBirth": "Jan 20, 1988", + "age": "23", + "nationality": [ + "Venezuela", + "Spain" + ], + "currentClub": "Retired", + "height": "1,73m", + "foot": "left", + "joinedOn": "Aug 1, 2009", + "joined": "", + "signedFrom": "FC Barcelona Atlètic", + "contract": null, + "marketValue": "€3.00m", + "status": "" + }, + { + "id": "44675", + "name": "Bojan Krkic", + "position": "Second Striker", + "dateOfBirth": "Aug 28, 1990", + "age": "20", + "nationality": [ + "Spain", + "Serbia" + ], + "currentClub": "Retired", + "height": "1,70m", + "foot": "right", + "joinedOn": "Jul 1, 2013", + "joined": "", + "signedFrom": ": Ablöse €13.00m", + "contract": null, + "marketValue": "€15.00m", + "status": "" + }, + { + "id": "7980", + "name": "David Villa", + "position": "Centre-Forward", + "dateOfBirth": "Dec 3, 1981", + "age": "29", + "nationality": [ + "Spain" + ], + "currentClub": "Retired", + "height": "1,74m", + "foot": "both", + "joinedOn": "Jul 1, 2010", + "joined": "", + "signedFrom": ": Ablöse €40.00m", + "contract": null, + "marketValue": "€50.00m", + "status": "" + }, + { + "id": "3455", + "name": "Zlatan Ibrahimović", + "position": "Centre-Forward", + "dateOfBirth": "Oct 3, 1981", + "age": "29", + "nationality": [ + "Sweden", + "Bosnia-Herzegovina" + ], + "currentClub": "Retired", + "height": "1,95m", + "foot": "right", + "joinedOn": "Jul 27, 2009", + "joined": "", + "signedFrom": ": Ablöse €69.50m", + "contract": null, + "marketValue": "€35.00m", + "status": "" + }, + { + "id": "129476", + "name": "Gerard Deulofeu", + "position": "Centre-Forward", + "dateOfBirth": "Mar 13, 1994", + "age": "17", + "nationality": [ + "Spain" + ], + "currentClub": "Udinese Calcio", + "height": "1,77m", + "foot": "right", + "joinedOn": "Jul 1, 2017", + "joined": "", + "signedFrom": "Everton FC", + "contract": null, + "marketValue": "-", + "status": "Knee surgery - Return unknown" + } + ] +} \ No newline at end of file diff --git a/tests/data/clubs/players/131_None.json b/tests/data/clubs/players/131_None.json new file mode 100644 index 0000000..9d0f707 --- /dev/null +++ b/tests/data/clubs/players/131_None.json @@ -0,0 +1,543 @@ +{ + "id": "131", + "players": [ + { + "id": "74857", + "name": "Marc-André ter Stegen", + "position": "Goalkeeper", + "dateOfBirth": "Apr 30, 1992", + "age": "32", + "nationality": [ + "Germany" + ], + "currentClub": null, + "height": "1,87m", + "foot": "right", + "joinedOn": "Jul 1, 2014", + "joined": "", + "signedFrom": "Borussia Mönchengladbach", + "contract": "Jun 30, 2028", + "marketValue": "€15.00m", + "status": "Team captain; Patellar tendon rupture - Return expected on Jul 1, 2025" + }, + { + "id": "283170", + "name": "Iñaki Peña", + "position": "Goalkeeper", + "dateOfBirth": "Mar 2, 1999", + "age": "25", + "nationality": [ + "Spain" + ], + "currentClub": null, + "height": "1,84m", + "foot": "right", + "joinedOn": "Jan 30, 2022", + "joined": "", + "signedFrom": "FC Barcelona B", + "contract": "Jun 30, 2026", + "marketValue": "€10.00m", + "status": "" + }, + { + "id": "44058", + "name": "Wojciech Szczęsny", + "position": "Goalkeeper", + "dateOfBirth": "Apr 18, 1990", + "age": "34", + "nationality": [ + "Poland" + ], + "currentClub": null, + "height": "1,95m", + "foot": "right", + "joinedOn": "Oct 2, 2024", + "joined": "Joined from Career break; date: Oct 2, 2024; fee: -", + "signedFrom": "", + "contract": "Jun 30, 2025", + "marketValue": "€1.00m", + "status": "" + }, + { + "id": "709955", + "name": "Ander Astralaga", + "position": "Goalkeeper", + "dateOfBirth": "Mar 3, 2004", + "age": "20", + "nationality": [ + "Spain" + ], + "currentClub": null, + "height": "1,90m", + "foot": "right", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": "Jun 30, 2026", + "marketValue": "€1.00m", + "status": "" + }, + { + "id": "962110", + "name": "Pau Cubarsí", + "position": "Centre-Back", + "dateOfBirth": "Jan 22, 2007", + "age": "17", + "nationality": [ + "Spain" + ], + "currentClub": null, + "height": "1,84m", + "foot": "right", + "joinedOn": "Jan 1, 2024", + "joined": "", + "signedFrom": "FC Barcelona Atlètic", + "contract": "Jun 30, 2027", + "marketValue": "€70.00m", + "status": "" + }, + { + "id": "480267", + "name": "Ronald Araujo", + "position": "Centre-Back", + "dateOfBirth": "Mar 7, 1999", + "age": "25", + "nationality": [ + "Uruguay", + "Spain" + ], + "currentClub": null, + "height": "1,92m", + "foot": "right", + "joinedOn": "Oct 5, 2020", + "joined": "", + "signedFrom": "FC Barcelona B", + "contract": "Jun 30, 2026", + "marketValue": "€55.00m", + "status": "" + }, + { + "id": "196948", + "name": "Andreas Christensen", + "position": "Centre-Back", + "dateOfBirth": "Apr 10, 1996", + "age": "28", + "nationality": [ + "Denmark" + ], + "currentClub": null, + "height": "1,87m", + "foot": "right", + "joinedOn": "Jul 4, 2022", + "joined": "", + "signedFrom": "Chelsea FC", + "contract": "Jun 30, 2026", + "marketValue": "€20.00m", + "status": "Achilles tendon irritation - Return expected on Jan 22, 2025" + }, + { + "id": "466794", + "name": "Eric García", + "position": "Centre-Back", + "dateOfBirth": "Jan 9, 2001", + "age": "24", + "nationality": [ + "Spain" + ], + "currentClub": null, + "height": "1,82m", + "foot": "right", + "joinedOn": "Jul 1, 2021", + "joined": "Returned after loan spell with Girona FC; date: Jun 30, 2024; fee: End of loan", + "signedFrom": "Manchester City", + "contract": "Jun 30, 2026", + "marketValue": "€18.00m", + "status": "" + }, + { + "id": "158863", + "name": "Iñigo Martínez", + "position": "Centre-Back", + "dateOfBirth": "May 17, 1991", + "age": "33", + "nationality": [ + "Spain" + ], + "currentClub": null, + "height": "1,82m", + "foot": "left", + "joinedOn": "Jul 5, 2023", + "joined": "", + "signedFrom": "Athletic Bilbao", + "contract": "Jun 30, 2025", + "marketValue": "€5.00m", + "status": "" + }, + { + "id": "741258", + "name": "Sergi Domínguez", + "position": "Centre-Back", + "dateOfBirth": "Apr 1, 2005", + "age": "19", + "nationality": [ + "Spain" + ], + "currentClub": null, + "height": "1,91m", + "foot": "right", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": "Jun 30, 2027", + "marketValue": "€1.00m", + "status": "" + }, + { + "id": "636688", + "name": "Alejandro Balde", + "position": "Left-Back", + "dateOfBirth": "Oct 18, 2003", + "age": "21", + "nationality": [ + "Spain", + "Dominican Republic" + ], + "currentClub": null, + "height": "1,75m", + "foot": "left", + "joinedOn": "Jul 1, 2022", + "joined": "", + "signedFrom": "FC Barcelona Atlètic", + "contract": "Jun 30, 2028", + "marketValue": "€50.00m", + "status": "" + }, + { + "id": "705395", + "name": "Gerard Martín", + "position": "Left-Back", + "dateOfBirth": "Feb 26, 2002", + "age": "22", + "nationality": [ + "Spain" + ], + "currentClub": null, + "height": "1,86m", + "foot": "left", + "joinedOn": "Jul 1, 2024", + "joined": "Internal transfer: FC Barcelona Atlètic; date: Jul 1, 2024", + "signedFrom": "FC Barcelona Atlètic", + "contract": "Jun 30, 2025", + "marketValue": "€5.00m", + "status": "" + }, + { + "id": "411975", + "name": "Jules Koundé", + "position": "Right-Back", + "dateOfBirth": "Nov 12, 1998", + "age": "26", + "nationality": [ + "France", + "Benin" + ], + "currentClub": null, + "height": "1,80m", + "foot": "right", + "joinedOn": "Jul 28, 2022", + "joined": "", + "signedFrom": "Sevilla FC", + "contract": "Jun 30, 2027", + "marketValue": "€60.00m", + "status": "" + }, + { + "id": "937955", + "name": "Héctor Fort", + "position": "Right-Back", + "dateOfBirth": "Aug 2, 2006", + "age": "18", + "nationality": [ + "Spain" + ], + "currentClub": null, + "height": "1,85m", + "foot": "right", + "joinedOn": "Jul 1, 2024", + "joined": "Internal transfer: FC Barcelona Atlètic; date: Jul 1, 2024", + "signedFrom": "FC Barcelona Atlètic", + "contract": "Jun 30, 2026", + "marketValue": "€10.00m", + "status": "" + }, + { + "id": "636695", + "name": "Marc Casadó", + "position": "Defensive Midfield", + "dateOfBirth": "Sep 14, 2003", + "age": "21", + "nationality": [ + "Spain" + ], + "currentClub": null, + "height": "1,72m", + "foot": "right", + "joinedOn": "Jul 1, 2024", + "joined": "Internal transfer: FC Barcelona Atlètic; date: Jul 1, 2024", + "signedFrom": "FC Barcelona Atlètic", + "contract": "Jun 30, 2028", + "marketValue": "€30.00m", + "status": "" + }, + { + "id": "1018920", + "name": "Marc Bernal", + "position": "Defensive Midfield", + "dateOfBirth": "May 26, 2007", + "age": "17", + "nationality": [ + "Spain" + ], + "currentClub": null, + "height": "1,91m", + "foot": "left", + "joinedOn": "Jul 1, 2024", + "joined": "Internal transfer: FC Barcelona Atlètic; date: Jul 1, 2024", + "signedFrom": "FC Barcelona Atlètic", + "contract": "Jun 30, 2026", + "marketValue": "€5.00m", + "status": "Cruciate ligament tear - Return expected on Aug 1, 2025" + }, + { + "id": "683840", + "name": "Pedri", + "position": "Central Midfield", + "dateOfBirth": "Nov 25, 2002", + "age": "22", + "nationality": [ + "Spain" + ], + "currentClub": null, + "height": "1,74m", + "foot": "right", + "joinedOn": "Sep 2, 2019", + "joined": "", + "signedFrom": "UD Las Palmas", + "contract": "Jun 30, 2026", + "marketValue": "€100.00m", + "status": "" + }, + { + "id": "646740", + "name": "Gavi", + "position": "Central Midfield", + "dateOfBirth": "Aug 5, 2004", + "age": "20", + "nationality": [ + "Spain" + ], + "currentClub": null, + "height": "1,73m", + "foot": "right", + "joinedOn": "Jul 1, 2021", + "joined": "", + "signedFrom": "FC Barcelona U19", + "contract": "Jun 30, 2026", + "marketValue": "€80.00m", + "status": "" + }, + { + "id": "636703", + "name": "Fermín López", + "position": "Central Midfield", + "dateOfBirth": "May 11, 2003", + "age": "21", + "nationality": [ + "Spain" + ], + "currentClub": null, + "height": "1,74m", + "foot": "right", + "joinedOn": "Jul 1, 2023", + "joined": "", + "signedFrom": "FC Barcelona Atlètic", + "contract": "Jun 30, 2029", + "marketValue": "€50.00m", + "status": "" + }, + { + "id": "326330", + "name": "Frenkie de Jong", + "position": "Central Midfield", + "dateOfBirth": "May 12, 1997", + "age": "27", + "nationality": [ + "Netherlands" + ], + "currentClub": null, + "height": "1,81m", + "foot": "right", + "joinedOn": "Jul 1, 2019", + "joined": "", + "signedFrom": ": Ablöse €86.00m", + "contract": "Jun 30, 2026", + "marketValue": "€45.00m", + "status": "" + }, + { + "id": "293385", + "name": "Dani Olmo", + "position": "Attacking Midfield", + "dateOfBirth": "May 7, 1998", + "age": "26", + "nationality": [ + "Spain" + ], + "currentClub": null, + "height": "1,79m", + "foot": "right", + "joinedOn": "Aug 9, 2024", + "joined": "Joined from RB Leipzig; date: Aug 9, 2024; fee: €55.00m", + "signedFrom": "RB Leipzig", + "contract": "Jun 30, 2030", + "marketValue": "€60.00m", + "status": "" + }, + { + "id": "720038", + "name": "Pablo Torre", + "position": "Attacking Midfield", + "dateOfBirth": "Apr 3, 2003", + "age": "21", + "nationality": [ + "Spain" + ], + "currentClub": null, + "height": "1,73m", + "foot": "right", + "joinedOn": "Jul 1, 2022", + "joined": "Returned after loan spell with Girona FC; date: Jun 30, 2024; fee: End of loan", + "signedFrom": "Racing Santander", + "contract": "Jun 30, 2026", + "marketValue": "€7.50m", + "status": "" + }, + { + "id": "411295", + "name": "Raphinha", + "position": "Left Winger", + "dateOfBirth": "Dec 14, 1996", + "age": "28", + "nationality": [ + "Brazil", + "Italy" + ], + "currentClub": null, + "height": "1,76m", + "foot": "left", + "joinedOn": "Jul 13, 2022", + "joined": "", + "signedFrom": "Leeds United", + "contract": "Jun 30, 2027", + "marketValue": "€80.00m", + "status": "" + }, + { + "id": "466810", + "name": "Ansu Fati", + "position": "Left Winger", + "dateOfBirth": "Oct 31, 2002", + "age": "22", + "nationality": [ + "Spain", + "Guinea-Bissau" + ], + "currentClub": null, + "height": "1,78m", + "foot": "right", + "joinedOn": "Sep 23, 2020", + "joined": "Returned after loan spell with Brighton & Hove Albion; date: Jun 30, 2024; fee: End of loan", + "signedFrom": "FC Barcelona B", + "contract": "Jun 30, 2027", + "marketValue": "€10.00m", + "status": "" + }, + { + "id": "937958", + "name": "Lamine Yamal", + "position": "Right Winger", + "dateOfBirth": "Jul 13, 2007", + "age": "17", + "nationality": [ + "Spain", + "Equatorial Guinea" + ], + "currentClub": null, + "height": "1,80m", + "foot": "left", + "joinedOn": "Jul 1, 2023", + "joined": "", + "signedFrom": "FC Barcelona U19", + "contract": "Jun 30, 2026", + "marketValue": "€180.00m", + "status": "" + }, + { + "id": "398184", + "name": "Ferran Torres", + "position": "Right Winger", + "dateOfBirth": "Feb 29, 2000", + "age": "24", + "nationality": [ + "Spain" + ], + "currentClub": null, + "height": "1,84m", + "foot": "right", + "joinedOn": "Jan 1, 2022", + "joined": "", + "signedFrom": "Manchester City", + "contract": "Jun 30, 2027", + "marketValue": "€28.00m", + "status": "" + }, + { + "id": "38253", + "name": "Robert Lewandowski", + "position": "Centre-Forward", + "dateOfBirth": "Aug 21, 1988", + "age": "36", + "nationality": [ + "Poland" + ], + "currentClub": null, + "height": "1,85m", + "foot": "right", + "joinedOn": "Jul 19, 2022", + "joined": "", + "signedFrom": ": Ablöse €45.00m", + "contract": "Jun 30, 2026", + "marketValue": "€15.00m", + "status": "" + }, + { + "id": "707572", + "name": "Pau Víctor", + "position": "Centre-Forward", + "dateOfBirth": "Nov 26, 2001", + "age": "23", + "nationality": [ + "Spain" + ], + "currentClub": null, + "height": "1,84m", + "foot": "right", + "joinedOn": "Jul 24, 2024", + "joined": "Joined from Girona FC; date: Jul 24, 2024; fee: €2.70m", + "signedFrom": "Girona FC", + "contract": "Jun 30, 2029", + "marketValue": "€5.00m", + "status": "" + } + ] +} \ No newline at end of file diff --git a/tests/data/clubs/players/210_2017.json b/tests/data/clubs/players/210_2017.json new file mode 100644 index 0000000..3350fa3 --- /dev/null +++ b/tests/data/clubs/players/210_2017.json @@ -0,0 +1,1274 @@ +{ + "id": "210", + "players": [ + { + "id": "52313", + "name": "Marcelo Grohe", + "position": "Goalkeeper", + "dateOfBirth": "Jan 13, 1987", + "age": "29", + "nationality": [ + "Brazil", + "Italy" + ], + "currentClub": "Al-Kholood Club", + "height": "1,88m", + "foot": "right", + "joinedOn": "Jan 1, 2004", + "joined": "", + "signedFrom": "Grêmio FBPA U20", + "contract": null, + "marketValue": "€3.50m", + "status": "" + }, + { + "id": "67886", + "name": "Paulo Victor", + "position": "Goalkeeper", + "dateOfBirth": "Jan 12, 1987", + "age": "29", + "nationality": [ + "Brazil", + "Italy" + ], + "currentClub": "Al-Rayyan SC", + "height": "1,87m", + "foot": "left", + "joinedOn": "Jul 13, 2017", + "joined": "", + "signedFrom": "CR Flamengo", + "contract": null, + "marketValue": "€2.00m", + "status": "No eligibility - until Jun 30, 2025 - Qatar Stars League" + }, + { + "id": "95747", + "name": "Bruno Grassi", + "position": "Goalkeeper", + "dateOfBirth": "Mar 5, 1987", + "age": "29", + "nationality": [ + "Brazil", + "Italy" + ], + "currentClub": "Radwa Club", + "height": "1,92m", + "foot": "right", + "joinedOn": "Apr 23, 2015", + "joined": "", + "signedFrom": "EC Cruzeiro", + "contract": null, + "marketValue": "€500k", + "status": "" + }, + { + "id": "288415", + "name": "Léo Jardim", + "position": "Goalkeeper", + "dateOfBirth": "Mar 20, 1995", + "age": "21", + "nationality": [ + "Brazil", + "Italy" + ], + "currentClub": "Clube de Regatas Vasco da Gama", + "height": "1,88m", + "foot": "right", + "joinedOn": "Jan 1, 2015", + "joined": "", + "signedFrom": "Grêmio FBPA B (-2022)", + "contract": null, + "marketValue": "€100k", + "status": "" + }, + { + "id": "555016", + "name": "Brenno", + "position": "Goalkeeper", + "dateOfBirth": "Apr 1, 1999", + "age": "17", + "nationality": [ + "Brazil", + "Italy" + ], + "currentClub": "Fortaleza Esporte Clube", + "height": "1,90m", + "foot": "right", + "joinedOn": "Jan 1, 2019", + "joined": "Returned after loan spell with SSC Bari; date: Jun 30, 2024; fee: End of loan", + "signedFrom": "Grêmio FBPA B (-2022)", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "32568", + "name": "Pedro Geromel", + "position": "Centre-Back", + "dateOfBirth": "Sep 21, 1985", + "age": "31", + "nationality": [ + "Brazil", + "Italy" + ], + "currentClub": "Retired", + "height": "1,90m", + "foot": "right", + "joinedOn": "Jan 1, 2016", + "joined": "", + "signedFrom": "1.FC Köln", + "contract": null, + "marketValue": "€4.00m", + "status": "" + }, + { + "id": "52844", + "name": "Marcelo Oliveira", + "position": "Centre-Back", + "dateOfBirth": "Mar 29, 1987", + "age": "29", + "nationality": [ + "Brazil" + ], + "currentClub": "Retired", + "height": "1,84m", + "foot": "left", + "joinedOn": "Jan 1, 2015", + "joined": "", + "signedFrom": "Cruzeiro Esporte Clube", + "contract": null, + "marketValue": "€2.75m", + "status": "" + }, + { + "id": "145400", + "name": "Walter Kannemann", + "position": "Centre-Back", + "dateOfBirth": "Mar 14, 1991", + "age": "25", + "nationality": [ + "Argentina", + "Italy" + ], + "currentClub": "Grêmio Foot-Ball Porto Alegrense", + "height": "1,84m", + "foot": "left", + "joinedOn": "Jul 15, 2016", + "joined": "", + "signedFrom": "Atlas Guadalajara", + "contract": null, + "marketValue": "€1.50m", + "status": "Hip flexor problems - Return unknown" + }, + { + "id": "256453", + "name": "Bressan", + "position": "Centre-Back", + "dateOfBirth": "Jan 15, 1993", + "age": "23", + "nationality": [ + "Brazil", + "Italy" + ], + "currentClub": "OFI Crete FC", + "height": "1,85m", + "foot": "right", + "joinedOn": "Jan 1, 2013", + "joined": "", + "signedFrom": "Esporte Clube Juventude", + "contract": null, + "marketValue": "€1.50m", + "status": "" + }, + { + "id": "68679", + "name": "Bruno Rodrigo", + "position": "Centre-Back", + "dateOfBirth": "Apr 12, 1985", + "age": "31", + "nationality": [ + "Brazil" + ], + "currentClub": "Retired", + "height": "1,86m", + "foot": "right", + "joinedOn": "Mar 8, 2017", + "joined": "", + "signedFrom": "Without Club", + "contract": null, + "marketValue": "€1.25m", + "status": "" + }, + { + "id": "80499", + "name": "Paulo Miranda", + "position": "Centre-Back", + "dateOfBirth": "Aug 16, 1988", + "age": "28", + "nationality": [ + "Brazil" + ], + "currentClub": "Disqualification", + "height": "1,84m", + "foot": "right", + "joinedOn": "Jan 5, 2018", + "joined": "", + "signedFrom": ": Ablöse €800k", + "contract": null, + "marketValue": "€1.00m", + "status": "" + }, + { + "id": "292152", + "name": "Rafael Thyere", + "position": "Centre-Back", + "dateOfBirth": "May 17, 1993", + "age": "23", + "nationality": [ + "Brazil" + ], + "currentClub": "Sport Club do Recife", + "height": "1,90m", + "foot": "right", + "joinedOn": "Oct 1, 2013", + "joined": "", + "signedFrom": "Grêmio FBPA B (-2022)", + "contract": null, + "marketValue": "€500k", + "status": "" + }, + { + "id": "216071", + "name": "Gabriel", + "position": "Centre-Back", + "dateOfBirth": "Feb 28, 1989", + "age": "27", + "nationality": [ + "Brazil" + ], + "currentClub": "Without Club", + "height": "1,91m", + "foot": "right", + "joinedOn": "Jan 1, 2015", + "joined": "", + "signedFrom": "CE Lajeadense", + "contract": null, + "marketValue": "€250k", + "status": "Knee surgery - Return unknown" + }, + { + "id": "445101", + "name": "Rodrigues", + "position": "Centre-Back", + "dateOfBirth": "Oct 10, 1997", + "age": "19", + "nationality": [ + "Brazil" + ], + "currentClub": "San Jose Earthquakes", + "height": "1,88m", + "foot": "right", + "joinedOn": "Aug 9, 2019", + "joined": "", + "signedFrom": "ABC Futebol Clube (RN)", + "contract": null, + "marketValue": "€100k", + "status": "" + }, + { + "id": "539183", + "name": "Anderson", + "position": "Centre-Back", + "dateOfBirth": "Mar 2, 1995", + "age": "21", + "nationality": [ + "Brazil" + ], + "currentClub": "Bolívar La Paz", + "height": "1,86m", + "foot": "right", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "555015", + "name": "Ruan", + "position": "Centre-Back", + "dateOfBirth": "Jun 7, 1999", + "age": "17", + "nationality": [ + "Brazil" + ], + "currentClub": "São Paulo Futebol Clube", + "height": "1,87m", + "foot": "right", + "joinedOn": "Aug 12, 2021", + "joined": "", + "signedFrom": "US Sassuolo", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "689524", + "name": "Mendonça", + "position": "Centre-Back", + "dateOfBirth": "Aug 15, 1995", + "age": "21", + "nationality": [ + "Brazil" + ], + "currentClub": "Retrô FC Brasil", + "height": "1,94m", + "foot": "left", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "555634", + "name": "Derlan", + "position": "Centre-Back", + "dateOfBirth": "Feb 3, 1996", + "age": "20", + "nationality": [ + "Brazil" + ], + "currentClub": "Oita Trinita", + "height": "1,87m", + "foot": "left", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "476366", + "name": "Denílson", + "position": "Centre-Back", + "dateOfBirth": "Apr 18, 1995", + "age": "21", + "nationality": [ + "Brazil" + ], + "currentClub": "Retrô FC Brasil", + "height": "1,87m", + "foot": "right", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "182216", + "name": "Bruno Cortez", + "position": "Left-Back", + "dateOfBirth": "Mar 11, 1987", + "age": "29", + "nationality": [ + "Brazil" + ], + "currentClub": "Without Club", + "height": "1,79m", + "foot": "left", + "joinedOn": "Jan 30, 2017", + "joined": "", + "signedFrom": "São Paulo Futebol Clube", + "contract": null, + "marketValue": "€700k", + "status": "" + }, + { + "id": "322781", + "name": "Breno Lorran", + "position": "Left-Back", + "dateOfBirth": "Mar 6, 1995", + "age": "21", + "nationality": [ + "Brazil" + ], + "currentClub": "Marília AC (SP)", + "height": "1,74m", + "foot": "left", + "joinedOn": "Jul 1, 2013", + "joined": "", + "signedFrom": "Red Bull Brasil (SP)", + "contract": null, + "marketValue": "€500k", + "status": "" + }, + { + "id": "406676", + "name": "Juninho Capixaba", + "position": "Left-Back", + "dateOfBirth": "Jul 6, 1997", + "age": "19", + "nationality": [ + "Brazil" + ], + "currentClub": "Red Bull Bragantino", + "height": "1,76m", + "foot": "left", + "joinedOn": "May 17, 2019", + "joined": "", + "signedFrom": "Sport Club Corinthians Paulista", + "contract": null, + "marketValue": "€50k", + "status": "" + }, + { + "id": "552548", + "name": "Guilherme Guedes", + "position": "Left-Back", + "dateOfBirth": "May 18, 1999", + "age": "17", + "nationality": [ + "Brazil" + ], + "currentClub": "Navbahor Namangan", + "height": "1,77m", + "foot": "left", + "joinedOn": "Jan 1, 2020", + "joined": "", + "signedFrom": "Grêmio FBPA B (-2022)", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "75083", + "name": "Edílson", + "position": "Right-Back", + "dateOfBirth": "Jul 27, 1986", + "age": "30", + "nationality": [ + "Brazil" + ], + "currentClub": "Retired", + "height": "1,77m", + "foot": "right", + "joinedOn": "Apr 1, 2022", + "joined": "", + "signedFrom": "Avaí FC", + "contract": null, + "marketValue": "€1.50m", + "status": "" + }, + { + "id": "177845", + "name": "Madson", + "position": "Right-Back", + "dateOfBirth": "Jan 13, 1992", + "age": "24", + "nationality": [ + "Brazil" + ], + "currentClub": "Without Club", + "height": "1,82m", + "foot": "right", + "joinedOn": "Jan 1, 2018", + "joined": "", + "signedFrom": "Clube de Regatas Vasco da Gama", + "contract": null, + "marketValue": "€1.50m", + "status": "Injury to the ankle - Return unknown" + }, + { + "id": "29368", + "name": "Léo Moura", + "position": "Right-Back", + "dateOfBirth": "Oct 23, 1978", + "age": "38", + "nationality": [ + "Brazil" + ], + "currentClub": "Retired", + "height": "1,76m", + "foot": "right", + "joinedOn": "Jan 16, 2017", + "joined": "", + "signedFrom": "Santa Cruz FC (PE)", + "contract": null, + "marketValue": "€500k", + "status": "" + }, + { + "id": "347016", + "name": "Léo Gomes", + "position": "Right-Back", + "dateOfBirth": "Mar 30, 1996", + "age": "20", + "nationality": [ + "Brazil" + ], + "currentClub": "Without Club", + "height": "1,78m", + "foot": "right", + "joinedOn": "Jan 16, 2017", + "joined": "", + "signedFrom": "Boa EC", + "contract": null, + "marketValue": "€150k", + "status": "" + }, + { + "id": "555012", + "name": "Felipe Albuquerque", + "position": "Right-Back", + "dateOfBirth": "Sep 27, 1999", + "age": "17", + "nationality": [ + "Brazil" + ], + "currentClub": "AA Internacional de Limeira", + "height": "1,74m", + "foot": "right", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "366948", + "name": "Jailson", + "position": "Defensive Midfield", + "dateOfBirth": "Sep 7, 1995", + "age": "21", + "nationality": [ + "Brazil" + ], + "currentClub": "Celta de Vigo", + "height": "1,87m", + "foot": "right", + "joinedOn": "Jan 1, 2015", + "joined": "", + "signedFrom": "Grêmio FBPA U20", + "contract": null, + "marketValue": "€1.00m", + "status": "Adductor pain - Return unknown" + }, + { + "id": "435186", + "name": "Michel", + "position": "Defensive Midfield", + "dateOfBirth": "Mar 22, 1990", + "age": "26", + "nationality": [ + "Brazil" + ], + "currentClub": "Without Club", + "height": "1,75m", + "foot": "both", + "joinedOn": "Jan 1, 2018", + "joined": "", + "signedFrom": "Grêmio Novorizontino", + "contract": null, + "marketValue": "€750k", + "status": "" + }, + { + "id": "405727", + "name": "Kaio Mendes", + "position": "Defensive Midfield", + "dateOfBirth": "Mar 18, 1995", + "age": "21", + "nationality": [ + "Brazil" + ], + "currentClub": "Ituano Futebol Clube (SP)", + "height": "1,73m", + "foot": "right", + "joinedOn": "Jan 1, 2016", + "joined": "", + "signedFrom": "Grêmio FBPA U20", + "contract": null, + "marketValue": "€250k", + "status": "" + }, + { + "id": "346705", + "name": "Balbino", + "position": "Defensive Midfield", + "dateOfBirth": "Jan 19, 1997", + "age": "19", + "nationality": [ + "Brazil" + ], + "currentClub": "EC Cruzeiro", + "height": "1,82m", + "foot": "left", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "€100k", + "status": "" + }, + { + "id": "362842", + "name": "Arthur Melo", + "position": "Defensive Midfield", + "dateOfBirth": "Aug 12, 1996", + "age": "20", + "nationality": [ + "Brazil" + ], + "currentClub": "Juventus FC", + "height": "1,72m", + "foot": "right", + "joinedOn": "Jan 1, 2017", + "joined": "", + "signedFrom": "Grêmio FBPA B (-2022)", + "contract": null, + "marketValue": "€100k", + "status": "" + }, + { + "id": "376867", + "name": "Moisés Gaúcho", + "position": "Defensive Midfield", + "dateOfBirth": "Sep 24, 1994", + "age": "22", + "nationality": [ + "Brazil" + ], + "currentClub": "Zakho SC", + "height": "1,81m", + "foot": "right", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "€100k", + "status": "" + }, + { + "id": "520629", + "name": "Filipe Machado", + "position": "Defensive Midfield", + "dateOfBirth": "Jan 20, 1996", + "age": "20", + "nationality": [ + "Brazil" + ], + "currentClub": "Esporte Clube Vitória", + "height": "1,74m", + "foot": "right", + "joinedOn": "Jan 1, 2016", + "joined": "", + "signedFrom": "Grêmio FBPA U20", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "643282", + "name": "Rodrigo Ancheta", + "position": "Defensive Midfield", + "dateOfBirth": "Jan 2, 1997", + "age": "19", + "nationality": [ + "Uruguay", + "Brazil" + ], + "currentClub": "Without Club", + "height": "1,85m", + "foot": "right", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "258070", + "name": "Ramiro", + "position": "Central Midfield", + "dateOfBirth": "May 22, 1993", + "age": "23", + "nationality": [ + "Brazil", + "Italy" + ], + "currentClub": "FC Dallas", + "height": "1,69m", + "foot": "right", + "joinedOn": "Jan 1, 2013", + "joined": "", + "signedFrom": "Esporte Clube Juventude", + "contract": null, + "marketValue": "€4.00m", + "status": "" + }, + { + "id": "17663", + "name": "Cícero", + "position": "Central Midfield", + "dateOfBirth": "Aug 26, 1984", + "age": "32", + "nationality": [ + "Brazil" + ], + "currentClub": "Retired", + "height": "m", + "foot": "N/A", + "joinedOn": "Sep 29, 2017", + "joined": "", + "signedFrom": "Fluminense Football Club", + "contract": null, + "marketValue": "€4.00m", + "status": "" + }, + { + "id": "50047", + "name": "Maicon", + "position": "Central Midfield", + "dateOfBirth": "Sep 14, 1985", + "age": "31", + "nationality": [ + "Brazil" + ], + "currentClub": "Retired", + "height": "1,84m", + "foot": "right", + "joinedOn": "Aug 30, 2021", + "joined": "", + "signedFrom": "São Paulo Futebol Clube", + "contract": null, + "marketValue": "€2.50m", + "status": "" + }, + { + "id": "229736", + "name": "Alisson", + "position": "Central Midfield", + "dateOfBirth": "Jun 25, 1993", + "age": "23", + "nationality": [ + "Brazil" + ], + "currentClub": "São Paulo Futebol Clube", + "height": "1,74m", + "foot": "right", + "joinedOn": "Jan 1, 2018", + "joined": "", + "signedFrom": "Cruzeiro Esporte Clube", + "contract": null, + "marketValue": "€2.50m", + "status": "" + }, + { + "id": "405726", + "name": "Felipe Tontini", + "position": "Central Midfield", + "dateOfBirth": "Jul 16, 1995", + "age": "21", + "nationality": [ + "Brazil", + "Italy" + ], + "currentClub": "EC São Luiz", + "height": "1,83m", + "foot": "both", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "€100k", + "status": "" + }, + { + "id": "552549", + "name": "Matheus Henrique", + "position": "Central Midfield", + "dateOfBirth": "Dec 19, 1997", + "age": "19", + "nationality": [ + "Brazil" + ], + "currentClub": "Cruzeiro Esporte Clube", + "height": "1,75m", + "foot": "right", + "joinedOn": "Sep 27, 2018", + "joined": "", + "signedFrom": "AD São Caetano (SP)", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "313106", + "name": "Luan", + "position": "Attacking Midfield", + "dateOfBirth": "Mar 27, 1993", + "age": "23", + "nationality": [ + "Brazil" + ], + "currentClub": "Without Club", + "height": "1,80m", + "foot": "right", + "joinedOn": "Jul 27, 2023", + "joined": "", + "signedFrom": "Sport Club Corinthians Paulista", + "contract": null, + "marketValue": "€10.00m", + "status": "" + }, + { + "id": "54183", + "name": "Maicosuel", + "position": "Attacking Midfield", + "dateOfBirth": "Jun 16, 1986", + "age": "30", + "nationality": [ + "Brazil" + ], + "currentClub": "Retired", + "height": "m", + "foot": "N/A", + "joinedOn": "Feb 8, 2018", + "joined": "", + "signedFrom": "São Paulo Futebol Clube", + "contract": null, + "marketValue": "€2.50m", + "status": "" + }, + { + "id": "34332", + "name": "Douglas", + "position": "Attacking Midfield", + "dateOfBirth": "Feb 18, 1982", + "age": "34", + "nationality": [ + "Brazil" + ], + "currentClub": "Retired", + "height": "1,76m", + "foot": "left", + "joinedOn": "Jan 24, 2017", + "joined": "", + "signedFrom": "Atlético Monte Azul (SP)", + "contract": null, + "marketValue": "€1.00m", + "status": "" + }, + { + "id": "351738", + "name": "Lincoln", + "position": "Attacking Midfield", + "dateOfBirth": "Nov 7, 1998", + "age": "18", + "nationality": [ + "Brazil" + ], + "currentClub": "Fenerbahce", + "height": "1,78m", + "foot": "left", + "joinedOn": "Feb 1, 2015", + "joined": "", + "signedFrom": "Grêmio FBPA U20", + "contract": null, + "marketValue": "€750k", + "status": "No eligibility - - Süper Lig" + }, + { + "id": "387611", + "name": "Lima", + "position": "Attacking Midfield", + "dateOfBirth": "Jun 11, 1996", + "age": "20", + "nationality": [ + "Brazil" + ], + "currentClub": "Fluminense Football Club", + "height": "1,81m", + "foot": "right", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "€100k", + "status": "" + }, + { + "id": "392487", + "name": "Thaciano", + "position": "Attacking Midfield", + "dateOfBirth": "May 12, 1995", + "age": "21", + "nationality": [ + "Brazil" + ], + "currentClub": "Esporte Clube Bahia", + "height": "1,82m", + "foot": "right", + "joinedOn": "Jul 1, 2019", + "joined": "", + "signedFrom": "Boa EC", + "contract": null, + "marketValue": "€100k", + "status": "" + }, + { + "id": "529646", + "name": "Patrick Machado", + "position": "Attacking Midfield", + "dateOfBirth": "Nov 23, 1998", + "age": "18", + "nationality": [ + "Brazil" + ], + "currentClub": "Volta Redonda Futebol Clube (RJ)", + "height": "1,75m", + "foot": "left", + "joinedOn": "May 26, 2019", + "joined": "", + "signedFrom": "Grêmio FBPA B (-2022)", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "561214", + "name": "Thonny Anderson", + "position": "Attacking Midfield", + "dateOfBirth": "Dec 27, 1997", + "age": "19", + "nationality": [ + "Brazil" + ], + "currentClub": "Red Bull Bragantino", + "height": "1,84m", + "foot": "left", + "joinedOn": "Jan 3, 2019", + "joined": "", + "signedFrom": "Cruzeiro Esporte Clube", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "351903", + "name": "Jean Pyerre", + "position": "Attacking Midfield", + "dateOfBirth": "May 7, 1998", + "age": "18", + "nationality": [ + "Brazil" + ], + "currentClub": "Ypiranga FC", + "height": "1,87m", + "foot": "right", + "joinedOn": "Jul 16, 2018", + "joined": "", + "signedFrom": "Grêmio FBPA U20", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "627099", + "name": "Isaque", + "position": "Attacking Midfield", + "dateOfBirth": "Apr 22, 1997", + "age": "19", + "nationality": [ + "Brazil" + ], + "currentClub": "Guarani Futebol Clube (SP)", + "height": "1,78m", + "foot": "right", + "joinedOn": "Jan 1, 2020", + "joined": "", + "signedFrom": "Grêmio FBPA B (-2022)", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "321239", + "name": "Everton", + "position": "Left Winger", + "dateOfBirth": "Mar 22, 1996", + "age": "20", + "nationality": [ + "Brazil" + ], + "currentClub": "CR Flamengo", + "height": "1,74m", + "foot": "right", + "joinedOn": "Jan 1, 2014", + "joined": "", + "signedFrom": "Fortaleza Esporte Clube", + "contract": null, + "marketValue": "€2.50m", + "status": "Achilles tendon rupture - Return unknown" + }, + { + "id": "76902", + "name": "Fernandinho", + "position": "Left Winger", + "dateOfBirth": "Nov 25, 1985", + "age": "31", + "nationality": [ + "Brazil" + ], + "currentClub": "Retrô FC Brasil", + "height": "1,73m", + "foot": "left", + "joinedOn": "Jul 10, 2014", + "joined": "", + "signedFrom": "Al-Jazira Club", + "contract": null, + "marketValue": "€1.25m", + "status": "" + }, + { + "id": "520636", + "name": "Dionathã", + "position": "Left Winger", + "dateOfBirth": "Jan 24, 1998", + "age": "18", + "nationality": [ + "Brazil" + ], + "currentClub": "EC São Luiz", + "height": "1,74m", + "foot": "both", + "joinedOn": "Jan 1, 2018", + "joined": "", + "signedFrom": "Grêmio FBPA B (-2022)", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "552547", + "name": "Lucas Poletto", + "position": "Left Winger", + "dateOfBirth": "Mar 29, 1995", + "age": "21", + "nationality": [ + "Brazil", + "Italy" + ], + "currentClub": "AE Kifisias", + "height": "1,81m", + "foot": "right", + "joinedOn": "Jan 1, 2018", + "joined": "", + "signedFrom": "Grêmio FBPA B (-2022)", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "520662", + "name": "Pepê", + "position": "Left Winger", + "dateOfBirth": "Feb 24, 1997", + "age": "19", + "nationality": [ + "Brazil", + "Italy" + ], + "currentClub": "FC Porto", + "height": "1,75m", + "foot": "right", + "joinedOn": "May 1, 2017", + "joined": "", + "signedFrom": "Grêmio FBPA U20", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "74758", + "name": "Marinho", + "position": "Right Winger", + "dateOfBirth": "May 29, 1990", + "age": "26", + "nationality": [ + "Brazil" + ], + "currentClub": "Fortaleza Esporte Clube", + "height": "1,69m", + "foot": "left", + "joinedOn": "Jun 30, 2018", + "joined": "", + "signedFrom": "Changchun Yatai", + "contract": null, + "marketValue": "€1.50m", + "status": "" + }, + { + "id": "393839", + "name": "Léo Tilica", + "position": "Right Winger", + "dateOfBirth": "Apr 20, 1995", + "age": "21", + "nationality": [ + "Brazil" + ], + "currentClub": "Al-Najma SC", + "height": "1,72m", + "foot": "right", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "€100k", + "status": "" + }, + { + "id": "553470", + "name": "Vico", + "position": "Right Winger", + "dateOfBirth": "Dec 3, 1996", + "age": "20", + "nationality": [ + "Brazil" + ], + "currentClub": "PSS Sleman", + "height": "1,74m", + "foot": "left", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "104509", + "name": "André Felipe", + "position": "Centre-Forward", + "dateOfBirth": "Sep 27, 1990", + "age": "26", + "nationality": [ + "Brazil" + ], + "currentClub": "Retired", + "height": "1,84m", + "foot": "right", + "joinedOn": "Feb 22, 2019", + "joined": "", + "signedFrom": "Sport Club do Recife", + "contract": null, + "marketValue": "€4.00m", + "status": "" + }, + { + "id": "195004", + "name": "Hernane", + "position": "Centre-Forward", + "dateOfBirth": "Apr 8, 1986", + "age": "30", + "nationality": [ + "Brazil" + ], + "currentClub": "Nacional FC", + "height": "1,83m", + "foot": "right", + "joinedOn": "Feb 22, 2018", + "joined": "", + "signedFrom": "Esporte Clube Bahia", + "contract": null, + "marketValue": "€3.00m", + "status": "" + }, + { + "id": "58516", + "name": "Lucas Barrios", + "position": "Centre-Forward", + "dateOfBirth": "Nov 13, 1984", + "age": "32", + "nationality": [ + "Paraguay", + "Argentina" + ], + "currentClub": "Retired", + "height": "1,89m", + "foot": "right", + "joinedOn": "Feb 24, 2017", + "joined": "", + "signedFrom": "Sociedade Esportiva Palmeiras", + "contract": null, + "marketValue": "€1.75m", + "status": "" + }, + { + "id": "379877", + "name": "Luis Henrique", + "position": "Centre-Forward", + "dateOfBirth": "Mar 17, 1998", + "age": "18", + "nationality": [ + "Brazil", + "Italy" + ], + "currentClub": "Paternò Calcio", + "height": "1,84m", + "foot": "left", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "€750k", + "status": "unknown injury - Return unknown" + }, + { + "id": "203136", + "name": "Yuri Mamute", + "position": "Centre-Forward", + "dateOfBirth": "May 7, 1995", + "age": "21", + "nationality": [ + "Brazil" + ], + "currentClub": "SHB Da Nang FC", + "height": "1,80m", + "foot": "right", + "joinedOn": "Jan 1, 2013", + "joined": "", + "signedFrom": "Grêmio FBPA B (-2022)", + "contract": null, + "marketValue": "€650k", + "status": "" + }, + { + "id": "80815", + "name": "Jael", + "position": "Centre-Forward", + "dateOfBirth": "Oct 30, 1988", + "age": "28", + "nationality": [ + "Brazil" + ], + "currentClub": "Without Club", + "height": "1,86m", + "foot": "right", + "joinedOn": "Jan 18, 2017", + "joined": "", + "signedFrom": "Joinville Esporte Clube (SC)", + "contract": null, + "marketValue": "€450k", + "status": "" + } + ] +} \ No newline at end of file diff --git a/tests/data/clubs/players/27_2019.json b/tests/data/clubs/players/27_2019.json new file mode 100644 index 0000000..40c146c --- /dev/null +++ b/tests/data/clubs/players/27_2019.json @@ -0,0 +1,744 @@ +{ + "id": "27", + "players": [ + { + "id": "17259", + "name": "Manuel Neuer", + "position": "Goalkeeper", + "dateOfBirth": "Mar 27, 1986", + "age": "34", + "nationality": [ + "Germany" + ], + "currentClub": "Bayern Munich", + "height": "1,93m", + "foot": "right", + "joinedOn": "Jul 1, 2011", + "joined": "", + "signedFrom": "FC Schalke 04", + "contract": null, + "marketValue": "€14.50m", + "status": "Team captain" + }, + { + "id": "40680", + "name": "Sven Ulreich", + "position": "Goalkeeper", + "dateOfBirth": "Aug 3, 1988", + "age": "31", + "nationality": [ + "Germany" + ], + "currentClub": "Bayern Munich", + "height": "1,92m", + "foot": "right", + "joinedOn": "Jul 1, 2021", + "joined": "", + "signedFrom": "Hamburger SV", + "contract": null, + "marketValue": "€3.50m", + "status": "" + }, + { + "id": "336307", + "name": "Christian Früchtl", + "position": "Goalkeeper", + "dateOfBirth": "Jan 28, 2000", + "age": "20", + "nationality": [ + "Germany" + ], + "currentClub": "US Lecce", + "height": "1,93m", + "foot": "left", + "joinedOn": "Jul 1, 2017", + "joined": "", + "signedFrom": ": Ablöse -", + "contract": null, + "marketValue": "€525k", + "status": "" + }, + { + "id": "317444", + "name": "Ron-Thorben Hoffmann", + "position": "Goalkeeper", + "dateOfBirth": "Apr 4, 1999", + "age": "21", + "nationality": [ + "Germany" + ], + "currentClub": "FC Schalke 04", + "height": "1,92m", + "foot": "right", + "joinedOn": "Jul 1, 2018", + "joined": "", + "signedFrom": ": Ablöse -", + "contract": null, + "marketValue": "€200k", + "status": "" + }, + { + "id": "59016", + "name": "David Alaba", + "position": "Centre-Back", + "dateOfBirth": "Jun 24, 1992", + "age": "28", + "nationality": [ + "Austria" + ], + "currentClub": "Real Madrid", + "height": "1,80m", + "foot": "left", + "joinedOn": "Jul 1, 2010", + "joined": "", + "signedFrom": ": Ablöse -", + "contract": null, + "marketValue": "€52.00m", + "status": "" + }, + { + "id": "166601", + "name": "Niklas Süle", + "position": "Centre-Back", + "dateOfBirth": "Sep 3, 1995", + "age": "24", + "nationality": [ + "Germany" + ], + "currentClub": "Borussia Dortmund", + "height": "1,95m", + "foot": "right", + "joinedOn": "Jul 1, 2017", + "joined": "", + "signedFrom": "TSG 1899 Hoffenheim", + "contract": null, + "marketValue": "€48.00m", + "status": "Syndesmotic ligament tear - Return expected on Feb 28, 2025" + }, + { + "id": "353366", + "name": "Benjamin Pavard", + "position": "Centre-Back", + "dateOfBirth": "Mar 28, 1996", + "age": "24", + "nationality": [ + "France" + ], + "currentClub": "Inter Milan", + "height": "1,86m", + "foot": "right", + "joinedOn": "Jul 1, 2019", + "joined": "", + "signedFrom": "VfB Stuttgart", + "contract": null, + "marketValue": "€28.00m", + "status": "" + }, + { + "id": "26485", + "name": "Jérôme Boateng", + "position": "Centre-Back", + "dateOfBirth": "Sep 3, 1988", + "age": "31", + "nationality": [ + "Germany" + ], + "currentClub": "LASK", + "height": "1,92m", + "foot": "right", + "joinedOn": "Jul 14, 2011", + "joined": "", + "signedFrom": ": Ablöse €13.50m", + "contract": null, + "marketValue": "€12.00m", + "status": "" + }, + { + "id": "345780", + "name": "Lukas Mai", + "position": "Centre-Back", + "dateOfBirth": "Mar 31, 2000", + "age": "20", + "nationality": [ + "Germany" + ], + "currentClub": "FC Lugano", + "height": "1,88m", + "foot": "right", + "joinedOn": "Jul 1, 2019", + "joined": "", + "signedFrom": ": Ablöse -", + "contract": null, + "marketValue": "€2.30m", + "status": "" + }, + { + "id": "578539", + "name": "Chris Richards", + "position": "Centre-Back", + "dateOfBirth": "Mar 28, 2000", + "age": "20", + "nationality": [ + "United States" + ], + "currentClub": "Crystal Palace", + "height": "1,88m", + "foot": "right", + "joinedOn": "Jul 1, 2020", + "joined": "", + "signedFrom": ": Ablöse -", + "contract": null, + "marketValue": "€1.80m", + "status": "" + }, + { + "id": "580193", + "name": "Bright Arrey-Mbi", + "position": "Centre-Back", + "dateOfBirth": "Mar 26, 2003", + "age": "17", + "nationality": [ + "Germany", + "England" + ], + "currentClub": "SC Braga", + "height": "1,87m", + "foot": "left", + "joinedOn": "Jan 30, 2022", + "joined": "", + "signedFrom": ": Ablöse -", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "281963", + "name": "Lucas Hernández", + "position": "Left-Back", + "dateOfBirth": "Feb 14, 1996", + "age": "24", + "nationality": [ + "France", + "Spain" + ], + "currentClub": "Paris Saint-Germain", + "height": "1,84m", + "foot": "left", + "joinedOn": "Jul 1, 2019", + "joined": "", + "signedFrom": ": Ablöse €80.00m", + "contract": null, + "marketValue": "€56.00m", + "status": "" + }, + { + "id": "424204", + "name": "Alphonso Davies", + "position": "Left-Back", + "dateOfBirth": "Nov 2, 2000", + "age": "19", + "nationality": [ + "Canada", + "Liberia" + ], + "currentClub": "Bayern Munich", + "height": "1,85m", + "foot": "left", + "joinedOn": "Jan 1, 2019", + "joined": "", + "signedFrom": "Vancouver Whitecaps FC", + "contract": null, + "marketValue": "€45.00m", + "status": "" + }, + { + "id": "280730", + "name": "Álvaro Odriozola", + "position": "Right-Back", + "dateOfBirth": "Dec 14, 1995", + "age": "24", + "nationality": [ + "Spain" + ], + "currentClub": "Real Sociedad", + "height": "1,76m", + "foot": "right", + "joinedOn": "Jan 22, 2020", + "joined": "", + "signedFrom": "Real Madrid", + "contract": null, + "marketValue": "€16.00m", + "status": "" + }, + { + "id": "351071", + "name": "Ryan Johansson", + "position": "Right-Back", + "dateOfBirth": "Feb 15, 2001", + "age": "19", + "nationality": [ + "Luxembourg", + "Ireland" + ], + "currentClub": "SV Wehen Wiesbaden", + "height": "1,86m", + "foot": "both", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "€50k", + "status": "" + }, + { + "id": "161056", + "name": "Joshua Kimmich", + "position": "Defensive Midfield", + "dateOfBirth": "Feb 8, 1995", + "age": "25", + "nationality": [ + "Germany" + ], + "currentClub": "Bayern Munich", + "height": "1,77m", + "foot": "right", + "joinedOn": "Jul 2, 2015", + "joined": "", + "signedFrom": "VfB Stuttgart", + "contract": null, + "marketValue": "€64.00m", + "status": "" + }, + { + "id": "44017", + "name": "Javi Martínez", + "position": "Defensive Midfield", + "dateOfBirth": "Sep 2, 1988", + "age": "31", + "nationality": [ + "Spain" + ], + "currentClub": "Qatar SC", + "height": "1,89m", + "foot": "right", + "joinedOn": "Aug 29, 2012", + "joined": "", + "signedFrom": "Athletic Bilbao", + "contract": null, + "marketValue": "€13.00m", + "status": "" + }, + { + "id": "356640", + "name": "Paul Will", + "position": "Defensive Midfield", + "dateOfBirth": "Mar 1, 1999", + "age": "21", + "nationality": [ + "Germany" + ], + "currentClub": "SV Darmstadt 98", + "height": "1,85m", + "foot": "left", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "€250k", + "status": "Cruciate ligament tear - Return expected on Jun 30, 2025" + }, + { + "id": "60444", + "name": "Thiago Alcántara", + "position": "Central Midfield", + "dateOfBirth": "Apr 11, 1991", + "age": "29", + "nationality": [ + "Spain", + "Brazil" + ], + "currentClub": "Retired", + "height": "1,74m", + "foot": "right", + "joinedOn": "Jul 14, 2013", + "joined": "", + "signedFrom": "FC Barcelona", + "contract": null, + "marketValue": "€48.00m", + "status": "" + }, + { + "id": "153084", + "name": "Leon Goretzka", + "position": "Central Midfield", + "dateOfBirth": "Feb 6, 1995", + "age": "25", + "nationality": [ + "Germany" + ], + "currentClub": "Bayern Munich", + "height": "1,89m", + "foot": "right", + "joinedOn": "Jul 1, 2018", + "joined": "", + "signedFrom": "FC Schalke 04", + "contract": null, + "marketValue": "€40.00m", + "status": "" + }, + { + "id": "190393", + "name": "Corentin Tolisso", + "position": "Central Midfield", + "dateOfBirth": "Aug 3, 1994", + "age": "25", + "nationality": [ + "France", + "Togo" + ], + "currentClub": "Olympique Lyon", + "height": "1,81m", + "foot": "right", + "joinedOn": "Jul 1, 2017", + "joined": "", + "signedFrom": ": Ablöse €41.50m", + "contract": null, + "marketValue": "€25.50m", + "status": "" + }, + { + "id": "258027", + "name": "Renato Sanches", + "position": "Central Midfield", + "dateOfBirth": "Aug 18, 1997", + "age": "22", + "nationality": [ + "Portugal", + "Sao Tome and Principe" + ], + "currentClub": "SL Benfica", + "height": "1,76m", + "foot": "right", + "joinedOn": "Jul 1, 2016", + "joined": "", + "signedFrom": "SL Benfica", + "contract": null, + "marketValue": "€16.00m", + "status": "" + }, + { + "id": "344600", + "name": "Michaël Cuisance", + "position": "Central Midfield", + "dateOfBirth": "Aug 16, 1999", + "age": "20", + "nationality": [ + "France" + ], + "currentClub": "Hertha BSC", + "height": "1,81m", + "foot": "left", + "joinedOn": "Aug 18, 2019", + "joined": "", + "signedFrom": "Borussia Mönchengladbach", + "contract": null, + "marketValue": "€8.00m", + "status": "" + }, + { + "id": "80444", + "name": "Philippe Coutinho", + "position": "Attacking Midfield", + "dateOfBirth": "Jun 12, 1992", + "age": "28", + "nationality": [ + "Brazil", + "Portugal" + ], + "currentClub": "Clube de Regatas Vasco da Gama", + "height": "1,72m", + "foot": "right", + "joinedOn": "Aug 19, 2019", + "joined": "", + "signedFrom": "FC Barcelona", + "contract": null, + "marketValue": "€56.00m", + "status": "" + }, + { + "id": "297583", + "name": "Woo-yeong Jeong", + "position": "Attacking Midfield", + "dateOfBirth": "Sep 20, 1999", + "age": "20", + "nationality": [ + "Korea, South" + ], + "currentClub": "1.FC Union Berlin", + "height": "1,79m", + "foot": "right", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "€1.80m", + "status": "" + }, + { + "id": "350357", + "name": "Sarpreet Singh", + "position": "Attacking Midfield", + "dateOfBirth": "Feb 20, 1999", + "age": "21", + "nationality": [ + "New Zealand", + "India" + ], + "currentClub": "União de Leiria", + "height": "1,77m", + "foot": "left", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "€900k", + "status": "" + }, + { + "id": "406614", + "name": "Oliver Batista Meier", + "position": "Attacking Midfield", + "dateOfBirth": "Feb 16, 2001", + "age": "19", + "nationality": [ + "Germany", + "Brazil" + ], + "currentClub": "SG Dynamo Dresden", + "height": "1,80m", + "foot": "right", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "€900k", + "status": "" + }, + { + "id": "467437", + "name": "Malik Tillman", + "position": "Attacking Midfield", + "dateOfBirth": "May 28, 2002", + "age": "18", + "nationality": [ + "United States", + "Germany" + ], + "currentClub": "PSV Eindhoven", + "height": "1,87m", + "foot": "right", + "joinedOn": "Jul 1, 2021", + "joined": "Returned after loan spell with PSV Eindhoven; date: Jun 30, 2024; fee: End of loan", + "signedFrom": ": Ablöse -", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "580195", + "name": "Jamal Musiala", + "position": "Attacking Midfield", + "dateOfBirth": "Feb 26, 2003", + "age": "17", + "nationality": [ + "Germany", + "England" + ], + "currentClub": "Bayern Munich", + "height": "1,84m", + "foot": "right", + "joinedOn": "Jul 1, 2020", + "joined": "", + "signedFrom": ": Ablöse -", + "contract": null, + "marketValue": "-", + "status": "influenza - Return unknown" + }, + { + "id": "159471", + "name": "Serge Gnabry", + "position": "Left Winger", + "dateOfBirth": "Jul 14, 1995", + "age": "24", + "nationality": [ + "Germany", + "Cote d'Ivoire" + ], + "currentClub": "Bayern Munich", + "height": "1,76m", + "foot": "right", + "joinedOn": "Jul 1, 2017", + "joined": "", + "signedFrom": "SV Werder Bremen", + "contract": null, + "marketValue": "€72.00m", + "status": "" + }, + { + "id": "243714", + "name": "Kingsley Coman", + "position": "Left Winger", + "dateOfBirth": "Jun 13, 1996", + "age": "24", + "nationality": [ + "France", + "Guadeloupe" + ], + "currentClub": "Bayern Munich", + "height": "1,81m", + "foot": "right", + "joinedOn": "Jul 1, 2017", + "joined": "", + "signedFrom": ": Ablöse €21.00m", + "contract": null, + "marketValue": "€40.00m", + "status": "" + }, + { + "id": "42460", + "name": "Ivan Perisic", + "position": "Left Winger", + "dateOfBirth": "Feb 2, 1989", + "age": "31", + "nationality": [ + "Croatia" + ], + "currentClub": "PSV Eindhoven", + "height": "1,86m", + "foot": "both", + "joinedOn": "Aug 13, 2019", + "joined": "", + "signedFrom": ": Ablöse €5.00m", + "contract": null, + "marketValue": "€17.50m", + "status": "No eligibility - until Jan 31, 2025 - UEFA Champions League" + }, + { + "id": "58358", + "name": "Thomas Müller", + "position": "Second Striker", + "dateOfBirth": "Sep 13, 1989", + "age": "30", + "nationality": [ + "Germany" + ], + "currentClub": "Bayern Munich", + "height": "1,85m", + "foot": "right", + "joinedOn": "Jul 1, 2009", + "joined": "", + "signedFrom": ": Ablöse -", + "contract": null, + "marketValue": "€25.50m", + "status": "" + }, + { + "id": "483974", + "name": "Leon Dajaku", + "position": "Second Striker", + "dateOfBirth": "Apr 12, 2001", + "age": "19", + "nationality": [ + "Germany", + "Kosovo" + ], + "currentClub": "HNK Hajduk Split", + "height": "1,80m", + "foot": "right", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "€2.30m", + "status": "" + }, + { + "id": "38253", + "name": "Robert Lewandowski", + "position": "Centre-Forward", + "dateOfBirth": "Aug 21, 1988", + "age": "31", + "nationality": [ + "Poland" + ], + "currentClub": "FC Barcelona", + "height": "1,85m", + "foot": "right", + "joinedOn": "Jul 1, 2014", + "joined": "", + "signedFrom": "Borussia Dortmund", + "contract": null, + "marketValue": "€56.00m", + "status": "" + }, + { + "id": "435648", + "name": "Joshua Zirkzee", + "position": "Centre-Forward", + "dateOfBirth": "May 22, 2001", + "age": "19", + "nationality": [ + "Netherlands", + "Nigeria" + ], + "currentClub": "Manchester United", + "height": "1,93m", + "foot": "right", + "joinedOn": "Jul 1, 2020", + "joined": "", + "signedFrom": ": Ablöse -", + "contract": null, + "marketValue": "€6.30m", + "status": "" + }, + { + "id": "343337", + "name": "Fiete Arp", + "position": "Centre-Forward", + "dateOfBirth": "Jan 6, 2000", + "age": "20", + "nationality": [ + "Germany" + ], + "currentClub": "Holstein Kiel", + "height": "1,86m", + "foot": "right", + "joinedOn": "Jul 1, 2019", + "joined": "", + "signedFrom": ": Ablöse €3.00m", + "contract": null, + "marketValue": "€2.70m", + "status": "" + }, + { + "id": "154819", + "name": "Kwasi Wriedt", + "position": "Centre-Forward", + "dateOfBirth": "Jul 10, 1994", + "age": "25", + "nationality": [ + "Ghana", + "Germany" + ], + "currentClub": "Manisa FK", + "height": "1,88m", + "foot": "left", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "€800k", + "status": "" + } + ] +} \ No newline at end of file diff --git a/tests/data/clubs/players/31_2018.json b/tests/data/clubs/players/31_2018.json new file mode 100644 index 0000000..8fb355d --- /dev/null +++ b/tests/data/clubs/players/31_2018.json @@ -0,0 +1,761 @@ +{ + "id": "31", + "players": [ + { + "id": "105470", + "name": "Alisson", + "position": "Goalkeeper", + "dateOfBirth": "Oct 2, 1992", + "age": "26", + "nationality": [ + "Brazil" + ], + "currentClub": "Liverpool FC", + "height": "1,93m", + "foot": "right", + "joinedOn": "Jul 19, 2018", + "joined": "", + "signedFrom": "AS Roma", + "contract": null, + "marketValue": "€80.00m", + "status": "" + }, + { + "id": "50219", + "name": "Simon Mignolet", + "position": "Goalkeeper", + "dateOfBirth": "Mar 6, 1988", + "age": "31", + "nationality": [ + "Belgium" + ], + "currentClub": "Club Brugge KV", + "height": "1,93m", + "foot": "right", + "joinedOn": "Jul 1, 2013", + "joined": "", + "signedFrom": "Sunderland AFC", + "contract": null, + "marketValue": "€8.00m", + "status": "" + }, + { + "id": "85864", + "name": "Loris Karius", + "position": "Goalkeeper", + "dateOfBirth": "Jun 22, 1993", + "age": "26", + "nationality": [ + "Germany" + ], + "currentClub": "Without Club", + "height": "1,91m", + "foot": "right", + "joinedOn": "Jul 1, 2016", + "joined": "", + "signedFrom": ": Ablöse €6.20m", + "contract": null, + "marketValue": "€5.00m", + "status": "" + }, + { + "id": "55247", + "name": "Ádám Bogdán", + "position": "Goalkeeper", + "dateOfBirth": "Sep 27, 1987", + "age": "31", + "nationality": [ + "Hungary" + ], + "currentClub": "Retired", + "height": "1,94m", + "foot": "right", + "joinedOn": "Jul 1, 2015", + "joined": "", + "signedFrom": "Bolton Wanderers", + "contract": null, + "marketValue": "€500k", + "status": "" + }, + { + "id": "346551", + "name": "Kamil Grabara", + "position": "Goalkeeper", + "dateOfBirth": "Jan 8, 1999", + "age": "20", + "nationality": [ + "Poland" + ], + "currentClub": "VfL Wolfsburg", + "height": "1,95m", + "foot": "right", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "€400k", + "status": "" + }, + { + "id": "340918", + "name": "Caoimhín Kelleher", + "position": "Goalkeeper", + "dateOfBirth": "Nov 23, 1998", + "age": "20", + "nationality": [ + "Ireland" + ], + "currentClub": "Liverpool FC", + "height": "1,88m", + "foot": "right", + "joinedOn": "Jul 1, 2019", + "joined": "", + "signedFrom": ": Ablöse -", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "139208", + "name": "Virgil van Dijk", + "position": "Centre-Back", + "dateOfBirth": "Jul 8, 1991", + "age": "27", + "nationality": [ + "Netherlands", + "Suriname" + ], + "currentClub": "Liverpool FC", + "height": "1,95m", + "foot": "right", + "joinedOn": "Jan 1, 2018", + "joined": "", + "signedFrom": "Southampton FC", + "contract": null, + "marketValue": "€90.00m", + "status": "Team captain" + }, + { + "id": "256178", + "name": "Joe Gomez", + "position": "Centre-Back", + "dateOfBirth": "May 23, 1997", + "age": "22", + "nationality": [ + "England", + "The Gambia" + ], + "currentClub": "Liverpool FC", + "height": "1,88m", + "foot": "right", + "joinedOn": "Jul 1, 2015", + "joined": "", + "signedFrom": "Charlton Athletic", + "contract": null, + "marketValue": "€35.00m", + "status": "Hamstring injury - Return unknown" + }, + { + "id": "82105", + "name": "Joel Matip", + "position": "Centre-Back", + "dateOfBirth": "Aug 8, 1991", + "age": "27", + "nationality": [ + "Cameroon", + "Germany" + ], + "currentClub": "Retired", + "height": "1,95m", + "foot": "right", + "joinedOn": "Jul 1, 2016", + "joined": "", + "signedFrom": "FC Schalke 04", + "contract": null, + "marketValue": "€30.00m", + "status": "" + }, + { + "id": "37838", + "name": "Dejan Lovren", + "position": "Centre-Back", + "dateOfBirth": "Jul 5, 1989", + "age": "29", + "nationality": [ + "Croatia" + ], + "currentClub": "PAOK Thessaloniki", + "height": "1,88m", + "foot": "right", + "joinedOn": "Jul 27, 2014", + "joined": "", + "signedFrom": "Southampton FC", + "contract": null, + "marketValue": "€20.00m", + "status": "No eligibility - until Jun 30, 2025 - UEFA Europa League" + }, + { + "id": "234803", + "name": "Andrew Robertson", + "position": "Left-Back", + "dateOfBirth": "Mar 11, 1994", + "age": "25", + "nationality": [ + "Scotland" + ], + "currentClub": "Liverpool FC", + "height": "1,78m", + "foot": "left", + "joinedOn": "Jul 21, 2017", + "joined": "", + "signedFrom": ": Ablöse €9.00m", + "contract": null, + "marketValue": "€60.00m", + "status": "" + }, + { + "id": "207917", + "name": "Alberto Moreno", + "position": "Left-Back", + "dateOfBirth": "Jul 5, 1992", + "age": "26", + "nationality": [ + "Spain" + ], + "currentClub": "Como 1907", + "height": "1,71m", + "foot": "left", + "joinedOn": "Aug 13, 2014", + "joined": "", + "signedFrom": "Sevilla FC", + "contract": null, + "marketValue": "€9.00m", + "status": "" + }, + { + "id": "314353", + "name": "Trent Alexander-Arnold", + "position": "Right-Back", + "dateOfBirth": "Oct 7, 1998", + "age": "20", + "nationality": [ + "England" + ], + "currentClub": "Liverpool FC", + "height": "1,75m", + "foot": "right", + "joinedOn": "Jul 1, 2016", + "joined": "", + "signedFrom": ": Ablöse -", + "contract": null, + "marketValue": "€80.00m", + "status": "" + }, + { + "id": "85177", + "name": "Nathaniel Clyne", + "position": "Right-Back", + "dateOfBirth": "Apr 5, 1991", + "age": "28", + "nationality": [ + "England", + "Grenada" + ], + "currentClub": "Crystal Palace", + "height": "1,75m", + "foot": "right", + "joinedOn": "Jul 1, 2015", + "joined": "", + "signedFrom": "Southampton FC", + "contract": null, + "marketValue": "€12.00m", + "status": "" + }, + { + "id": "262545", + "name": "Connor Randall", + "position": "Right-Back", + "dateOfBirth": "Oct 21, 1995", + "age": "23", + "nationality": [ + "England" + ], + "currentClub": "Ross County FC", + "height": "1,80m", + "foot": "right", + "joinedOn": "Jul 1, 2015", + "joined": "", + "signedFrom": ": Ablöse -", + "contract": null, + "marketValue": "€500k", + "status": "" + }, + { + "id": "485583", + "name": "Ki-Jana Hoever", + "position": "Right-Back", + "dateOfBirth": "Jan 18, 2002", + "age": "17", + "nationality": [ + "Netherlands", + "Suriname" + ], + "currentClub": "AJ Auxerre", + "height": "1,83m", + "foot": "right", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "225693", + "name": "Fabinho", + "position": "Defensive Midfield", + "dateOfBirth": "Oct 23, 1993", + "age": "25", + "nationality": [ + "Brazil" + ], + "currentClub": "Al-Ittihad Club", + "height": "1,88m", + "foot": "right", + "joinedOn": "Jul 1, 2018", + "joined": "", + "signedFrom": ": Ablöse €45.00m", + "contract": null, + "marketValue": "€50.00m", + "status": "" + }, + { + "id": "222813", + "name": "Marko Grujić", + "position": "Defensive Midfield", + "dateOfBirth": "Apr 13, 1996", + "age": "23", + "nationality": [ + "Serbia" + ], + "currentClub": "FC Porto", + "height": "1,91m", + "foot": "right", + "joinedOn": "Jan 6, 2016", + "joined": "", + "signedFrom": "Red Star Belgrade", + "contract": null, + "marketValue": "€20.00m", + "status": "Heel injury - Return unknown" + }, + { + "id": "302215", + "name": "Naby Keïta", + "position": "Central Midfield", + "dateOfBirth": "Feb 10, 1995", + "age": "24", + "nationality": [ + "Guinea" + ], + "currentClub": "SV Werder Bremen", + "height": "1,72m", + "foot": "right", + "joinedOn": "Jul 1, 2018", + "joined": "", + "signedFrom": ": Ablöse €60.00m", + "contract": null, + "marketValue": "€60.00m", + "status": "special leave - until Jan 15, 2025 - cross-competition" + }, + { + "id": "49499", + "name": "Georginio Wijnaldum", + "position": "Central Midfield", + "dateOfBirth": "Nov 11, 1990", + "age": "28", + "nationality": [ + "Netherlands", + "Suriname" + ], + "currentClub": "Al-Ettifaq FC", + "height": "1,75m", + "foot": "right", + "joinedOn": "Jul 22, 2016", + "joined": "", + "signedFrom": "Newcastle United", + "contract": null, + "marketValue": "€50.00m", + "status": "" + }, + { + "id": "61651", + "name": "Jordan Henderson", + "position": "Central Midfield", + "dateOfBirth": "Jun 17, 1990", + "age": "29", + "nationality": [ + "England" + ], + "currentClub": "Ajax Amsterdam", + "height": "1,82m", + "foot": "right", + "joinedOn": "Jul 1, 2011", + "joined": "", + "signedFrom": "Sunderland AFC", + "contract": null, + "marketValue": "€35.00m", + "status": "" + }, + { + "id": "143424", + "name": "Alex Oxlade-Chamberlain", + "position": "Central Midfield", + "dateOfBirth": "Aug 15, 1993", + "age": "25", + "nationality": [ + "England" + ], + "currentClub": "Besiktas JK", + "height": "1,80m", + "foot": "right", + "joinedOn": "Aug 31, 2017", + "joined": "", + "signedFrom": "Arsenal FC", + "contract": null, + "marketValue": "€35.00m", + "status": "No eligibility - until Jan 31, 2025 - UEFA Europa League - 8 matchdays" + }, + { + "id": "3333", + "name": "James Milner", + "position": "Central Midfield", + "dateOfBirth": "Jan 4, 1986", + "age": "33", + "nationality": [ + "England" + ], + "currentClub": "Brighton & Hove Albion", + "height": "1,75m", + "foot": "right", + "joinedOn": "Jul 1, 2015", + "joined": "", + "signedFrom": ": Ablöse free transfer", + "contract": null, + "marketValue": "€15.00m", + "status": "Thigh problems - Return unknown" + }, + { + "id": "433188", + "name": "Curtis Jones", + "position": "Central Midfield", + "dateOfBirth": "Jan 30, 2001", + "age": "18", + "nationality": [ + "England" + ], + "currentClub": "Liverpool FC", + "height": "1,85m", + "foot": "right", + "joinedOn": "Jul 1, 2020", + "joined": "", + "signedFrom": ": Ablöse -", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "86792", + "name": "Xherdan Shaqiri", + "position": "Attacking Midfield", + "dateOfBirth": "Oct 10, 1991", + "age": "27", + "nationality": [ + "Switzerland", + "Kosovo" + ], + "currentClub": "FC Basel 1893", + "height": "1,69m", + "foot": "left", + "joinedOn": "Jul 13, 2018", + "joined": "", + "signedFrom": "Stoke City", + "contract": null, + "marketValue": "€25.00m", + "status": "" + }, + { + "id": "43530", + "name": "Adam Lallana", + "position": "Attacking Midfield", + "dateOfBirth": "May 10, 1988", + "age": "31", + "nationality": [ + "England" + ], + "currentClub": "Southampton FC", + "height": "1,72m", + "foot": "both", + "joinedOn": "Jul 1, 2014", + "joined": "", + "signedFrom": "Southampton FC", + "contract": null, + "marketValue": "€15.00m", + "status": "" + }, + { + "id": "344015", + "name": "Ben Woodburn", + "position": "Attacking Midfield", + "dateOfBirth": "Oct 15, 1999", + "age": "19", + "nationality": [ + "Wales", + "England" + ], + "currentClub": "Salford City", + "height": "1,74m", + "foot": "right", + "joinedOn": "Jan 1, 2017", + "joined": "", + "signedFrom": ": Ablöse -", + "contract": null, + "marketValue": "€5.00m", + "status": "" + }, + { + "id": "264660", + "name": "Isaac Christie-Davies", + "position": "Attacking Midfield", + "dateOfBirth": "Oct 18, 1997", + "age": "21", + "nationality": [ + "Wales", + "England" + ], + "currentClub": "Without Club", + "height": "1,88m", + "foot": "right", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "200512", + "name": "Sadio Mané", + "position": "Left Winger", + "dateOfBirth": "Apr 10, 1992", + "age": "27", + "nationality": [ + "Senegal" + ], + "currentClub": "Al-Nassr FC", + "height": "1,74m", + "foot": "right", + "joinedOn": "Jul 1, 2016", + "joined": "", + "signedFrom": "Southampton FC", + "contract": null, + "marketValue": "€120.00m", + "status": "" + }, + { + "id": "148455", + "name": "Mohamed Salah", + "position": "Right Winger", + "dateOfBirth": "Jun 15, 1992", + "age": "27", + "nationality": [ + "Egypt" + ], + "currentClub": "Liverpool FC", + "height": "1,75m", + "foot": "left", + "joinedOn": "Jul 1, 2017", + "joined": "", + "signedFrom": "AS Roma", + "contract": null, + "marketValue": "€150.00m", + "status": "" + }, + { + "id": "279455", + "name": "Harry Wilson", + "position": "Right Winger", + "dateOfBirth": "Mar 22, 1997", + "age": "22", + "nationality": [ + "Wales", + "England" + ], + "currentClub": "Fulham FC", + "height": "1,73m", + "foot": "left", + "joinedOn": "Jul 1, 2018", + "joined": "", + "signedFrom": ": Ablöse -", + "contract": null, + "marketValue": "€12.00m", + "status": "" + }, + { + "id": "236510", + "name": "Sheyi Ojo", + "position": "Right Winger", + "dateOfBirth": "Jun 19, 1997", + "age": "22", + "nationality": [ + "England", + "Nigeria" + ], + "currentClub": "NK Maribor", + "height": "1,79m", + "foot": "left", + "joinedOn": "Jul 7, 2015", + "joined": "", + "signedFrom": ": Ablöse -", + "contract": null, + "marketValue": "€2.00m", + "status": "" + }, + { + "id": "400831", + "name": "Rafael Camacho", + "position": "Right Winger", + "dateOfBirth": "May 22, 2000", + "age": "19", + "nationality": [ + "Portugal", + "Angola" + ], + "currentClub": "Without Club", + "height": "1,75m", + "foot": "both", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "131789", + "name": "Roberto Firmino", + "position": "Centre-Forward", + "dateOfBirth": "Oct 2, 1991", + "age": "27", + "nationality": [ + "Brazil" + ], + "currentClub": "Al-Ahli SFC", + "height": "1,81m", + "foot": "right", + "joinedOn": "Jul 1, 2015", + "joined": "", + "signedFrom": "TSG 1899 Hoffenheim", + "contract": null, + "marketValue": "€80.00m", + "status": "" + }, + { + "id": "148368", + "name": "Divock Origi", + "position": "Centre-Forward", + "dateOfBirth": "Apr 18, 1995", + "age": "24", + "nationality": [ + "Belgium", + "Kenya" + ], + "currentClub": "Milan Futuro", + "height": "1,89m", + "foot": "right", + "joinedOn": "Jul 29, 2014", + "joined": "", + "signedFrom": ": Ablöse €12.63m", + "contract": null, + "marketValue": "€20.00m", + "status": "" + }, + { + "id": "258889", + "name": "Dominic Solanke", + "position": "Centre-Forward", + "dateOfBirth": "Sep 14, 1997", + "age": "21", + "nationality": [ + "England", + "Nigeria" + ], + "currentClub": "Tottenham Hotspur", + "height": "1,86m", + "foot": "right", + "joinedOn": "Jul 10, 2017", + "joined": "", + "signedFrom": "Chelsea FC U23", + "contract": null, + "marketValue": "€18.00m", + "status": "" + }, + { + "id": "134294", + "name": "Danny Ings", + "position": "Centre-Forward", + "dateOfBirth": "Jul 23, 1992", + "age": "26", + "nationality": [ + "England" + ], + "currentClub": "West Ham United", + "height": "1,77m", + "foot": "right", + "joinedOn": "Jul 1, 2015", + "joined": "", + "signedFrom": ": Ablöse €8.30m", + "contract": null, + "marketValue": "€15.00m", + "status": "" + }, + { + "id": "47082", + "name": "Daniel Sturridge", + "position": "Centre-Forward", + "dateOfBirth": "Sep 1, 1989", + "age": "29", + "nationality": [ + "England" + ], + "currentClub": "Retired", + "height": "1,88m", + "foot": "left", + "joinedOn": "Jan 2, 2013", + "joined": "", + "signedFrom": "Chelsea FC", + "contract": null, + "marketValue": "€15.00m", + "status": "" + }, + { + "id": "406560", + "name": "Rhian Brewster", + "position": "Centre-Forward", + "dateOfBirth": "Apr 1, 2000", + "age": "19", + "nationality": [ + "England", + "Barbados" + ], + "currentClub": "Sheffield United", + "height": "1,80m", + "foot": "right", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "-", + "status": "" + } + ] +} \ No newline at end of file diff --git a/tests/data/clubs/players/5_2003.json b/tests/data/clubs/players/5_2003.json new file mode 100644 index 0000000..629c5c9 --- /dev/null +++ b/tests/data/clubs/players/5_2003.json @@ -0,0 +1,734 @@ +{ + "id": "5", + "players": [ + { + "id": "5799", + "name": "Valerio Fiori", + "position": "Goalkeeper", + "dateOfBirth": "Apr 27, 1969", + "age": "35", + "nationality": [ + "Italy" + ], + "currentClub": "Retired", + "height": "1,85m", + "foot": "", + "joinedOn": "Jul 1, 1999", + "joined": "", + "signedFrom": "Piacenza FC", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "5800", + "name": "Dida", + "position": "Goalkeeper", + "dateOfBirth": "Oct 7, 1973", + "age": "30", + "nationality": [ + "Brazil" + ], + "currentClub": "Retired", + "height": "1,96m", + "foot": "left", + "joinedOn": "Jul 1, 1999", + "joined": "", + "signedFrom": "Cruzeiro Esporte Clube", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "610010", + "name": "Marco Taddonio", + "position": "Goalkeeper", + "dateOfBirth": "Apr 13, 1985", + "age": "19", + "nationality": [ + "Italy" + ], + "currentClub": "Unknown", + "height": "-", + "foot": "", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "561952", + "name": "Davide Gobbato", + "position": "Goalkeeper", + "dateOfBirth": "Jul 7, 1985", + "age": "18", + "nationality": [ + "Italy" + ], + "currentClub": "Without Club", + "height": "-", + "foot": "", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "3507", + "name": "Christian Abbiati", + "position": "Goalkeeper", + "dateOfBirth": "Jul 8, 1977", + "age": "26", + "nationality": [ + "Italy" + ], + "currentClub": "Retired", + "height": "1,91m", + "foot": "right", + "joinedOn": "Jul 1, 1998", + "joined": "", + "signedFrom": ": Ablöse €1.67m", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "537644", + "name": "Davide Canini", + "position": "Defender", + "dateOfBirth": "Apr 1, 1985", + "age": "19", + "nationality": [ + "Italy" + ], + "currentClub": "Unknown", + "height": "-", + "foot": "", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "3430", + "name": "Kakhaber Kaladze", + "position": "Centre-Back", + "dateOfBirth": "Feb 27, 1978", + "age": "26", + "nationality": [ + "Georgia" + ], + "currentClub": "Retired", + "height": "1,86m", + "foot": "left", + "joinedOn": "Jan 23, 2001", + "joined": "", + "signedFrom": ": Ablöse €16.00m", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "4171", + "name": "Alessandro Nesta", + "position": "Centre-Back", + "dateOfBirth": "Mar 19, 1976", + "age": "28", + "nationality": [ + "Italy" + ], + "currentClub": "Retired", + "height": "1,87m", + "foot": "right", + "joinedOn": "Aug 31, 2002", + "joined": "", + "signedFrom": ": Ablöse €31.00m", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "2540", + "name": "Dario Simic", + "position": "Centre-Back", + "dateOfBirth": "Nov 12, 1975", + "age": "28", + "nationality": [ + "Croatia" + ], + "currentClub": "Retired", + "height": "1,80m", + "foot": "right", + "joinedOn": "Jul 1, 2002", + "joined": "", + "signedFrom": ": Ablöse €5.00m", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "10055", + "name": "Alessandro Costacurta", + "position": "Centre-Back", + "dateOfBirth": "Apr 24, 1966", + "age": "38", + "nationality": [ + "Italy" + ], + "currentClub": "Retired", + "height": "m", + "foot": "N/A", + "joinedOn": "Jul 1, 1985", + "joined": "", + "signedFrom": "Milan Primavera", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "3503", + "name": "Martin Laursen", + "position": "Centre-Back", + "dateOfBirth": "Jul 26, 1977", + "age": "26", + "nationality": [ + "Denmark" + ], + "currentClub": "Retired", + "height": "1,90m", + "foot": "left", + "joinedOn": "Jul 1, 2002", + "joined": "", + "signedFrom": ": Ablöse €11.00m", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "5807", + "name": "Roque Júnior", + "position": "Centre-Back", + "dateOfBirth": "Aug 31, 1976", + "age": "27", + "nationality": [ + "Brazil" + ], + "currentClub": "Retired", + "height": "1,86m", + "foot": "both", + "joinedOn": "Jul 1, 2000", + "joined": "", + "signedFrom": "Sociedade Esportiva Palmeiras", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "77970", + "name": "Elia Legati", + "position": "Centre-Back", + "dateOfBirth": "Jan 3, 1986", + "age": "18", + "nationality": [ + "Italy" + ], + "currentClub": "Retired", + "height": "1,88m", + "foot": "right", + "joinedOn": "Jun 1, 2010", + "joined": "", + "signedFrom": ": Ablöse €400k", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "139169", + "name": "Claiton", + "position": "Centre-Back", + "dateOfBirth": "Sep 7, 1984", + "age": "19", + "nationality": [ + "Brazil", + "Italy" + ], + "currentClub": "Retired", + "height": "1,88m", + "foot": "left", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "5803", + "name": "Paolo Maldini", + "position": "Left-Back", + "dateOfBirth": "Jun 26, 1968", + "age": "36", + "nationality": [ + "Italy" + ], + "currentClub": "Retired", + "height": "1,86m", + "foot": "both", + "joinedOn": "Jul 1, 1985", + "joined": "", + "signedFrom": "Milan Primavera", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "5819", + "name": "Serginho", + "position": "Left-Back", + "dateOfBirth": "Jun 27, 1971", + "age": "33", + "nationality": [ + "Brazil" + ], + "currentClub": "Retired", + "height": "1,81m", + "foot": "left", + "joinedOn": "Jul 1, 1999", + "joined": "", + "signedFrom": "São Paulo Futebol Clube", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "5937", + "name": "Cafu", + "position": "Right-Back", + "dateOfBirth": "Jun 7, 1970", + "age": "34", + "nationality": [ + "Brazil", + "Italy" + ], + "currentClub": "Retired", + "height": "1,78m", + "foot": "right", + "joinedOn": "Jun 9, 2003", + "joined": "", + "signedFrom": ": Ablöse free transfer", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "5833", + "name": "Giuseppe Pancaro", + "position": "Right-Back", + "dateOfBirth": "Aug 26, 1971", + "age": "32", + "nationality": [ + "Italy" + ], + "currentClub": "Retired", + "height": "1,86m", + "foot": "both", + "joinedOn": "Jul 1, 2004", + "joined": "", + "signedFrom": ": Ablöse free transfer", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "16631", + "name": "Ignazio Abate", + "position": "Right-Back", + "dateOfBirth": "Nov 12, 1986", + "age": "17", + "nationality": [ + "Italy" + ], + "currentClub": "Retired", + "height": "1,80m", + "foot": "right", + "joinedOn": "Jul 1, 2009", + "joined": "", + "signedFrom": "Torino FC", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "5811", + "name": "Fernando Redondo", + "position": "Defensive Midfield", + "dateOfBirth": "Jun 6, 1969", + "age": "35", + "nationality": [ + "Argentina", + "Spain" + ], + "currentClub": "Retired", + "height": "1,86m", + "foot": "left", + "joinedOn": "Jul 27, 2000", + "joined": "", + "signedFrom": ": Ablöse €17.50m", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "5817", + "name": "Andrea Pirlo", + "position": "Defensive Midfield", + "dateOfBirth": "May 19, 1979", + "age": "25", + "nationality": [ + "Italy" + ], + "currentClub": "Retired", + "height": "1,77m", + "foot": "both", + "joinedOn": "Jul 1, 2001", + "joined": "", + "signedFrom": ": Ablöse €17.04m", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "148589", + "name": "Mattia Dal Bello", + "position": "Midfielder", + "dateOfBirth": "Jan 19, 1984", + "age": "20", + "nationality": [ + "Italy" + ], + "currentClub": "---", + "height": "1,79m", + "foot": "", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "5813", + "name": "Gennaro Gattuso", + "position": "Central Midfield", + "dateOfBirth": "Jan 9, 1978", + "age": "26", + "nationality": [ + "Italy" + ], + "currentClub": "Retired", + "height": "1,77m", + "foot": "right", + "joinedOn": "Jul 1, 1999", + "joined": "", + "signedFrom": ": Ablöse €8.00m", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "4168", + "name": "Clarence Seedorf", + "position": "Central Midfield", + "dateOfBirth": "Apr 1, 1976", + "age": "28", + "nationality": [ + "Netherlands", + "Suriname" + ], + "currentClub": "Retired", + "height": "1,77m", + "foot": "right", + "joinedOn": "Jul 1, 2002", + "joined": "", + "signedFrom": ": Ablöse €22.50m", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "5818", + "name": "Massimo Ambrosini", + "position": "Central Midfield", + "dateOfBirth": "May 29, 1977", + "age": "27", + "nationality": [ + "Italy" + ], + "currentClub": "Retired", + "height": "1,82m", + "foot": "right", + "joinedOn": "Jul 1, 1995", + "joined": "", + "signedFrom": ": Ablöse €1.91m", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "5812", + "name": "Cristian Brocchi", + "position": "Central Midfield", + "dateOfBirth": "Jan 30, 1976", + "age": "28", + "nationality": [ + "Italy" + ], + "currentClub": "Retired", + "height": "1,71m", + "foot": "right", + "joinedOn": "Jul 1, 2001", + "joined": "", + "signedFrom": ": Ablöse ?", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "45113", + "name": "Patrick Kalambay", + "position": "Right Midfield", + "dateOfBirth": "Jan 6, 1984", + "age": "20", + "nationality": [ + "Italy", + "DR Congo" + ], + "currentClub": "Retired", + "height": "1,77m", + "foot": "right", + "joinedOn": "Jul 1, 2003", + "joined": "", + "signedFrom": ": Ablöse €2.12m", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "3624", + "name": "Rui Costa", + "position": "Attacking Midfield", + "dateOfBirth": "Mar 29, 1972", + "age": "32", + "nationality": [ + "Portugal" + ], + "currentClub": "Retired", + "height": "1,80m", + "foot": "right", + "joinedOn": "Jul 3, 2001", + "joined": "", + "signedFrom": ": Ablöse €41.32m", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "3372", + "name": "Rivaldo", + "position": "Attacking Midfield", + "dateOfBirth": "Apr 19, 1972", + "age": "32", + "nationality": [ + "Brazil", + "Spain" + ], + "currentClub": "Retired", + "height": "1,86m", + "foot": "left", + "joinedOn": "Jul 27, 2002", + "joined": "", + "signedFrom": "FC Barcelona", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "3366", + "name": "Kaká", + "position": "Attacking Midfield", + "dateOfBirth": "Apr 22, 1982", + "age": "22", + "nationality": [ + "Brazil", + "Italy" + ], + "currentClub": "Retired", + "height": "1,86m", + "foot": "both", + "joinedOn": "Sep 2, 2013", + "joined": "", + "signedFrom": "Real Madrid", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "151314", + "name": "Michele Piccolo", + "position": "Centre-Forward", + "dateOfBirth": "Sep 1, 1985", + "age": "18", + "nationality": [ + "Italy" + ], + "currentClub": "Unknown", + "height": "1,76m", + "foot": "", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "3522", + "name": "Andriy Shevchenko", + "position": "Centre-Forward", + "dateOfBirth": "Sep 29, 1976", + "age": "27", + "nationality": [ + "Ukraine" + ], + "currentClub": "Retired", + "height": "1,83m", + "foot": "both", + "joinedOn": "Aug 23, 2008", + "joined": "", + "signedFrom": "Chelsea FC", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "5821", + "name": "Filippo Inzaghi", + "position": "Centre-Forward", + "dateOfBirth": "Aug 9, 1973", + "age": "30", + "nationality": [ + "Italy" + ], + "currentClub": "Retired", + "height": "1,81m", + "foot": "right", + "joinedOn": "Jul 2, 2001", + "joined": "", + "signedFrom": ": Ablöse €36.15m", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "4169", + "name": "Jon Dahl Tomasson", + "position": "Centre-Forward", + "dateOfBirth": "Aug 29, 1976", + "age": "27", + "nationality": [ + "Denmark" + ], + "currentClub": "Retired", + "height": "1,82m", + "foot": "right", + "joinedOn": "Jul 1, 2002", + "joined": "", + "signedFrom": ": Ablöse free transfer", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "5825", + "name": "Marco Borriello", + "position": "Centre-Forward", + "dateOfBirth": "Jun 18, 1982", + "age": "22", + "nationality": [ + "Italy" + ], + "currentClub": "Retired", + "height": "1,86m", + "foot": "left", + "joinedOn": "Jul 1, 2008", + "joined": "", + "signedFrom": ": Ablöse €11.75m", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "110826", + "name": "Roberto Bortolotto", + "position": "Centre-Forward", + "dateOfBirth": "Apr 15, 1985", + "age": "19", + "nationality": [ + "Italy" + ], + "currentClub": "Retired", + "height": "1,79m", + "foot": "left", + "joinedOn": "", + "joined": "", + "signedFrom": "", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "40660", + "name": "Alessandro Matri", + "position": "Centre-Forward", + "dateOfBirth": "Aug 19, 1984", + "age": "19", + "nationality": [ + "Italy" + ], + "currentClub": "Retired", + "height": "1,83m", + "foot": "right", + "joinedOn": "Aug 30, 2013", + "joined": "", + "signedFrom": ": Ablöse €11.00m", + "contract": null, + "marketValue": "-", + "status": "" + }, + { + "id": "16117", + "name": "Nicola Pozzi", + "position": "Centre-Forward", + "dateOfBirth": "Jun 30, 1986", + "age": "18", + "nationality": [ + "Italy" + ], + "currentClub": "Retired", + "height": "1,82m", + "foot": "right", + "joinedOn": "Jan 1, 2004", + "joined": "", + "signedFrom": ": Ablöse €2.00m", + "contract": null, + "marketValue": "-", + "status": "" + } + ] +} \ No newline at end of file diff --git a/tests/data/clubs/profile/131.json b/tests/data/clubs/profile/131.json new file mode 100644 index 0000000..727b9b4 --- /dev/null +++ b/tests/data/clubs/profile/131.json @@ -0,0 +1,66 @@ +{ + "id": "131", + "url": "/fc-barcelona/startseite/verein/131", + "name": "FC Barcelona", + "officialName": "Futbol Club Barcelona", + "image": "https://tmssl.akamaized.net//images/wappen/big/131.png", + "legalForm": null, + "addressLine1": "Avinguda Arístides Maillol", + "addressLine2": "08028 Barcelona", + "addressLine3": "Spain", + "tel": "+34 902 189900", + "fax": "+34 934 112219", + "website": "fcbarcelona.com", + "foundedOn": "Nov 29, 1899", + "members": "170.000", + "membersDate": "Jan 1, 2022", + "otherSports": [ + "Baseball", + "Basketball", + "Eishockey", + "Eiskunstlauf", + "Feldhockey", + "Futsal", + "Handball", + "Leichtathletik", + "Rollhockey", + "Rollstuhlbasketball", + "Rugby", + "Volleyball" + ], + "colors": [ + "#004C99", + "#A60042", + "#FFEE00" + ], + "stadiumName": "Olímpic Lluís Companys", + "stadiumSeats": "55926", + "currentTransferRecord": "€-19.40m", + "currentMarketValue": "€1.02bn", + "confederation": null, + "fifaWorldRanking": null, + "squad": { + "size": "28", + "averageAge": "24.5", + "foreigners": "8", + "nationalTeamPlayers": "14" + }, + "league": { + "id": "ES1", + "name": "LaLiga", + "countryId": "1", + "countryName": "Spain", + "tier": "First Tier" + }, + "historicalCrests": [ + "https://tmssl.akamaized.net//images/wappen/medium/131_1400792132.png", + "https://tmssl.akamaized.net//images/wappen/medium/131_1400792150.png", + "https://tmssl.akamaized.net//images/wappen/medium/131_1400792174.png", + "https://tmssl.akamaized.net//images/wappen/medium/131_1400792189.png", + "https://tmssl.akamaized.net//images/wappen/medium/131_1400792227.png", + "https://tmssl.akamaized.net//images/wappen/medium/131_1400792246.png", + "https://tmssl.akamaized.net//images/wappen/medium/131_1400792264.png", + "https://tmssl.akamaized.net//images/wappen/medium/131_1400792283.png", + "https://tmssl.akamaized.net//images/wappen/medium/131_1400792355.png" + ] +} \ No newline at end of file diff --git a/tests/data/clubs/profile/210.json b/tests/data/clubs/profile/210.json new file mode 100644 index 0000000..d587120 --- /dev/null +++ b/tests/data/clubs/profile/210.json @@ -0,0 +1,39 @@ +{ + "id": "210", + "url": "/gremio-porto-alegre/startseite/verein/210", + "name": "Grêmio Foot-Ball Porto Alegrense", + "officialName": "Grêmio Foot-Ball Porto Alegrense", + "image": "https://tmssl.akamaized.net//images/wappen/big/210.png", + "legalForm": null, + "addressLine1": "Rua Largo dos Campeões 1", + "addressLine2": "90880-440 Porto Alegre", + "addressLine3": "Brazil", + "tel": "+55 51 32172244", + "fax": "+55 51 32232364", + "website": "www.gremio.net", + "foundedOn": "Sep 15, 1903", + "members": "148.613", + "membersDate": "Jan 26, 2019", + "otherSports": null, + "colors": [], + "stadiumName": "Arena do Grêmio", + "stadiumSeats": "60540", + "currentTransferRecord": "+€2.66m", + "currentMarketValue": "€80.30m", + "confederation": null, + "fifaWorldRanking": null, + "squad": { + "size": "30", + "averageAge": "26.4", + "foreigners": "9", + "nationalTeamPlayers": "2" + }, + "league": { + "id": "BRA1", + "name": "Campeonato Brasileiro Série A", + "countryId": "2", + "countryName": "Brazil", + "tier": "First Tier" + }, + "historicalCrests": [] +} \ No newline at end of file diff --git a/tests/data/clubs/profile/27.json b/tests/data/clubs/profile/27.json new file mode 100644 index 0000000..21454f2 --- /dev/null +++ b/tests/data/clubs/profile/27.json @@ -0,0 +1,60 @@ +{ + "id": "27", + "url": "/fc-bayern-munchen/startseite/verein/27", + "name": "Bayern Munich", + "officialName": "FC Bayern München", + "image": "https://tmssl.akamaized.net//images/wappen/big/27.png", + "legalForm": "AG", + "addressLine1": "Säbener Straße 51-57", + "addressLine2": "81547 München", + "addressLine3": "Germany", + "tel": "+49 89 69931-0", + "fax": "+49 89 644165", + "website": "fcbayern.com", + "foundedOn": "Feb 27, 1900", + "members": "360.000", + "membersDate": "Jun 3, 2024", + "otherSports": [ + "Basketball", + "Handball", + "Kegeln", + "Schach", + "Schiedsrichter", + "Tischtennis", + "Turnen (Abteilung Turnen im Januar 2014 aufgelöst)" + ], + "colors": [ + "#DB072D", + "#FFFFFF" + ], + "stadiumName": "Allianz Arena", + "stadiumSeats": "75000", + "currentTransferRecord": "€-67.65m", + "currentMarketValue": "€887.00m", + "confederation": null, + "fifaWorldRanking": null, + "squad": { + "size": "27", + "averageAge": "27.0", + "foreigners": "16", + "nationalTeamPlayers": "17" + }, + "league": { + "id": "L1", + "name": "Bundesliga", + "countryId": "4", + "countryName": "Germany", + "tier": "First Tier" + }, + "historicalCrests": [ + "https://tmssl.akamaized.net//images/wappen/medium/27_1400571755.png", + "https://tmssl.akamaized.net//images/wappen/medium/27_1400571770.png", + "https://tmssl.akamaized.net//images/wappen/medium/27_1400571796.png", + "https://tmssl.akamaized.net//images/wappen/medium/27_1400571805.png", + "https://tmssl.akamaized.net//images/wappen/medium/27_1400571817.png", + "https://tmssl.akamaized.net//images/wappen/medium/27_1400571838.png", + "https://tmssl.akamaized.net//images/wappen/medium/27_1400571853.png", + "https://tmssl.akamaized.net//images/wappen/medium/27_1498251266.png", + "https://tmssl.akamaized.net//images/wappen/medium/27_1729503630.png" + ] +} \ No newline at end of file diff --git a/tests/data/clubs/profile/31.json b/tests/data/clubs/profile/31.json new file mode 100644 index 0000000..d6199dd --- /dev/null +++ b/tests/data/clubs/profile/31.json @@ -0,0 +1,51 @@ +{ + "id": "31", + "url": "/fc-liverpool/startseite/verein/31", + "name": "Liverpool FC", + "officialName": "Liverpool Football Club", + "image": "https://tmssl.akamaized.net//images/wappen/big/31.png", + "legalForm": null, + "addressLine1": "Anfield Road", + "addressLine2": "L4 OTH Liverpool", + "addressLine3": "England", + "tel": "+44 151 2632361", + "fax": "+44 151 2608813", + "website": "liverpoolfc.com", + "foundedOn": "Mar 15, 1892", + "members": null, + "membersDate": null, + "otherSports": null, + "colors": [ + "#E6001E", + "#39403B", + "#FFFFFF" + ], + "stadiumName": "Anfield", + "stadiumSeats": "61276", + "currentTransferRecord": "+€5.00m", + "currentMarketValue": "€970.00m", + "confederation": null, + "fifaWorldRanking": null, + "squad": { + "size": "25", + "averageAge": "26.4", + "foreigners": "19", + "nationalTeamPlayers": "22" + }, + "league": { + "id": "GB1", + "name": "Premier League", + "countryId": "1", + "countryName": "England", + "tier": "First Tier" + }, + "historicalCrests": [ + "https://tmssl.akamaized.net//images/wappen/medium/31_1400911510.png", + "https://tmssl.akamaized.net//images/wappen/medium/31_1400911516.png", + "https://tmssl.akamaized.net//images/wappen/medium/31_1400911528.png", + "https://tmssl.akamaized.net//images/wappen/medium/31_1400911535.png", + "https://tmssl.akamaized.net//images/wappen/medium/31_1400911539.png", + "https://tmssl.akamaized.net//images/wappen/medium/31_1400911547.png", + "https://tmssl.akamaized.net//images/wappen/medium/31_1727777132.png" + ] +} \ No newline at end of file diff --git a/tests/data/clubs/profile/5.json b/tests/data/clubs/profile/5.json new file mode 100644 index 0000000..3975693 --- /dev/null +++ b/tests/data/clubs/profile/5.json @@ -0,0 +1,51 @@ +{ + "id": "5", + "url": "/ac-mailand/startseite/verein/5", + "name": "AC Milan", + "officialName": "Associazione Calcio Milan", + "image": "https://tmssl.akamaized.net//images/wappen/big/5.png", + "legalForm": "AG", + "addressLine1": "Via Aldo Rossi 8", + "addressLine2": "20149 Milano", + "addressLine3": "Italy", + "tel": "+39 2 62281", + "fax": "+39 2 6598876", + "website": "www.acmilan.com", + "foundedOn": "Dec 16, 1899", + "members": null, + "membersDate": null, + "otherSports": null, + "colors": [ + "#B50909", + "#050505" + ], + "stadiumName": "Giuseppe Meazza", + "stadiumSeats": "75923", + "currentTransferRecord": "€-37.70m", + "currentMarketValue": "€533.00m", + "confederation": null, + "fifaWorldRanking": null, + "squad": { + "size": "26", + "averageAge": "26.1", + "foreigners": "19", + "nationalTeamPlayers": "14" + }, + "league": { + "id": "IT1", + "name": "Serie A", + "countryId": "7", + "countryName": "Italy", + "tier": "First Tier" + }, + "historicalCrests": [ + "https://tmssl.akamaized.net//images/wappen/medium/5_1405345513.png", + "https://tmssl.akamaized.net//images/wappen/medium/5_1405345522.png", + "https://tmssl.akamaized.net//images/wappen/medium/5_1405345530.png", + "https://tmssl.akamaized.net//images/wappen/medium/5_1405345538.png", + "https://tmssl.akamaized.net//images/wappen/medium/5_1405345547.png", + "https://tmssl.akamaized.net//images/wappen/medium/5_1405345575.png", + "https://tmssl.akamaized.net//images/wappen/medium/5_1405345581.png", + "https://tmssl.akamaized.net//images/wappen/medium/5_1405345591.png" + ] +} \ No newline at end of file diff --git a/tests/data/clubs/search/Barcelona.json b/tests/data/clubs/search/Barcelona.json new file mode 100644 index 0000000..d1e74c0 --- /dev/null +++ b/tests/data/clubs/search/Barcelona.json @@ -0,0 +1,87 @@ +{ + "query": "Barcelona", + "pageNumber": 1, + "lastPageNumber": 4, + "results": [ + { + "id": "131", + "url": "/fc-barcelona/startseite/verein/131", + "name": "FC Barcelona", + "country": "Spain", + "squad": "28", + "marketValue": "€1.02bn" + }, + { + "id": "714", + "url": "/espanyol-barcelona/startseite/verein/714", + "name": "RCD Espanyol Barcelona", + "country": "Spain", + "squad": "28", + "marketValue": "€69.50m" + }, + { + "id": "3523", + "url": "/barcelona-sc-guayaquil/startseite/verein/3523", + "name": "Barcelona SC Guayaquil", + "country": "Ecuador", + "squad": "30", + "marketValue": "€19.85m" + }, + { + "id": "2464", + "url": "/fc-barcelona-b/startseite/verein/2464", + "name": "FC Barcelona Atlètic", + "country": "Spain", + "squad": "35", + "marketValue": "€11.90m" + }, + { + "id": "10773", + "url": "/espanyol-barcelona-b/startseite/verein/10773", + "name": "RCD Espanyol B", + "country": "Spain", + "squad": "25", + "marketValue": "€2.45m" + }, + { + "id": "20528", + "url": "/ce-europa/startseite/verein/20528", + "name": "CE Europa", + "country": "Spain", + "squad": "22", + "marketValue": "€2.08m" + }, + { + "id": "41584", + "url": "/fc-barcelona-uefa-u19/startseite/verein/41584", + "name": "FC Barcelona UEFA U19", + "country": "Spain", + "squad": "27", + "marketValue": "€750k" + }, + { + "id": "22587", + "url": "/barcelona-sc-guayaquil-u20/startseite/verein/22587", + "name": "Barcelona SC Guayaquil U20", + "country": "Ecuador", + "squad": "21", + "marketValue": "€25k" + }, + { + "id": "93588", + "url": "/barcelona-futebol-clube/startseite/verein/93588", + "name": "Barcelona FC (BA)", + "country": "Brazil", + "squad": "25", + "marketValue": "-" + }, + { + "id": "14321", + "url": "/fc-barcelona-u16/startseite/verein/14321", + "name": "FC Barcelona U16", + "country": "Spain", + "squad": "22", + "marketValue": "-" + } + ] +} \ No newline at end of file diff --git a/tests/data/clubs/search/Bayern.json b/tests/data/clubs/search/Bayern.json new file mode 100644 index 0000000..9a35da7 --- /dev/null +++ b/tests/data/clubs/search/Bayern.json @@ -0,0 +1,87 @@ +{ + "query": "Bayern", + "pageNumber": 1, + "lastPageNumber": 4, + "results": [ + { + "id": "27", + "url": "/fc-bayern-munchen/startseite/verein/27", + "name": "Bayern Munich", + "country": "Germany", + "squad": "27", + "marketValue": "€887.00m" + }, + { + "id": "15", + "url": "/bayer-04-leverkusen/startseite/verein/15", + "name": "Bayer 04 Leverkusen", + "country": "Germany", + "squad": "25", + "marketValue": "€609.05m" + }, + { + "id": "28", + "url": "/fc-bayern-munchen-ii/startseite/verein/28", + "name": "FC Bayern Munich II", + "country": "Germany", + "squad": "29", + "marketValue": "€16.78m" + }, + { + "id": "41585", + "url": "/fc-bayern-munchen-uefa-u19/startseite/verein/41585", + "name": "Bayern Munich UEFA U19", + "country": "Germany", + "squad": "19", + "marketValue": "€7.73m" + }, + { + "id": "248", + "url": "/spvgg-bayern-hof/startseite/verein/248", + "name": "SpVgg Bayern Hof", + "country": "Germany", + "squad": "24", + "marketValue": "-" + }, + { + "id": "4900", + "url": "/fc-bayern-alzenau/startseite/verein/4900", + "name": "FC Bayern Alzenau", + "country": "Germany", + "squad": "24", + "marketValue": "-" + }, + { + "id": "1462", + "url": "/fc-bayern-munchen-u19/startseite/verein/1462", + "name": "FC Bayern Munich U19", + "country": "Germany", + "squad": "29", + "marketValue": "-" + }, + { + "id": "21058", + "url": "/fc-bayern-munchen-u17/startseite/verein/21058", + "name": "FC Bayern Munich U17", + "country": "Germany", + "squad": "31", + "marketValue": "-" + }, + { + "id": "33771", + "url": "/fc-bayern-kickers-nurnberg/startseite/verein/33771", + "name": "FC Bayern Kickers Nürnberg", + "country": "Germany", + "squad": "13", + "marketValue": "-" + }, + { + "id": "23298", + "url": "/fc-bayern-alzenau-ii/startseite/verein/23298", + "name": "FC Bayern Alzenau II", + "country": "Germany", + "squad": "9", + "marketValue": "-" + } + ] +} \ No newline at end of file diff --git "a/tests/data/clubs/search/Gr\303\252mio.json" "b/tests/data/clubs/search/Gr\303\252mio.json" new file mode 100644 index 0000000..39bfd0c --- /dev/null +++ "b/tests/data/clubs/search/Gr\303\252mio.json" @@ -0,0 +1,87 @@ +{ + "query": "Grêmio", + "pageNumber": 1, + "lastPageNumber": 4, + "results": [ + { + "id": "210", + "url": "/gremio-porto-alegre/startseite/verein/210", + "name": "Grêmio Foot-Ball Porto Alegrense", + "country": "Brazil", + "squad": "30", + "marketValue": "€80.30m" + }, + { + "id": "37474", + "url": "/gremio-novorizontino-sp-/startseite/verein/37474", + "name": "Grêmio Novorizontino", + "country": "Brazil", + "squad": "25", + "marketValue": "€8.23m" + }, + { + "id": "12690", + "url": "/gremio-porto-alegre-u20/startseite/verein/12690", + "name": "Grêmio FBPA U20", + "country": "Brazil", + "squad": "51", + "marketValue": "€2.45m" + }, + { + "id": "10560", + "url": "/gremio-esportivo-brasil-rs-/startseite/verein/10560", + "name": "Grêmio Esportivo Brasil (RS)", + "country": "Brazil", + "squad": "26", + "marketValue": "€50k" + }, + { + "id": "94170", + "url": "/gremio-pague-menos/startseite/verein/94170", + "name": "CEFAT Tirol", + "country": "Brazil", + "squad": "16", + "marketValue": "-" + }, + { + "id": "48244", + "url": "/gremio-osasco-audax-sp-u20/startseite/verein/48244", + "name": "Grêmio Osasco Audax (SP) U20", + "country": "Brazil", + "squad": "37", + "marketValue": "-" + }, + { + "id": "67024", + "url": "/gremio-novorizontino-sp-u20/startseite/verein/67024", + "name": "Grêmio Novorizontino U20", + "country": "Brazil", + "squad": "28", + "marketValue": "-" + }, + { + "id": "104265", + "url": "/gremio-pague-menos-u20/startseite/verein/104265", + "name": "CEFAT Tirol U20", + "country": "Brazil", + "squad": "28", + "marketValue": "-" + }, + { + "id": "93762", + "url": "/ge-bage/startseite/verein/93762", + "name": "GE Bagé", + "country": "Brazil", + "squad": "26", + "marketValue": "-" + }, + { + "id": "96937", + "url": "/gremio-esportivo-mauaense-u20/startseite/verein/96937", + "name": "Grêmio Esportivo Mauaense U20", + "country": "Brazil", + "squad": "25", + "marketValue": "-" + } + ] +} \ No newline at end of file diff --git a/tests/data/clubs/search/Liverpool.json b/tests/data/clubs/search/Liverpool.json new file mode 100644 index 0000000..20f91ee --- /dev/null +++ b/tests/data/clubs/search/Liverpool.json @@ -0,0 +1,87 @@ +{ + "query": "Liverpool", + "pageNumber": 1, + "lastPageNumber": 3, + "results": [ + { + "id": "31", + "url": "/fc-liverpool/startseite/verein/31", + "name": "Liverpool FC", + "country": "England", + "squad": "25", + "marketValue": "€970.00m" + }, + { + "id": "29", + "url": "/fc-everton/startseite/verein/29", + "name": "Everton FC", + "country": "England", + "squad": "25", + "marketValue": "€343.60m" + }, + { + "id": "10663", + "url": "/liverpool-fc-montevideo/startseite/verein/10663", + "name": "Liverpool FC Montevideo", + "country": "Uruguay", + "squad": "26", + "marketValue": "€8.18m" + }, + { + "id": "9252", + "url": "/fc-liverpool-u23/startseite/verein/9252", + "name": "Liverpool FC U21", + "country": "England", + "squad": "29", + "marketValue": "€3.70m" + }, + { + "id": "45333", + "url": "/fc-liverpool-uefa-u19/startseite/verein/45333", + "name": "Liverpool FC UEFA U19", + "country": "England", + "squad": "17", + "marketValue": "€500k" + }, + { + "id": "101175", + "url": "/liverpool-fc-montevideo-b/startseite/verein/101175", + "name": "Liverpool FC Montevideo B", + "country": "Uruguay", + "squad": "6", + "marketValue": "€200k" + }, + { + "id": "6922", + "url": "/fc-liverpool-u18/startseite/verein/6922", + "name": "Liverpool FC U18", + "country": "England", + "squad": "25", + "marketValue": "-" + }, + { + "id": "83947", + "url": "/soma-sc/startseite/verein/83947", + "name": "Soma SC", + "country": "Japan", + "squad": "24", + "marketValue": "-" + }, + { + "id": "62678", + "url": "/city-of-liverpool-fc/startseite/verein/62678", + "name": "City of Liverpool FC", + "country": "England", + "squad": "13", + "marketValue": "-" + }, + { + "id": "50906", + "url": "/fc-liverpool-jugend/startseite/verein/50906", + "name": "Liverpool FC Youth", + "country": "England", + "squad": "13", + "marketValue": "-" + } + ] +} \ No newline at end of file diff --git a/tests/data/clubs/search/Milan.json b/tests/data/clubs/search/Milan.json new file mode 100644 index 0000000..371ef04 --- /dev/null +++ b/tests/data/clubs/search/Milan.json @@ -0,0 +1,87 @@ +{ + "query": "Milan", + "pageNumber": 1, + "lastPageNumber": 8, + "results": [ + { + "id": "46", + "url": "/inter-mailand/startseite/verein/46", + "name": "Inter Milan", + "country": "Italy", + "squad": "26", + "marketValue": "€675.30m" + }, + { + "id": "5", + "url": "/ac-mailand/startseite/verein/5", + "name": "AC Milan", + "country": "Italy", + "squad": "26", + "marketValue": "€533.00m" + }, + { + "id": "41107", + "url": "/ac-mailand-weitere/startseite/verein/41107", + "name": "Milan Futuro", + "country": "Italy", + "squad": "31", + "marketValue": "€36.70m" + }, + { + "id": "41579", + "url": "/ac-mailand-uefa-u19/startseite/verein/41579", + "name": "AC Milan UEFA U19", + "country": "Italy", + "squad": "22", + "marketValue": "€16.37m" + }, + { + "id": "52687", + "url": "/asd-alcione-milano/startseite/verein/52687", + "name": "Alcione Milano", + "country": "Italy", + "squad": "28", + "marketValue": "€3.83m" + }, + { + "id": "5380", + "url": "/inter-mailand-u19/startseite/verein/5380", + "name": "Inter Milan Primavera", + "country": "Italy", + "squad": "27", + "marketValue": "€2.45m" + }, + { + "id": "62104", + "url": "/inter-mailand-uefa-u19/startseite/verein/62104", + "name": "Inter Milan UEFA U19", + "country": "Italy", + "squad": "24", + "marketValue": "€1.80m" + }, + { + "id": "83737", + "url": "/club-milano/startseite/verein/83737", + "name": "Club Milano", + "country": "Italy", + "squad": "31", + "marketValue": "€1.65m" + }, + { + "id": "10958", + "url": "/ac-mailand-u19/startseite/verein/10958", + "name": "AC Milan Primavera", + "country": "Italy", + "squad": "31", + "marketValue": "€1.60m" + }, + { + "id": "12135", + "url": "/fk-metalac-gornji-milanovac/startseite/verein/12135", + "name": "FK Metalac Gornji Milanovac", + "country": "Serbia", + "squad": "23", + "marketValue": "€100k" + } + ] +} \ No newline at end of file diff --git a/tests/data/competitions/clubs/BRA1.json b/tests/data/competitions/clubs/BRA1.json new file mode 100644 index 0000000..ec76e6e --- /dev/null +++ b/tests/data/competitions/clubs/BRA1.json @@ -0,0 +1,87 @@ +{ + "id": "BRA1", + "name": "Campeonato Brasileiro Série A", + "seasonId": "2024", + "clubs": [ + { + "id": "1023", + "name": "Sociedade Esportiva Palmeiras" + }, + { + "id": "614", + "name": "CR Flamengo" + }, + { + "id": "537", + "name": "Botafogo de Futebol e Regatas" + }, + { + "id": "199", + "name": "Sport Club Corinthians Paulista" + }, + { + "id": "6600", + "name": "Sport Club Internacional" + }, + { + "id": "609", + "name": "Cruzeiro Esporte Clube" + }, + { + "id": "10010", + "name": "Esporte Clube Bahia" + }, + { + "id": "330", + "name": "Clube Atlético Mineiro" + }, + { + "id": "585", + "name": "São Paulo Futebol Clube" + }, + { + "id": "978", + "name": "Clube de Regatas Vasco da Gama" + }, + { + "id": "210", + "name": "Grêmio Foot-Ball Porto Alegrense" + }, + { + "id": "8793", + "name": "Red Bull Bragantino" + }, + { + "id": "2462", + "name": "Fluminense Football Club" + }, + { + "id": "10870", + "name": "Fortaleza Esporte Clube" + }, + { + "id": "221", + "name": "Santos FC" + }, + { + "id": "2125", + "name": "Esporte Clube Vitória" + }, + { + "id": "2029", + "name": "Ceará Sporting Club" + }, + { + "id": "8718", + "name": "Sport Club do Recife" + }, + { + "id": "3876", + "name": "Mirassol Futebol Clube (SP)" + }, + { + "id": "10492", + "name": "Esporte Clube Juventude" + } + ] +} \ No newline at end of file diff --git a/tests/data/competitions/clubs/ES1.json b/tests/data/competitions/clubs/ES1.json new file mode 100644 index 0000000..7a3bbfc --- /dev/null +++ b/tests/data/competitions/clubs/ES1.json @@ -0,0 +1,87 @@ +{ + "id": "ES1", + "name": "LaLiga", + "seasonId": "2024", + "clubs": [ + { + "id": "418", + "name": "Real Madrid" + }, + { + "id": "131", + "name": "FC Barcelona" + }, + { + "id": "13", + "name": "Atlético de Madrid" + }, + { + "id": "681", + "name": "Real Sociedad" + }, + { + "id": "621", + "name": "Athletic Bilbao" + }, + { + "id": "1049", + "name": "Valencia CF" + }, + { + "id": "1050", + "name": "Villarreal CF" + }, + { + "id": "12321", + "name": "Girona FC" + }, + { + "id": "368", + "name": "Sevilla FC" + }, + { + "id": "150", + "name": "Real Betis Balompié" + }, + { + "id": "472", + "name": "UD Las Palmas" + }, + { + "id": "331", + "name": "CA Osasuna" + }, + { + "id": "940", + "name": "Celta de Vigo" + }, + { + "id": "237", + "name": "RCD Mallorca" + }, + { + "id": "1108", + "name": "Deportivo Alavés" + }, + { + "id": "714", + "name": "RCD Espanyol Barcelona" + }, + { + "id": "367", + "name": "Rayo Vallecano" + }, + { + "id": "3709", + "name": "Getafe CF" + }, + { + "id": "1244", + "name": "CD Leganés" + }, + { + "id": "366", + "name": "Real Valladolid CF" + } + ] +} \ No newline at end of file diff --git a/tests/data/competitions/clubs/GB1.json b/tests/data/competitions/clubs/GB1.json new file mode 100644 index 0000000..9643b56 --- /dev/null +++ b/tests/data/competitions/clubs/GB1.json @@ -0,0 +1,87 @@ +{ + "id": "GB1", + "name": "Premier League", + "seasonId": "2024", + "clubs": [ + { + "id": "281", + "name": "Manchester City" + }, + { + "id": "11", + "name": "Arsenal FC" + }, + { + "id": "631", + "name": "Chelsea FC" + }, + { + "id": "31", + "name": "Liverpool FC" + }, + { + "id": "148", + "name": "Tottenham Hotspur" + }, + { + "id": "985", + "name": "Manchester United" + }, + { + "id": "762", + "name": "Newcastle United" + }, + { + "id": "1237", + "name": "Brighton & Hove Albion" + }, + { + "id": "405", + "name": "Aston Villa" + }, + { + "id": "703", + "name": "Nottingham Forest" + }, + { + "id": "379", + "name": "West Ham United" + }, + { + "id": "873", + "name": "Crystal Palace" + }, + { + "id": "1148", + "name": "Brentford FC" + }, + { + "id": "543", + "name": "Wolverhampton Wanderers" + }, + { + "id": "989", + "name": "AFC Bournemouth" + }, + { + "id": "931", + "name": "Fulham FC" + }, + { + "id": "29", + "name": "Everton FC" + }, + { + "id": "180", + "name": "Southampton FC" + }, + { + "id": "1003", + "name": "Leicester City" + }, + { + "id": "677", + "name": "Ipswich Town" + } + ] +} \ No newline at end of file diff --git "a/tests/data/competitions/search/Brasileir\303\243o.json" "b/tests/data/competitions/search/Brasileir\303\243o.json" new file mode 100644 index 0000000..909c66f --- /dev/null +++ "b/tests/data/competitions/search/Brasileir\303\243o.json" @@ -0,0 +1,47 @@ +{ + "query": "Brasileirão", + "pageNumber": 1, + "lastPageNumber": 1, + "results": [ + { + "id": "BRA1", + "name": "Campeonato Brasileiro Série A", + "country": "Brazil", + "clubs": "20", + "players": "646", + "totalMarketValue": "€1.68bn", + "meanMarketValue": "€84.21m", + "continent": "CONMEBOL" + }, + { + "id": "BRA2", + "name": "Campeonato Brasileiro Série B", + "country": "Brazil", + "clubs": "20", + "players": "532", + "totalMarketValue": "€196.25m", + "meanMarketValue": "€9.81m", + "continent": "CONMEBOL" + }, + { + "id": "BRA3", + "name": "Campeonato Brasileiro Série C", + "country": "Brazil", + "clubs": "20", + "players": "529", + "totalMarketValue": "€33.15m", + "meanMarketValue": "€1.66m", + "continent": "CONMEBOL" + }, + { + "id": "BRA4", + "name": "Campeonato Brasileiro Série D", + "country": "Brazil", + "clubs": "64", + "players": "1708", + "totalMarketValue": "€21.35m", + "meanMarketValue": "€334k", + "continent": "CONMEBOL" + } + ] +} \ No newline at end of file diff --git a/tests/data/competitions/search/La Liga.json b/tests/data/competitions/search/La Liga.json new file mode 100644 index 0000000..5c4704e --- /dev/null +++ b/tests/data/competitions/search/La Liga.json @@ -0,0 +1,47 @@ +{ + "query": "La Liga", + "pageNumber": 1, + "lastPageNumber": 1, + "results": [ + { + "id": "ES1", + "name": "LaLiga", + "country": "Spain", + "clubs": "20", + "players": "505", + "totalMarketValue": "€5.25bn", + "meanMarketValue": "€262.62m", + "continent": "UEFA" + }, + { + "id": "ES2", + "name": "LaLiga2", + "country": "Spain", + "clubs": "22", + "players": "539", + "totalMarketValue": "€493.93m", + "meanMarketValue": "€22.45m", + "continent": "UEFA" + }, + { + "id": "SL1A", + "name": "Primera División Apertura", + "country": "El Salvador", + "clubs": "11", + "players": "298", + "totalMarketValue": "€28.75m", + "meanMarketValue": "€2.61m", + "continent": "CONCACAF" + }, + { + "id": "SL1C", + "name": "Primera División Clausura", + "country": "El Salvador", + "clubs": "11", + "players": "298", + "totalMarketValue": "€28.75m", + "meanMarketValue": "€2.61m", + "continent": "CONCACAF" + } + ] +} \ No newline at end of file diff --git a/tests/data/competitions/search/Premier League.json b/tests/data/competitions/search/Premier League.json new file mode 100644 index 0000000..a0d2f9a --- /dev/null +++ b/tests/data/competitions/search/Premier League.json @@ -0,0 +1,107 @@ +{ + "query": "Premier League", + "pageNumber": 1, + "lastPageNumber": 6, + "results": [ + { + "id": "GB1", + "name": "Premier League", + "country": "England", + "clubs": "20", + "players": "551", + "totalMarketValue": "€11.82bn", + "meanMarketValue": "€591.19m", + "continent": "UEFA" + }, + { + "id": "SC1", + "name": "Scottish Premiership", + "country": "Scotland", + "clubs": "12", + "players": "334", + "totalMarketValue": "€336.90m", + "meanMarketValue": "€28.08m", + "continent": "UEFA" + }, + { + "id": "EGY1", + "name": "Egyptian Premier League", + "country": "Egypt", + "clubs": "18", + "players": "610", + "totalMarketValue": "€147.93m", + "meanMarketValue": "€8.22m", + "continent": "CAF" + }, + { + "id": "AZ1", + "name": "Premyer Liqa", + "country": "Azerbaijan", + "clubs": "10", + "players": "259", + "totalMarketValue": "€99.40m", + "meanMarketValue": "€9.94m", + "continent": "UEFA" + }, + { + "id": "THA1", + "name": "Thai League", + "country": "Thailand", + "clubs": "16", + "players": "504", + "totalMarketValue": "€79.98m", + "meanMarketValue": "€5.00m", + "continent": "AFC" + }, + { + "id": "GB21", + "name": "Premier League 2", + "country": "England", + "clubs": "26", + "players": "607", + "totalMarketValue": "€60.98m", + "meanMarketValue": "€2.35m", + "continent": "UEFA" + }, + { + "id": "ARM1", + "name": "Bardzraguyn khumb", + "country": "Armenia", + "clubs": "11", + "players": "271", + "totalMarketValue": "€42.94m", + "meanMarketValue": "€3.90m", + "continent": "UEFA" + }, + { + "id": "MT1P", + "name": "Premier League Closing Round", + "country": "Malta", + "clubs": "12", + "players": "272", + "totalMarketValue": "€40.73m", + "meanMarketValue": "€3.39m", + "continent": "UEFA" + }, + { + "id": "MT1N", + "name": "Premier League Opening Round", + "country": "Malta", + "clubs": "12", + "players": "272", + "totalMarketValue": "€40.73m", + "meanMarketValue": "€3.39m", + "continent": "UEFA" + }, + { + "id": "OM1L", + "name": "Oman Professional League", + "country": "Oman", + "clubs": "12", + "players": "392", + "totalMarketValue": "€39.21m", + "meanMarketValue": "€3.27m", + "continent": "AFC" + } + ] +} \ No newline at end of file diff --git a/tests/data/players/achievements/28003.json b/tests/data/players/achievements/28003.json new file mode 100644 index 0000000..eaac6f4 --- /dev/null +++ b/tests/data/players/achievements/28003.json @@ -0,0 +1,1135 @@ +{ + "id": "28003", + "achievements": [ + { + "title": "The Best FIFA Men's Player", + "count": 4, + "details": [ + { + "season": { + "id": "2022", + "name": "2023" + }, + "club": { + "id": "69261", + "name": "Inter Miami CF" + } + }, + { + "season": { + "id": "2021", + "name": "2022" + }, + "club": { + "id": "583", + "name": "Paris Saint-Germain" + } + }, + { + "season": { + "id": "2018", + "name": "2019" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2008", + "name": "2009" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + } + ] + }, + { + "title": "Winner Ballon d'Or", + "count": 8, + "details": [ + { + "season": { + "id": null, + "name": "2023" + } + }, + { + "season": { + "id": null, + "name": "2021" + } + }, + { + "season": { + "id": null, + "name": "2019" + } + }, + { + "season": { + "id": null, + "name": "2015" + } + }, + { + "season": { + "id": null, + "name": "2012" + } + }, + { + "season": { + "id": null, + "name": "2011" + } + }, + { + "season": { + "id": null, + "name": "2010" + } + }, + { + "season": { + "id": null, + "name": "2009" + } + } + ] + }, + { + "title": "UEFA Best Player in Europe", + "count": 3, + "details": [ + { + "season": { + "id": "2014", + "name": "2015" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2010", + "name": "2011" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2008", + "name": "2009" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + } + ] + }, + { + "title": "Golden Boot winner (Europe)", + "count": 6, + "details": [ + { + "season": { + "id": "2018", + "name": "18/19" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2017", + "name": "17/18" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2016", + "name": "16/17" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2012", + "name": "12/13" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2011", + "name": "11/12" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2009", + "name": "09/10" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + } + ] + }, + { + "title": "MLS MVP", + "count": 1, + "details": [ + { + "season": { + "id": "2023", + "name": "23/24" + }, + "competition": { + "id": "MLS1", + "name": "Major League Soccer" + } + } + ] + }, + { + "title": "Top goal scorer", + "count": 23, + "details": [ + { + "season": { + "id": "2022", + "name": "22/23" + }, + "competition": { + "id": "USMX", + "name": "Leagues Cup" + } + }, + { + "season": { + "id": "2020", + "name": "20/21" + }, + "competition": { + "id": "CAM2", + "name": "Copa América 2021" + } + }, + { + "season": { + "id": "2020", + "name": "20/21" + }, + "competition": { + "id": "ES1", + "name": "LaLiga" + } + }, + { + "season": { + "id": "2019", + "name": "19/20" + }, + "competition": { + "id": "ES1", + "name": "LaLiga" + } + }, + { + "season": { + "id": "2018", + "name": "18/19" + }, + "competition": { + "id": "CL", + "name": "UEFA Champions League" + } + }, + { + "season": { + "id": "2018", + "name": "18/19" + }, + "competition": { + "id": "ES1", + "name": "LaLiga" + } + }, + { + "season": { + "id": "2017", + "name": "17/18" + }, + "competition": { + "id": "ES1", + "name": "LaLiga" + } + }, + { + "season": { + "id": "2016", + "name": "16/17" + }, + "competition": { + "id": "CDR", + "name": "Copa del Rey" + } + }, + { + "season": { + "id": "2016", + "name": "16/17" + }, + "competition": { + "id": "ES1", + "name": "LaLiga" + } + }, + { + "season": { + "id": "2015", + "name": "15/16" + }, + "competition": { + "id": "CDR", + "name": "Copa del Rey" + } + }, + { + "season": { + "id": "2014", + "name": "14/15" + }, + "competition": { + "id": "CL", + "name": "UEFA Champions League" + } + }, + { + "season": { + "id": "2013", + "name": "13/14" + }, + "competition": { + "id": "CDR", + "name": "Copa del Rey" + } + }, + { + "season": { + "id": "2012", + "name": "12/13" + }, + "competition": { + "id": "ES1", + "name": "LaLiga" + } + }, + { + "season": { + "id": "2011", + "name": "11/12" + }, + "competition": { + "id": "KLUB", + "name": "FIFA Club World Cup" + } + }, + { + "season": { + "id": "2011", + "name": "11/12" + }, + "competition": { + "id": "CL", + "name": "UEFA Champions League" + } + }, + { + "season": { + "id": "2011", + "name": "11/12" + }, + "competition": { + "id": "ES1", + "name": "LaLiga" + } + }, + { + "season": { + "id": "2010", + "name": "10/11" + }, + "competition": { + "id": "CDR", + "name": "Copa del Rey" + } + }, + { + "season": { + "id": "2010", + "name": "10/11" + }, + "competition": { + "id": "CL", + "name": "UEFA Champions League" + } + }, + { + "season": { + "id": "2009", + "name": "09/10" + }, + "competition": { + "id": "ES1", + "name": "LaLiga" + } + }, + { + "season": { + "id": "2009", + "name": "09/10" + }, + "competition": { + "id": "CL", + "name": "UEFA Champions League" + } + }, + { + "season": { + "id": "2008", + "name": "08/09" + }, + "competition": { + "id": "CDR", + "name": "Copa del Rey" + } + }, + { + "season": { + "id": "2008", + "name": "08/09" + }, + "competition": { + "id": "CL", + "name": "UEFA Champions League" + } + }, + { + "season": { + "id": "2004", + "name": "04/05" + }, + "competition": { + "id": "U20N", + "name": "U20-Weltmeisterschaft 2005" + } + } + ] + }, + { + "title": "Player of the Year", + "count": 9, + "details": [ + { + "season": { + "id": "2018", + "name": "18/19" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2017", + "name": "17/18" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2016", + "name": "16/17" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2014", + "name": "14/15" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2012", + "name": "12/13" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2011", + "name": "11/12" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2010", + "name": "10/11" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2009", + "name": "09/10" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2008", + "name": "08/09" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + } + ] + }, + { + "title": "TM-Player of the season", + "count": 4, + "details": [ + { + "season": { + "id": null, + "name": "2021" + } + }, + { + "season": { + "id": null, + "name": "2020" + } + }, + { + "season": { + "id": null, + "name": "2019" + } + }, + { + "season": { + "id": null, + "name": "2018" + } + } + ] + }, + { + "title": "World Cup winner", + "count": 1, + "details": [ + { + "season": { + "id": "2021", + "name": "2022" + }, + "club": { + "id": "3437", + "name": "Argentina" + } + } + ] + }, + { + "title": "Copa América winner", + "count": 2, + "details": [ + { + "season": { + "id": "2023", + "name": "23/24" + }, + "club": { + "id": "3437", + "name": "Argentina" + } + }, + { + "season": { + "id": "2020", + "name": "20/21" + }, + "club": { + "id": "3437", + "name": "Argentina" + } + } + ] + }, + { + "title": "Champions League winner", + "count": 4, + "details": [ + { + "season": { + "id": "2014", + "name": "14/15" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2010", + "name": "10/11" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2008", + "name": "08/09" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2005", + "name": "05/06" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + } + ] + }, + { + "title": "FIFA Club World Cup winner", + "count": 3, + "details": [ + { + "season": { + "id": "2015", + "name": "2016" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2011", + "name": "2012" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2009", + "name": "2010" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + } + ] + }, + { + "title": "Spanish champion", + "count": 10, + "details": [ + { + "season": { + "id": "2018", + "name": "18/19" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2017", + "name": "17/18" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2015", + "name": "15/16" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2014", + "name": "14/15" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2012", + "name": "12/13" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2010", + "name": "10/11" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2009", + "name": "09/10" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2008", + "name": "08/09" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2005", + "name": "05/06" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2004", + "name": "04/05" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + } + ] + }, + { + "title": "French champion", + "count": 2, + "details": [ + { + "season": { + "id": "2022", + "name": "22/23" + }, + "club": { + "id": "583", + "name": "Paris Saint-Germain" + } + }, + { + "season": { + "id": "2021", + "name": "21/22" + }, + "club": { + "id": "583", + "name": "Paris Saint-Germain" + } + } + ] + }, + { + "title": "Uefa Supercup winner", + "count": 3, + "details": [ + { + "season": { + "id": "2015", + "name": "15/16" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2011", + "name": "11/12" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2009", + "name": "09/10" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + } + ] + }, + { + "title": "Spanish cup winner", + "count": 7, + "details": [ + { + "season": { + "id": "2020", + "name": "20/21" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2017", + "name": "17/18" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2016", + "name": "16/17" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2015", + "name": "15/16" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2014", + "name": "14/15" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2011", + "name": "11/12" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2008", + "name": "08/09" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + } + ] + }, + { + "title": "Spanish Super Cup winner", + "count": 8, + "details": [ + { + "season": { + "id": "2018", + "name": "18/19" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2016", + "name": "16/17" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2013", + "name": "13/14" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2011", + "name": "11/12" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2010", + "name": "10/11" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2009", + "name": "09/10" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2006", + "name": "06/07" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2005", + "name": "05/06" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + } + ] + }, + { + "title": "Supporters' Shield Winner", + "count": 1, + "details": [ + { + "season": { + "id": "2023", + "name": "23/24" + }, + "club": { + "id": "69261", + "name": "Inter Miami CF" + } + } + ] + }, + { + "title": "Leagues Cup Winner", + "count": 1, + "details": [ + { + "season": { + "id": "2022", + "name": "2023" + }, + "club": { + "id": "69261", + "name": "Inter Miami CF" + } + } + ] + }, + { + "title": "Under-20 World Cup champion", + "count": 1, + "details": [ + { + "season": { + "id": "2004", + "name": "2005" + }, + "club": { + "id": "11940", + "name": "Argentina U20" + } + } + ] + }, + { + "title": "CONMEBOL-UEFA Cup of Champions winner", + "count": 1, + "details": [ + { + "season": { + "id": "2021", + "name": "21/22" + }, + "club": { + "id": "3437", + "name": "Argentina" + } + } + ] + }, + { + "title": "French Super Cup winner", + "count": 1, + "details": [ + { + "season": { + "id": "2022", + "name": "22/23" + }, + "club": { + "id": "583", + "name": "Paris Saint-Germain" + } + } + ] + }, + { + "title": "Olympic medalist", + "count": 1, + "details": [ + { + "season": { + "id": "2007", + "name": "2008" + }, + "club": { + "id": "53819", + "name": "Argentina Olympic Team" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/data/players/achievements/3373.json b/tests/data/players/achievements/3373.json new file mode 100644 index 0000000..0202bf4 --- /dev/null +++ b/tests/data/players/achievements/3373.json @@ -0,0 +1,281 @@ +{ + "id": "3373", + "achievements": [ + { + "title": "The Best FIFA Men's Player", + "count": 2, + "details": [ + { + "season": { + "id": "2004", + "name": "2005" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2003", + "name": "2004" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + } + ] + }, + { + "title": "Winner Ballon d'Or", + "count": 1, + "details": [ + { + "season": { + "id": null, + "name": "2005" + } + } + ] + }, + { + "title": "UEFA Best Player in Europe", + "count": 1, + "details": [ + { + "season": { + "id": "2005", + "name": "2006" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + } + ] + }, + { + "title": "Top goal scorer", + "count": 2, + "details": [ + { + "season": { + "id": "2013", + "name": "13/14" + }, + "competition": { + "id": "KLUB", + "name": "FIFA Club World Cup" + } + }, + { + "season": { + "id": "1998", + "name": "98/99" + }, + "competition": { + "id": "CC99", + "name": "Confederations Cup 1999" + } + } + ] + }, + { + "title": "World Cup winner", + "count": 1, + "details": [ + { + "season": { + "id": "2001", + "name": "2002" + }, + "club": { + "id": "3439", + "name": "Brazil" + } + } + ] + }, + { + "title": "Copa América winner", + "count": 1, + "details": [ + { + "season": { + "id": "1998", + "name": "98/99" + }, + "club": { + "id": "3439", + "name": "Brazil" + } + } + ] + }, + { + "title": "Champions League winner", + "count": 1, + "details": [ + { + "season": { + "id": "2005", + "name": "05/06" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + } + ] + }, + { + "title": "Spanish champion", + "count": 2, + "details": [ + { + "season": { + "id": "2005", + "name": "05/06" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2004", + "name": "04/05" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + } + ] + }, + { + "title": "Italian champion", + "count": 1, + "details": [ + { + "season": { + "id": "2010", + "name": "10/11" + }, + "club": { + "id": "5", + "name": "AC Milan" + } + } + ] + }, + { + "title": "Spanish Super Cup winner", + "count": 2, + "details": [ + { + "season": { + "id": "2006", + "name": "06/07" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2005", + "name": "05/06" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + } + ] + }, + { + "title": "Under-17 World Cup champion", + "count": 1, + "details": [ + { + "season": { + "id": "1996", + "name": "1997" + }, + "club": { + "id": "23130", + "name": "Brazil U17" + } + } + ] + }, + { + "title": "Copa Libertadores winner", + "count": 1, + "details": [ + { + "season": { + "id": "2012", + "name": "12/13" + }, + "club": { + "id": "330", + "name": "Clube Atlético Mineiro" + } + } + ] + }, + { + "title": "Confederations Cup winner", + "count": 1, + "details": [ + { + "season": { + "id": "2004", + "name": "2005" + }, + "club": { + "id": "3439", + "name": "Brazil" + } + } + ] + }, + { + "title": "Recopa Sudamericana winner", + "count": 1, + "details": [ + { + "season": { + "id": "2013", + "name": "13/14" + }, + "club": { + "id": "330", + "name": "Clube Atlético Mineiro" + } + } + ] + }, + { + "title": "Third place at the Olympic Games", + "count": 1, + "details": [ + { + "season": { + "id": "2007", + "name": "2008" + }, + "club": { + "id": "53818", + "name": "Brazil Olympic Team" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/data/players/achievements/68290.json b/tests/data/players/achievements/68290.json new file mode 100644 index 0000000..c0d5084 --- /dev/null +++ b/tests/data/players/achievements/68290.json @@ -0,0 +1,509 @@ +{ + "id": "68290", + "achievements": [ + { + "title": "Footballer of the Year", + "count": 1, + "details": [ + { + "season": { + "id": null, + "name": "2011" + } + } + ] + }, + { + "title": "FIFA Puskás Award", + "count": 1, + "details": [ + { + "season": { + "id": null, + "name": "2011" + } + } + ] + }, + { + "title": "Top goal scorer", + "count": 4, + "details": [ + { + "season": { + "id": "2014", + "name": "14/15" + }, + "competition": { + "id": "CL", + "name": "UEFA Champions League" + } + }, + { + "season": { + "id": "2014", + "name": "14/15" + }, + "competition": { + "id": "CDR", + "name": "Copa del Rey" + } + }, + { + "season": { + "id": "2011", + "name": "11/12" + }, + "competition": { + "id": "CLI", + "name": "Copa Libertadores" + } + }, + { + "season": { + "id": "2009", + "name": "09/10" + }, + "competition": { + "id": "BRC", + "name": "Copa do Brasil" + } + } + ] + }, + { + "title": "Player of the Year", + "count": 1, + "details": [ + { + "season": { + "id": "2010", + "name": "10/11" + }, + "club": { + "id": "221", + "name": "Santos FC" + } + } + ] + }, + { + "title": "Champions League winner", + "count": 1, + "details": [ + { + "season": { + "id": "2014", + "name": "14/15" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + } + ] + }, + { + "title": "FIFA Club World Cup winner", + "count": 1, + "details": [ + { + "season": { + "id": "2015", + "name": "2016" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + } + ] + }, + { + "title": "Spanish champion", + "count": 2, + "details": [ + { + "season": { + "id": "2015", + "name": "15/16" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2014", + "name": "14/15" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + } + ] + }, + { + "title": "French champion", + "count": 5, + "details": [ + { + "season": { + "id": "2022", + "name": "22/23" + }, + "club": { + "id": "583", + "name": "Paris Saint-Germain" + } + }, + { + "season": { + "id": "2021", + "name": "21/22" + }, + "club": { + "id": "583", + "name": "Paris Saint-Germain" + } + }, + { + "season": { + "id": "2019", + "name": "19/20" + }, + "club": { + "id": "583", + "name": "Paris Saint-Germain" + } + }, + { + "season": { + "id": "2018", + "name": "18/19" + }, + "club": { + "id": "583", + "name": "Paris Saint-Germain" + } + }, + { + "season": { + "id": "2017", + "name": "17/18" + }, + "club": { + "id": "583", + "name": "Paris Saint-Germain" + } + } + ] + }, + { + "title": "Uefa Supercup winner", + "count": 1, + "details": [ + { + "season": { + "id": "2015", + "name": "15/16" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + } + ] + }, + { + "title": "French cup winner", + "count": 3, + "details": [ + { + "season": { + "id": "2020", + "name": "20/21" + }, + "club": { + "id": "583", + "name": "Paris Saint-Germain" + } + }, + { + "season": { + "id": "2019", + "name": "19/20" + }, + "club": { + "id": "583", + "name": "Paris Saint-Germain" + } + }, + { + "season": { + "id": "2017", + "name": "17/18" + }, + "club": { + "id": "583", + "name": "Paris Saint-Germain" + } + } + ] + }, + { + "title": "Spanish cup winner", + "count": 3, + "details": [ + { + "season": { + "id": "2016", + "name": "16/17" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2015", + "name": "15/16" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + }, + { + "season": { + "id": "2014", + "name": "14/15" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + } + ] + }, + { + "title": "French league cup winner", + "count": 2, + "details": [ + { + "season": { + "id": "2019", + "name": "19/20" + }, + "club": { + "id": "583", + "name": "Paris Saint-Germain" + } + }, + { + "season": { + "id": "2017", + "name": "17/18" + }, + "club": { + "id": "583", + "name": "Paris Saint-Germain" + } + } + ] + }, + { + "title": "Spanish Super Cup winner", + "count": 1, + "details": [ + { + "season": { + "id": "2013", + "name": "13/14" + }, + "club": { + "id": "131", + "name": "FC Barcelona" + } + } + ] + }, + { + "title": "Brazilian cup winner", + "count": 1, + "details": [ + { + "season": { + "id": "2009", + "name": "2010" + }, + "club": { + "id": "221", + "name": "Santos FC" + } + } + ] + }, + { + "title": "Saudi Arabian champion", + "count": 1, + "details": [ + { + "season": { + "id": "2023", + "name": "23/24" + }, + "club": { + "id": "1114", + "name": "Al-Hilal SFC" + } + } + ] + }, + { + "title": "Copa Libertadores winner", + "count": 1, + "details": [ + { + "season": { + "id": "2010", + "name": "10/11" + }, + "club": { + "id": "221", + "name": "Santos FC" + } + } + ] + }, + { + "title": "Confederations Cup winner", + "count": 1, + "details": [ + { + "season": { + "id": "2012", + "name": "2013" + }, + "club": { + "id": "3439", + "name": "Brazil" + } + } + ] + }, + { + "title": "Recopa Sudamericana winner", + "count": 1, + "details": [ + { + "season": { + "id": "2011", + "name": "11/12" + }, + "club": { + "id": "221", + "name": "Santos FC" + } + } + ] + }, + { + "title": "Under-20 South American Championship winner", + "count": 1, + "details": [ + { + "season": { + "id": "2010", + "name": "2011" + }, + "club": { + "id": "7658", + "name": "Brazil U20" + } + } + ] + }, + { + "title": "French Super Cup winner", + "count": 4, + "details": [ + { + "season": { + "id": "2022", + "name": "22/23" + }, + "club": { + "id": "583", + "name": "Paris Saint-Germain" + } + }, + { + "season": { + "id": "2020", + "name": "20/21" + }, + "club": { + "id": "583", + "name": "Paris Saint-Germain" + } + }, + { + "season": { + "id": "2019", + "name": "19/20" + }, + "club": { + "id": "583", + "name": "Paris Saint-Germain" + } + }, + { + "season": { + "id": "2018", + "name": "18/19" + }, + "club": { + "id": "583", + "name": "Paris Saint-Germain" + } + } + ] + }, + { + "title": "Olympic medalist", + "count": 1, + "details": [ + { + "season": { + "id": "2015", + "name": "2016" + }, + "club": { + "id": "53818", + "name": "Brazil Olympic Team" + } + } + ] + }, + { + "title": "Second place at the Olympic Games", + "count": 1, + "details": [ + { + "season": { + "id": "2011", + "name": "2012" + }, + "club": { + "id": "53818", + "name": "Brazil Olympic Team" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/data/players/achievements/8198.json b/tests/data/players/achievements/8198.json new file mode 100644 index 0000000..02bbb0d --- /dev/null +++ b/tests/data/players/achievements/8198.json @@ -0,0 +1,1027 @@ +{ + "id": "8198", + "achievements": [ + { + "title": "The Best FIFA Men's Player", + "count": 3, + "details": [ + { + "season": { + "id": "2016", + "name": "2017" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + }, + { + "season": { + "id": "2015", + "name": "2016" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + }, + { + "season": { + "id": "2007", + "name": "2008" + }, + "club": { + "id": "985", + "name": "Manchester United" + } + } + ] + }, + { + "title": "Winner Ballon d'Or", + "count": 5, + "details": [ + { + "season": { + "id": null, + "name": "2017" + } + }, + { + "season": { + "id": null, + "name": "2016" + } + }, + { + "season": { + "id": null, + "name": "2014" + } + }, + { + "season": { + "id": null, + "name": "2013" + } + }, + { + "season": { + "id": null, + "name": "2008" + } + } + ] + }, + { + "title": "UEFA Best Player in Europe", + "count": 4, + "details": [ + { + "season": { + "id": "2016", + "name": "2017" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + }, + { + "season": { + "id": "2015", + "name": "2016" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + }, + { + "season": { + "id": "2013", + "name": "2014" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + }, + { + "season": { + "id": "2007", + "name": "2008" + }, + "club": { + "id": "985", + "name": "Manchester United" + } + } + ] + }, + { + "title": "Golden Boot winner (Europe)", + "count": 4, + "details": [ + { + "season": { + "id": "2014", + "name": "14/15" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + }, + { + "season": { + "id": "2013", + "name": "13/14" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + }, + { + "season": { + "id": "2010", + "name": "10/11" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + }, + { + "season": { + "id": "2007", + "name": "07/08" + }, + "club": { + "id": "985", + "name": "Manchester United" + } + } + ] + }, + { + "title": "Footballer of the Year", + "count": 13, + "details": [ + { + "season": { + "id": null, + "name": "2020" + } + }, + { + "season": { + "id": null, + "name": "2019" + } + }, + { + "season": { + "id": null, + "name": "2018" + } + }, + { + "season": { + "id": null, + "name": "2017" + } + }, + { + "season": { + "id": null, + "name": "2016" + } + }, + { + "season": { + "id": null, + "name": "2015" + } + }, + { + "season": { + "id": null, + "name": "2013" + } + }, + { + "season": { + "id": null, + "name": "2012" + } + }, + { + "season": { + "id": null, + "name": "2011" + } + }, + { + "season": { + "id": null, + "name": "2009" + } + }, + { + "season": { + "id": null, + "name": "2008" + } + }, + { + "season": { + "id": null, + "name": "2007" + } + }, + { + "season": { + "id": null, + "name": "2007" + } + } + ] + }, + { + "title": "FIFA Puskás Award", + "count": 1, + "details": [ + { + "season": { + "id": null, + "name": "2009" + } + } + ] + }, + { + "title": "Top goal scorer", + "count": 21, + "details": [ + { + "season": { + "id": "2024", + "name": "24/25" + }, + "competition": { + "id": "UNLA", + "name": "UEFA Nations League A" + } + }, + { + "season": { + "id": "2023", + "name": "23/24" + }, + "competition": { + "id": "SA1", + "name": "Saudi Pro League" + } + }, + { + "season": { + "id": "2020", + "name": "20/21" + }, + "competition": { + "id": "EM20", + "name": "EURO 2020" + } + }, + { + "season": { + "id": "2020", + "name": "20/21" + }, + "competition": { + "id": "IT1", + "name": "Serie A" + } + }, + { + "season": { + "id": "2018", + "name": "18/19" + }, + "competition": { + "id": "UNFI", + "name": "UEFA Nations League Finals" + } + }, + { + "season": { + "id": "2017", + "name": "17/18" + }, + "competition": { + "id": "CL", + "name": "UEFA Champions League" + } + }, + { + "season": { + "id": "2017", + "name": "17/18" + }, + "competition": { + "id": "KLUB", + "name": "FIFA Club World Cup" + } + }, + { + "season": { + "id": "2016", + "name": "16/17" + }, + "competition": { + "id": "CL", + "name": "UEFA Champions League" + } + }, + { + "season": { + "id": "2016", + "name": "16/17" + }, + "competition": { + "id": "KLUB", + "name": "FIFA Club World Cup" + } + }, + { + "season": { + "id": "2015", + "name": "15/16" + }, + "competition": { + "id": "CL", + "name": "UEFA Champions League" + } + }, + { + "season": { + "id": "2014", + "name": "14/15" + }, + "competition": { + "id": "ES1", + "name": "LaLiga" + } + }, + { + "season": { + "id": "2014", + "name": "14/15" + }, + "competition": { + "id": "CL", + "name": "UEFA Champions League" + } + }, + { + "season": { + "id": "2013", + "name": "13/14" + }, + "competition": { + "id": "CL", + "name": "UEFA Champions League" + } + }, + { + "season": { + "id": "2013", + "name": "13/14" + }, + "competition": { + "id": "ES1", + "name": "LaLiga" + } + }, + { + "season": { + "id": "2012", + "name": "12/13" + }, + "competition": { + "id": "CL", + "name": "UEFA Champions League" + } + }, + { + "season": { + "id": "2011", + "name": "11/12" + }, + "competition": { + "id": "EM12", + "name": "EURO 2012" + } + }, + { + "season": { + "id": "2010", + "name": "10/11" + }, + "competition": { + "id": "CDR", + "name": "Copa del Rey" + } + }, + { + "season": { + "id": "2010", + "name": "10/11" + }, + "competition": { + "id": "ES1", + "name": "LaLiga" + } + }, + { + "season": { + "id": "2007", + "name": "07/08" + }, + "competition": { + "id": "CL", + "name": "UEFA Champions League" + } + }, + { + "season": { + "id": "2007", + "name": "07/08" + }, + "competition": { + "id": "GB1", + "name": "Premier League" + } + }, + { + "season": { + "id": "2004", + "name": "04/05" + }, + "competition": { + "id": "FAC", + "name": "FA Cup" + } + } + ] + }, + { + "title": "Player of the Year", + "count": 9, + "details": [ + { + "season": { + "id": "2023", + "name": "23/24" + }, + "club": { + "id": "18544", + "name": "Al-Nassr FC" + } + }, + { + "season": { + "id": "2020", + "name": "20/21" + }, + "club": { + "id": "506", + "name": "Juventus FC" + } + }, + { + "season": { + "id": "2019", + "name": "19/20" + }, + "club": { + "id": "506", + "name": "Juventus FC" + } + }, + { + "season": { + "id": "2018", + "name": "18/19" + }, + "club": { + "id": "506", + "name": "Juventus FC" + } + }, + { + "season": { + "id": "2013", + "name": "13/14" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + }, + { + "season": { + "id": "2012", + "name": "12/13" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + }, + { + "season": { + "id": "2007", + "name": "07/08" + }, + "club": { + "id": "985", + "name": "Manchester United" + } + }, + { + "season": { + "id": "2007", + "name": "07/08" + }, + "club": { + "id": "985", + "name": "Manchester United" + } + }, + { + "season": { + "id": "2006", + "name": "06/07" + }, + "club": { + "id": "985", + "name": "Manchester United" + } + } + ] + }, + { + "title": "TM-Player of the season", + "count": 3, + "details": [ + { + "season": { + "id": null, + "name": "2024" + } + }, + { + "season": { + "id": null, + "name": "2019" + } + }, + { + "season": { + "id": null, + "name": "2017" + } + } + ] + }, + { + "title": "European champion", + "count": 1, + "details": [ + { + "season": { + "id": "2015", + "name": "2016" + }, + "club": { + "id": "3300", + "name": "Portugal" + } + } + ] + }, + { + "title": "Champions League winner", + "count": 5, + "details": [ + { + "season": { + "id": "2017", + "name": "17/18" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + }, + { + "season": { + "id": "2016", + "name": "16/17" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + }, + { + "season": { + "id": "2015", + "name": "15/16" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + }, + { + "season": { + "id": "2013", + "name": "13/14" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + }, + { + "season": { + "id": "2007", + "name": "07/08" + }, + "club": { + "id": "985", + "name": "Manchester United" + } + } + ] + }, + { + "title": "FIFA Club World Cup winner", + "count": 4, + "details": [ + { + "season": { + "id": "2017", + "name": "2018" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + }, + { + "season": { + "id": "2016", + "name": "2017" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + }, + { + "season": { + "id": "2014", + "name": "2015" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + }, + { + "season": { + "id": "2008", + "name": "2009" + }, + "club": { + "id": "985", + "name": "Manchester United" + } + } + ] + }, + { + "title": "English Champion", + "count": 3, + "details": [ + { + "season": { + "id": "2008", + "name": "08/09" + }, + "club": { + "id": "985", + "name": "Manchester United" + } + }, + { + "season": { + "id": "2007", + "name": "07/08" + }, + "club": { + "id": "985", + "name": "Manchester United" + } + }, + { + "season": { + "id": "2006", + "name": "06/07" + }, + "club": { + "id": "985", + "name": "Manchester United" + } + } + ] + }, + { + "title": "Spanish champion", + "count": 2, + "details": [ + { + "season": { + "id": "2016", + "name": "16/17" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + }, + { + "season": { + "id": "2011", + "name": "11/12" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + } + ] + }, + { + "title": "Italian champion", + "count": 2, + "details": [ + { + "season": { + "id": "2019", + "name": "19/20" + }, + "club": { + "id": "506", + "name": "Juventus FC" + } + }, + { + "season": { + "id": "2018", + "name": "18/19" + }, + "club": { + "id": "506", + "name": "Juventus FC" + } + } + ] + }, + { + "title": "Uefa Supercup winner", + "count": 3, + "details": [ + { + "season": { + "id": "2017", + "name": "17/18" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + }, + { + "season": { + "id": "2016", + "name": "16/17" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + }, + { + "season": { + "id": "2014", + "name": "14/15" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + } + ] + }, + { + "title": "Winner UEFA Nations League", + "count": 1, + "details": [ + { + "season": { + "id": "2018", + "name": "2019" + }, + "club": { + "id": "3300", + "name": "Portugal" + } + } + ] + }, + { + "title": "English FA Cup winner", + "count": 1, + "details": [ + { + "season": { + "id": "2003", + "name": "2004" + }, + "club": { + "id": "985", + "name": "Manchester United" + } + } + ] + }, + { + "title": "Spanish cup winner", + "count": 2, + "details": [ + { + "season": { + "id": "2013", + "name": "13/14" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + }, + { + "season": { + "id": "2010", + "name": "10/11" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + } + ] + }, + { + "title": "Italian cup winner", + "count": 1, + "details": [ + { + "season": { + "id": "2020", + "name": "20/21" + }, + "club": { + "id": "506", + "name": "Juventus FC" + } + } + ] + }, + { + "title": "English League Cup winner", + "count": 2, + "details": [ + { + "season": { + "id": "2008", + "name": "2009" + }, + "club": { + "id": "985", + "name": "Manchester United" + } + }, + { + "season": { + "id": "2005", + "name": "2006" + }, + "club": { + "id": "985", + "name": "Manchester United" + } + } + ] + }, + { + "title": "Spanish Super Cup winner", + "count": 2, + "details": [ + { + "season": { + "id": "2017", + "name": "17/18" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + }, + { + "season": { + "id": "2012", + "name": "12/13" + }, + "club": { + "id": "418", + "name": "Real Madrid" + } + } + ] + }, + { + "title": "Italian Super Cup winner", + "count": 2, + "details": [ + { + "season": { + "id": "2020", + "name": "20/21" + }, + "club": { + "id": "506", + "name": "Juventus FC" + } + }, + { + "season": { + "id": "2018", + "name": "18/19" + }, + "club": { + "id": "506", + "name": "Juventus FC" + } + } + ] + }, + { + "title": "English Super Cup winner", + "count": 1, + "details": [ + { + "season": { + "id": "2007", + "name": "07/08" + }, + "club": { + "id": "985", + "name": "Manchester United" + } + } + ] + }, + { + "title": "Portuguese Super Cup winner", + "count": 1, + "details": [ + { + "season": { + "id": "2002", + "name": "2003" + }, + "club": { + "id": "336", + "name": "Sporting CP" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/data/players/injuries/28003.json b/tests/data/players/injuries/28003.json new file mode 100644 index 0000000..6c97f04 --- /dev/null +++ b/tests/data/players/injuries/28003.json @@ -0,0 +1,175 @@ +{ + "id": "28003", + "pageNumber": 1, + "lastPageNumber": 4, + "injuries": [ + { + "season": "24/25", + "injury": "Ligament injury", + "fromDate": "Jul 16, 2024", + "untilDate": "Sep 12, 2024", + "days": "58 days", + "gamesMissed": "10", + "gamesMissedClubs": [ + "69261", + "3437" + ] + }, + { + "season": "23/24", + "injury": "Rest", + "fromDate": "May 24, 2024", + "untilDate": "May 27, 2024", + "days": "3 days", + "gamesMissed": "1", + "gamesMissedClubs": [ + "69261" + ] + }, + { + "season": "23/24", + "injury": "Leg injury", + "fromDate": "May 14, 2024", + "untilDate": "May 18, 2024", + "days": "4 days", + "gamesMissed": "1", + "gamesMissedClubs": [ + "69261" + ] + }, + { + "season": "23/24", + "injury": "muscular problems", + "fromDate": "Mar 15, 2024", + "untilDate": "Apr 5, 2024", + "days": "21 days", + "gamesMissed": "6", + "gamesMissedClubs": [ + "69261", + "3437" + ] + }, + { + "season": "23/24", + "injury": "Rest", + "fromDate": "Mar 9, 2024", + "untilDate": "Mar 12, 2024", + "days": "3 days", + "gamesMissed": "1", + "gamesMissedClubs": [ + "69261" + ] + }, + { + "season": "23/24", + "injury": "Muscle injury", + "fromDate": "Sep 22, 2023", + "untilDate": "Oct 6, 2023", + "days": "14 days", + "gamesMissed": "4", + "gamesMissedClubs": [ + "69261" + ] + }, + { + "season": "23/24", + "injury": "Muscle injury", + "fromDate": "Sep 6, 2023", + "untilDate": "Sep 18, 2023", + "days": "12 days", + "gamesMissed": "4", + "gamesMissedClubs": [ + "69261", + "3437" + ] + }, + { + "season": "22/23", + "injury": "Knee problems", + "fromDate": "Feb 8, 2023", + "untilDate": "Feb 13, 2023", + "days": "5 days", + "gamesMissed": "2", + "gamesMissedClubs": [ + "583" + ] + }, + { + "season": "22/23", + "injury": "Rest", + "fromDate": "Dec 26, 2022", + "untilDate": "Jan 3, 2023", + "days": "8 days", + "gamesMissed": "2", + "gamesMissedClubs": [ + "583" + ] + }, + { + "season": "22/23", + "injury": "Achilles heel problems", + "fromDate": "Nov 5, 2022", + "untilDate": "Nov 7, 2022", + "days": "2 days", + "gamesMissed": "1", + "gamesMissedClubs": [ + "583" + ] + }, + { + "season": "22/23", + "injury": "Calf problems", + "fromDate": "Oct 5, 2022", + "untilDate": "Oct 13, 2022", + "days": "8 days", + "gamesMissed": "3", + "gamesMissedClubs": [ + "583" + ] + }, + { + "season": "21/22", + "injury": "flu", + "fromDate": "Mar 17, 2022", + "untilDate": "Mar 24, 2022", + "days": "7 days", + "gamesMissed": "1", + "gamesMissedClubs": [ + "583" + ] + }, + { + "season": "21/22", + "injury": "Quarantine", + "fromDate": "Jan 6, 2022", + "untilDate": "Jan 20, 2022", + "days": "14 days", + "gamesMissed": "2", + "gamesMissedClubs": [ + "583" + ] + }, + { + "season": "21/22", + "injury": "Quarantine", + "fromDate": "Jan 6, 2022", + "untilDate": "Jan 20, 2022", + "days": "14 days", + "gamesMissed": "2", + "gamesMissedClubs": [ + "583" + ] + }, + { + "season": "21/22", + "injury": "Corona virus", + "fromDate": "Jan 1, 2022", + "untilDate": "Jan 5, 2022", + "days": "4 days", + "gamesMissed": "1", + "gamesMissedClubs": [ + "583" + ] + } + ] +} \ No newline at end of file diff --git a/tests/data/players/injuries/3373.json b/tests/data/players/injuries/3373.json new file mode 100644 index 0000000..0b0aed8 --- /dev/null +++ b/tests/data/players/injuries/3373.json @@ -0,0 +1,152 @@ +{ + "id": "3373", + "pageNumber": 1, + "lastPageNumber": 1, + "injuries": [ + { + "season": "13/14", + "injury": "Hamstring injury", + "fromDate": "Sep 23, 2013", + "untilDate": "Dec 1, 2013", + "days": "69 days", + "gamesMissed": "19", + "gamesMissedClubs": [ + "330", + "3439" + ] + }, + { + "season": "13/14", + "injury": "unknown injury", + "fromDate": "Aug 18, 2013", + "untilDate": "Sep 1, 2013", + "days": "14 days", + "gamesMissed": "5", + "gamesMissedClubs": [ + "330" + ] + }, + { + "season": "11/12", + "injury": "unknown injury", + "fromDate": "Oct 8, 2011", + "untilDate": "Oct 13, 2011", + "days": "5 days", + "gamesMissed": "3", + "gamesMissedClubs": [ + "614", + "3439" + ] + }, + { + "season": "10/11", + "injury": "unknown injury", + "fromDate": "Jan 1, 2011", + "untilDate": "Jan 10, 2011", + "days": "9 days", + "gamesMissed": "2", + "gamesMissedClubs": [ + "5" + ] + }, + { + "season": "10/11", + "injury": "unknown injury", + "fromDate": "Oct 23, 2010", + "untilDate": "Oct 30, 2010", + "days": "7 days", + "gamesMissed": "2", + "gamesMissedClubs": [ + "5" + ] + }, + { + "season": "10/11", + "injury": "strain", + "fromDate": "Jul 29, 2010", + "untilDate": "Aug 5, 2010", + "days": "7 days", + "gamesMissed": "", + "gamesMissedClubs": [] + }, + { + "season": "09/10", + "injury": "unknown injury", + "fromDate": "Sep 12, 2009", + "untilDate": "Sep 21, 2009", + "days": "9 days", + "gamesMissed": "3", + "gamesMissedClubs": [ + "5" + ] + }, + { + "season": "08/09", + "injury": "unknown injury", + "fromDate": "Feb 19, 2009", + "untilDate": "Mar 9, 2009", + "days": "18 days", + "gamesMissed": "4", + "gamesMissedClubs": [ + "5" + ] + }, + { + "season": "08/09", + "injury": "muscular problems", + "fromDate": "Nov 30, 2008", + "untilDate": "Dec 12, 2008", + "days": "12 days", + "gamesMissed": "3", + "gamesMissedClubs": [ + "5" + ] + }, + { + "season": "08/09", + "injury": "unknown injury", + "fromDate": "Oct 26, 2008", + "untilDate": "Oct 30, 2008", + "days": "4 days", + "gamesMissed": "2", + "gamesMissedClubs": [ + "5" + ] + }, + { + "season": "07/08", + "injury": "Torn muscle fiber", + "fromDate": "Mar 10, 2008", + "untilDate": "Jun 22, 2008", + "days": "104 days", + "gamesMissed": "21", + "gamesMissedClubs": [ + "131", + "3439" + ] + }, + { + "season": "03/04", + "injury": "Hamstring injury", + "fromDate": "May 24, 2004", + "untilDate": "Jun 6, 2004", + "days": "13 days", + "gamesMissed": "1", + "gamesMissedClubs": [ + "3439" + ] + }, + { + "season": "03/04", + "injury": "Achilles tendon problems", + "fromDate": "Nov 10, 2003", + "untilDate": "Dec 7, 2003", + "days": "27 days", + "gamesMissed": "7", + "gamesMissedClubs": [ + "131", + "3439" + ] + } + ] +} \ No newline at end of file diff --git a/tests/data/players/injuries/68290.json b/tests/data/players/injuries/68290.json new file mode 100644 index 0000000..bf15e84 --- /dev/null +++ b/tests/data/players/injuries/68290.json @@ -0,0 +1,175 @@ +{ + "id": "68290", + "pageNumber": 1, + "lastPageNumber": 3, + "injuries": [ + { + "season": "24/25", + "injury": "Fitness", + "fromDate": "Dec 17, 2024", + "untilDate": "", + "days": "26 days", + "gamesMissed": "2", + "gamesMissedClubs": [ + "1114" + ] + }, + { + "season": "24/25", + "injury": "Hamstring injury", + "fromDate": "Nov 4, 2024", + "untilDate": "Dec 16, 2024", + "days": "42 days", + "gamesMissed": "7", + "gamesMissedClubs": [ + "1114" + ] + }, + { + "season": "24/25", + "injury": "Fitness", + "fromDate": "Sep 23, 2024", + "untilDate": "Oct 20, 2024", + "days": "27 days", + "gamesMissed": "5", + "gamesMissedClubs": [ + "1114" + ] + }, + { + "season": "23/24", + "injury": "Cruciate ligament tear", + "fromDate": "Oct 19, 2023", + "untilDate": "Sep 22, 2024", + "days": "339 days", + "gamesMissed": "48", + "gamesMissedClubs": [ + "1114" + ] + }, + { + "season": "23/24", + "injury": "muscular problems", + "fromDate": "Aug 4, 2023", + "untilDate": "Sep 3, 2023", + "days": "30 days", + "gamesMissed": "5", + "gamesMissedClubs": [ + "583", + "1114" + ] + }, + { + "season": "22/23", + "injury": "Ankle surgery", + "fromDate": "Feb 20, 2023", + "untilDate": "Jun 30, 2023", + "days": "130 days", + "gamesMissed": "15", + "gamesMissedClubs": [ + "583" + ] + }, + { + "season": "22/23", + "injury": "Ankle injury", + "fromDate": "Nov 25, 2022", + "untilDate": "Dec 4, 2022", + "days": "9 days", + "gamesMissed": "2", + "gamesMissedClubs": [ + "3439" + ] + }, + { + "season": "21/22", + "injury": "Ankle injury", + "fromDate": "Nov 29, 2021", + "untilDate": "Feb 13, 2022", + "days": "76 days", + "gamesMissed": "15", + "gamesMissedClubs": [ + "583", + "3439" + ] + }, + { + "season": "21/22", + "injury": "Adductor pain", + "fromDate": "Nov 15, 2021", + "untilDate": "Nov 18, 2021", + "days": "3 days", + "gamesMissed": "1", + "gamesMissedClubs": [ + "3439" + ] + }, + { + "season": "21/22", + "injury": "Adductor pain", + "fromDate": "Oct 16, 2021", + "untilDate": "Oct 23, 2021", + "days": "7 days", + "gamesMissed": "1", + "gamesMissedClubs": [ + "583" + ] + }, + { + "season": "21/22", + "injury": "Fitness", + "fromDate": "Aug 1, 2021", + "untilDate": "Aug 26, 2021", + "days": "25 days", + "gamesMissed": "4", + "gamesMissedClubs": [ + "583" + ] + }, + { + "season": "20/21", + "injury": "Adductor pain", + "fromDate": "Feb 11, 2021", + "untilDate": "Mar 19, 2021", + "days": "36 days", + "gamesMissed": "9", + "gamesMissedClubs": [ + "583" + ] + }, + { + "season": "20/21", + "injury": "Ankle problems", + "fromDate": "Dec 14, 2020", + "untilDate": "Jan 10, 2021", + "days": "27 days", + "gamesMissed": "5", + "gamesMissedClubs": [ + "583" + ] + }, + { + "season": "20/21", + "injury": "Rest", + "fromDate": "Dec 5, 2020", + "untilDate": "Dec 6, 2020", + "days": "1 days", + "gamesMissed": "1", + "gamesMissedClubs": [ + "583" + ] + }, + { + "season": "20/21", + "injury": "Adductor pain", + "fromDate": "Oct 28, 2020", + "untilDate": "Nov 19, 2020", + "days": "22 days", + "gamesMissed": "6", + "gamesMissedClubs": [ + "583", + "3439" + ] + } + ] +} \ No newline at end of file diff --git a/tests/data/players/injuries/8198.json b/tests/data/players/injuries/8198.json new file mode 100644 index 0000000..896d7bd --- /dev/null +++ b/tests/data/players/injuries/8198.json @@ -0,0 +1,170 @@ +{ + "id": "8198", + "pageNumber": 1, + "lastPageNumber": 2, + "injuries": [ + { + "season": "24/25", + "injury": "Abdominal problems", + "fromDate": "Dec 15, 2024", + "untilDate": "Dec 31, 2024", + "days": "16 days", + "gamesMissed": "", + "gamesMissedClubs": [] + }, + { + "season": "24/25", + "injury": "Virus", + "fromDate": "Sep 15, 2024", + "untilDate": "Sep 18, 2024", + "days": "3 days", + "gamesMissed": "1", + "gamesMissedClubs": [ + "18544" + ] + }, + { + "season": "23/24", + "injury": "unknown injury", + "fromDate": "Jan 23, 2024", + "untilDate": "Feb 11, 2024", + "days": "19 days", + "gamesMissed": "", + "gamesMissedClubs": [] + }, + { + "season": "22/23", + "injury": "Ill", + "fromDate": "Nov 9, 2022", + "untilDate": "Nov 18, 2022", + "days": "9 days", + "gamesMissed": "3", + "gamesMissedClubs": [ + "985", + "3300" + ] + }, + { + "season": "21/22", + "injury": "Rest", + "fromDate": "Jun 9, 2022", + "untilDate": "Jun 13, 2022", + "days": "4 days", + "gamesMissed": "1", + "gamesMissedClubs": [ + "3300" + ] + }, + { + "season": "21/22", + "injury": "Hip flexor problems", + "fromDate": "Mar 3, 2022", + "untilDate": "Mar 7, 2022", + "days": "4 days", + "gamesMissed": "1", + "gamesMissedClubs": [ + "985" + ] + }, + { + "season": "21/22", + "injury": "Hip flexor problems", + "fromDate": "Jan 10, 2022", + "untilDate": "Jan 17, 2022", + "days": "7 days", + "gamesMissed": "2", + "gamesMissedClubs": [ + "985" + ] + }, + { + "season": "21/22", + "injury": "Arm injury", + "fromDate": "Aug 26, 2021", + "untilDate": "Aug 30, 2021", + "days": "4 days", + "gamesMissed": "1", + "gamesMissedClubs": [ + "506" + ] + }, + { + "season": "20/21", + "injury": "Hip flexor problems", + "fromDate": "Apr 15, 2021", + "untilDate": "Apr 19, 2021", + "days": "4 days", + "gamesMissed": "1", + "gamesMissedClubs": [ + "506" + ] + }, + { + "season": "20/21", + "injury": "Corona virus", + "fromDate": "Oct 12, 2020", + "untilDate": "Oct 29, 2020", + "days": "17 days", + "gamesMissed": "5", + "gamesMissedClubs": [ + "506", + "3300" + ] + }, + { + "season": "19/20", + "injury": "Adductor pain", + "fromDate": "Sep 23, 2019", + "untilDate": "Sep 26, 2019", + "days": "3 days", + "gamesMissed": "1", + "gamesMissedClubs": [ + "506" + ] + }, + { + "season": "18/19", + "injury": "Hamstring injury", + "fromDate": "Mar 25, 2019", + "untilDate": "Apr 8, 2019", + "days": "14 days", + "gamesMissed": "3", + "gamesMissedClubs": [ + "506" + ] + }, + { + "season": "17/18", + "injury": "Ankle injury", + "fromDate": "May 7, 2018", + "untilDate": "May 14, 2018", + "days": "7 days", + "gamesMissed": "2", + "gamesMissedClubs": [ + "418" + ] + }, + { + "season": "16/17", + "injury": "Metacarpal fracture", + "fromDate": "Jan 19, 2017", + "untilDate": "Jan 23, 2017", + "days": "4 days", + "gamesMissed": "1", + "gamesMissedClubs": [ + "418" + ] + }, + { + "season": "16/17", + "injury": "influenza", + "fromDate": "Sep 15, 2016", + "untilDate": "Sep 19, 2016", + "days": "4 days", + "gamesMissed": "1", + "gamesMissedClubs": [ + "418" + ] + } + ] +} \ No newline at end of file diff --git a/tests/data/players/jersey_numbers/28003.json b/tests/data/players/jersey_numbers/28003.json new file mode 100644 index 0000000..e270150 --- /dev/null +++ b/tests/data/players/jersey_numbers/28003.json @@ -0,0 +1,260 @@ +{ + "id": "28003", + "jerseyNumbers": [ + { + "season": "24/25", + "club": "69261", + "jerseyNumber": "10" + }, + { + "season": "23/24", + "club": "69261", + "jerseyNumber": "10" + }, + { + "season": "22/23", + "club": "69261", + "jerseyNumber": "10" + }, + { + "season": "22/23", + "club": "583", + "jerseyNumber": "10" + }, + { + "season": "22/23", + "club": "583", + "jerseyNumber": "30" + }, + { + "season": "21/22", + "club": "583", + "jerseyNumber": "10" + }, + { + "season": "21/22", + "club": "583", + "jerseyNumber": "30" + }, + { + "season": "20/21", + "club": "131", + "jerseyNumber": "10" + }, + { + "season": "19/20", + "club": "131", + "jerseyNumber": "10" + }, + { + "season": "18/19", + "club": "131", + "jerseyNumber": "10" + }, + { + "season": "17/18", + "club": "131", + "jerseyNumber": "10" + }, + { + "season": "16/17", + "club": "131", + "jerseyNumber": "10" + }, + { + "season": "15/16", + "club": "131", + "jerseyNumber": "10" + }, + { + "season": "14/15", + "club": "131", + "jerseyNumber": "10" + }, + { + "season": "13/14", + "club": "131", + "jerseyNumber": "10" + }, + { + "season": "12/13", + "club": "131", + "jerseyNumber": "10" + }, + { + "season": "11/12", + "club": "131", + "jerseyNumber": "10" + }, + { + "season": "10/11", + "club": "131", + "jerseyNumber": "10" + }, + { + "season": "09/10", + "club": "131", + "jerseyNumber": "10" + }, + { + "season": "08/09", + "club": "131", + "jerseyNumber": "10" + }, + { + "season": "07/08", + "club": "131", + "jerseyNumber": "19" + }, + { + "season": "06/07", + "club": "131", + "jerseyNumber": "19" + }, + { + "season": "05/06", + "club": "131", + "jerseyNumber": "19" + }, + { + "season": "05/06", + "club": "131", + "jerseyNumber": "30" + }, + { + "season": "04/05", + "club": "2464", + "jerseyNumber": "8" + }, + { + "season": "04/05", + "club": "2464", + "jerseyNumber": "9" + }, + { + "season": "04/05", + "club": "2464", + "jerseyNumber": "11" + }, + { + "season": "04/05", + "club": "131", + "jerseyNumber": "30" + }, + { + "season": "24/25", + "club": "3437", + "jerseyNumber": "10" + }, + { + "season": "23/24", + "club": "3437", + "jerseyNumber": "10" + }, + { + "season": "22/23", + "club": "3437", + "jerseyNumber": "10" + }, + { + "season": "21/22", + "club": "3437", + "jerseyNumber": "10" + }, + { + "season": "20/21", + "club": "3437", + "jerseyNumber": "10" + }, + { + "season": "19/20", + "club": "3437", + "jerseyNumber": "10" + }, + { + "season": "18/19", + "club": "3437", + "jerseyNumber": "10" + }, + { + "season": "17/18", + "club": "3437", + "jerseyNumber": "10" + }, + { + "season": "16/17", + "club": "3437", + "jerseyNumber": "10" + }, + { + "season": "15/16", + "club": "3437", + "jerseyNumber": "10" + }, + { + "season": "14/15", + "club": "3437", + "jerseyNumber": "10" + }, + { + "season": "13/14", + "club": "3437", + "jerseyNumber": "10" + }, + { + "season": "11/12", + "club": "3437", + "jerseyNumber": "10" + }, + { + "season": "10/11", + "club": "3437", + "jerseyNumber": "10" + }, + { + "season": "09/10", + "club": "3437", + "jerseyNumber": "10" + }, + { + "season": "08/09", + "club": "3437", + "jerseyNumber": "10" + }, + { + "season": "08/09", + "club": "3437", + "jerseyNumber": "18" + }, + { + "season": "07/08", + "club": "53819", + "jerseyNumber": "15" + }, + { + "season": "06/07", + "club": "3437", + "jerseyNumber": "18" + }, + { + "season": "05/06", + "club": "3437", + "jerseyNumber": "19" + }, + { + "season": "04/05", + "club": "3437", + "jerseyNumber": "18" + }, + { + "season": "04/05", + "club": "3437", + "jerseyNumber": "19" + }, + { + "season": "04/05", + "club": "11940", + "jerseyNumber": "18" + } + ] +} \ No newline at end of file diff --git a/tests/data/players/jersey_numbers/3373.json b/tests/data/players/jersey_numbers/3373.json new file mode 100644 index 0000000..59d1dfe --- /dev/null +++ b/tests/data/players/jersey_numbers/3373.json @@ -0,0 +1,175 @@ +{ + "id": "3373", + "jerseyNumbers": [ + { + "season": "14/15", + "club": "2462", + "jerseyNumber": "10" + }, + { + "season": "14/15", + "club": "4961", + "jerseyNumber": "49" + }, + { + "season": "13/14", + "club": "330", + "jerseyNumber": "10" + }, + { + "season": "12/13", + "club": "330", + "jerseyNumber": "10" + }, + { + "season": "11/12", + "club": "330", + "jerseyNumber": "49" + }, + { + "season": "11/12", + "club": "614", + "jerseyNumber": "10" + }, + { + "season": "10/11", + "club": "614", + "jerseyNumber": "10" + }, + { + "season": "10/11", + "club": "5", + "jerseyNumber": "80" + }, + { + "season": "09/10", + "club": "5", + "jerseyNumber": "80" + }, + { + "season": "08/09", + "club": "5", + "jerseyNumber": "80" + }, + { + "season": "07/08", + "club": "131", + "jerseyNumber": "10" + }, + { + "season": "06/07", + "club": "131", + "jerseyNumber": "10" + }, + { + "season": "05/06", + "club": "131", + "jerseyNumber": "10" + }, + { + "season": "04/05", + "club": "131", + "jerseyNumber": "10" + }, + { + "season": "03/04", + "club": "131", + "jerseyNumber": "10" + }, + { + "season": "02/03", + "club": "583", + "jerseyNumber": "10" + }, + { + "season": "01/02", + "club": "583", + "jerseyNumber": "21" + }, + { + "season": "98/99", + "club": "210", + "jerseyNumber": "10" + }, + { + "season": "08/09", + "club": "3439", + "jerseyNumber": "10" + }, + { + "season": "08/09", + "club": "3439", + "jerseyNumber": "16" + }, + { + "season": "07/08", + "club": "53818", + "jerseyNumber": "10" + }, + { + "season": "05/06", + "club": "3439", + "jerseyNumber": "10" + }, + { + "season": "04/05", + "club": "3439", + "jerseyNumber": "7" + }, + { + "season": "04/05", + "club": "3439", + "jerseyNumber": "10" + }, + { + "season": "02/03", + "club": "3439", + "jerseyNumber": "7" + }, + { + "season": "01/02", + "club": "3439", + "jerseyNumber": "11" + }, + { + "season": "00/01", + "club": "3439", + "jerseyNumber": "7" + }, + { + "season": "00/01", + "club": "3439", + "jerseyNumber": "17" + }, + { + "season": "00/01", + "club": "3439", + "jerseyNumber": "18" + }, + { + "season": "99/00", + "club": "37018", + "jerseyNumber": "7" + }, + { + "season": "98/99", + "club": "3439", + "jerseyNumber": "7" + }, + { + "season": "98/99", + "club": "3439", + "jerseyNumber": "21" + }, + { + "season": "98/99", + "club": "7658", + "jerseyNumber": "7" + }, + { + "season": "96/97", + "club": "23130", + "jerseyNumber": "10" + } + ] +} \ No newline at end of file diff --git a/tests/data/players/jersey_numbers/68290.json b/tests/data/players/jersey_numbers/68290.json new file mode 100644 index 0000000..f34c7da --- /dev/null +++ b/tests/data/players/jersey_numbers/68290.json @@ -0,0 +1,165 @@ +{ + "id": "68290", + "jerseyNumbers": [ + { + "season": "24/25", + "club": "1114", + "jerseyNumber": "10" + }, + { + "season": "23/24", + "club": "1114", + "jerseyNumber": "10" + }, + { + "season": "22/23", + "club": "583", + "jerseyNumber": "10" + }, + { + "season": "22/23", + "club": "583", + "jerseyNumber": "11" + }, + { + "season": "21/22", + "club": "583", + "jerseyNumber": "10" + }, + { + "season": "20/21", + "club": "583", + "jerseyNumber": "10" + }, + { + "season": "19/20", + "club": "583", + "jerseyNumber": "10" + }, + { + "season": "19/20", + "club": "583", + "jerseyNumber": "12" + }, + { + "season": "18/19", + "club": "583", + "jerseyNumber": "10" + }, + { + "season": "17/18", + "club": "583", + "jerseyNumber": "10" + }, + { + "season": "16/17", + "club": "131", + "jerseyNumber": "11" + }, + { + "season": "15/16", + "club": "131", + "jerseyNumber": "11" + }, + { + "season": "14/15", + "club": "131", + "jerseyNumber": "11" + }, + { + "season": "13/14", + "club": "131", + "jerseyNumber": "11" + }, + { + "season": "12/13", + "club": "221", + "jerseyNumber": "11" + }, + { + "season": "11/12", + "club": "221", + "jerseyNumber": "11" + }, + { + "season": "10/11", + "club": "221", + "jerseyNumber": "11" + }, + { + "season": "09/10", + "club": "221", + "jerseyNumber": "11" + }, + { + "season": "08/09", + "club": "221", + "jerseyNumber": "11" + }, + { + "season": "22/23", + "club": "3439", + "jerseyNumber": "10" + }, + { + "season": "21/22", + "club": "3439", + "jerseyNumber": "10" + }, + { + "season": "20/21", + "club": "3439", + "jerseyNumber": "10" + }, + { + "season": "19/20", + "club": "3439", + "jerseyNumber": "10" + }, + { + "season": "17/18", + "club": "3439", + "jerseyNumber": "10" + }, + { + "season": "15/16", + "club": "53818", + "jerseyNumber": "10" + }, + { + "season": "15/16", + "club": "3439", + "jerseyNumber": "10" + }, + { + "season": "14/15", + "club": "3439", + "jerseyNumber": "10" + }, + { + "season": "13/14", + "club": "3439", + "jerseyNumber": "10" + }, + { + "season": "12/13", + "club": "3439", + "jerseyNumber": "10" + }, + { + "season": "11/12", + "club": "53818", + "jerseyNumber": "11" + }, + { + "season": "10/11", + "club": "3439", + "jerseyNumber": "11" + }, + { + "season": "08/09", + "club": "23130", + "jerseyNumber": "11" + } + ] +} \ No newline at end of file diff --git a/tests/data/players/jersey_numbers/8198.json b/tests/data/players/jersey_numbers/8198.json new file mode 100644 index 0000000..caf3fe8 --- /dev/null +++ b/tests/data/players/jersey_numbers/8198.json @@ -0,0 +1,270 @@ +{ + "id": "8198", + "jerseyNumbers": [ + { + "season": "24/25", + "club": "18544", + "jerseyNumber": "7" + }, + { + "season": "23/24", + "club": "18544", + "jerseyNumber": "7" + }, + { + "season": "22/23", + "club": "18544", + "jerseyNumber": "7" + }, + { + "season": "22/23", + "club": "985", + "jerseyNumber": "7" + }, + { + "season": "21/22", + "club": "985", + "jerseyNumber": "7" + }, + { + "season": "21/22", + "club": "506", + "jerseyNumber": "7" + }, + { + "season": "20/21", + "club": "506", + "jerseyNumber": "7" + }, + { + "season": "19/20", + "club": "506", + "jerseyNumber": "7" + }, + { + "season": "18/19", + "club": "506", + "jerseyNumber": "7" + }, + { + "season": "17/18", + "club": "418", + "jerseyNumber": "7" + }, + { + "season": "16/17", + "club": "418", + "jerseyNumber": "7" + }, + { + "season": "15/16", + "club": "418", + "jerseyNumber": "7" + }, + { + "season": "14/15", + "club": "418", + "jerseyNumber": "7" + }, + { + "season": "13/14", + "club": "418", + "jerseyNumber": "7" + }, + { + "season": "12/13", + "club": "418", + "jerseyNumber": "7" + }, + { + "season": "11/12", + "club": "418", + "jerseyNumber": "7" + }, + { + "season": "10/11", + "club": "418", + "jerseyNumber": "7" + }, + { + "season": "09/10", + "club": "418", + "jerseyNumber": "9" + }, + { + "season": "08/09", + "club": "985", + "jerseyNumber": "7" + }, + { + "season": "07/08", + "club": "985", + "jerseyNumber": "7" + }, + { + "season": "06/07", + "club": "985", + "jerseyNumber": "7" + }, + { + "season": "05/06", + "club": "985", + "jerseyNumber": "7" + }, + { + "season": "04/05", + "club": "985", + "jerseyNumber": "7" + }, + { + "season": "03/04", + "club": "985", + "jerseyNumber": "7" + }, + { + "season": "02/03", + "club": "336", + "jerseyNumber": "28" + }, + { + "season": "02/03", + "club": "10949", + "jerseyNumber": "28" + }, + { + "season": "24/25", + "club": "3300", + "jerseyNumber": "7" + }, + { + "season": "23/24", + "club": "3300", + "jerseyNumber": "7" + }, + { + "season": "22/23", + "club": "3300", + "jerseyNumber": "7" + }, + { + "season": "21/22", + "club": "3300", + "jerseyNumber": "7" + }, + { + "season": "20/21", + "club": "3300", + "jerseyNumber": "7" + }, + { + "season": "19/20", + "club": "3300", + "jerseyNumber": "7" + }, + { + "season": "18/19", + "club": "3300", + "jerseyNumber": "7" + }, + { + "season": "17/18", + "club": "3300", + "jerseyNumber": "7" + }, + { + "season": "16/17", + "club": "3300", + "jerseyNumber": "7" + }, + { + "season": "15/16", + "club": "3300", + "jerseyNumber": "7" + }, + { + "season": "14/15", + "club": "3300", + "jerseyNumber": "7" + }, + { + "season": "13/14", + "club": "3300", + "jerseyNumber": "7" + }, + { + "season": "12/13", + "club": "3300", + "jerseyNumber": "7" + }, + { + "season": "11/12", + "club": "3300", + "jerseyNumber": "7" + }, + { + "season": "10/11", + "club": "3300", + "jerseyNumber": "7" + }, + { + "season": "09/10", + "club": "3300", + "jerseyNumber": "7" + }, + { + "season": "08/09", + "club": "3300", + "jerseyNumber": "7" + }, + { + "season": "07/08", + "club": "3300", + "jerseyNumber": "7" + }, + { + "season": "07/08", + "club": "3300", + "jerseyNumber": "17" + }, + { + "season": "06/07", + "club": "3300", + "jerseyNumber": "17" + }, + { + "season": "05/06", + "club": "3300", + "jerseyNumber": "17" + }, + { + "season": "04/05", + "club": "3300", + "jerseyNumber": "17" + }, + { + "season": "03/04", + "club": "53807", + "jerseyNumber": "7" + }, + { + "season": "03/04", + "club": "3300", + "jerseyNumber": "17" + }, + { + "season": "03/04", + "club": "16374", + "jerseyNumber": "11" + }, + { + "season": "02/03", + "club": "16374", + "jerseyNumber": "11" + }, + { + "season": "01/02", + "club": "23137", + "jerseyNumber": "7" + } + ] +} \ No newline at end of file diff --git a/tests/data/players/market_value/28003.json b/tests/data/players/market_value/28003.json new file mode 100644 index 0000000..411dda8 --- /dev/null +++ b/tests/data/players/market_value/28003.json @@ -0,0 +1,350 @@ +{ + "id": "28003", + "marketValue": "€20.00m", + "marketValueHistory": [ + { + "age": "17", + "date": "Dec 20, 2004", + "clubName": "FC Barcelona B", + "marketValue": "€3.00m", + "clubId": "2464" + }, + { + "age": "18", + "date": "Dec 28, 2005", + "clubName": "FC Barcelona", + "marketValue": "€5.00m", + "clubId": "131" + }, + { + "age": "18", + "date": "Jan 20, 2006", + "clubName": "FC Barcelona", + "marketValue": "€15.00m", + "clubId": "131" + }, + { + "age": "20", + "date": "Jul 26, 2007", + "clubName": "FC Barcelona", + "marketValue": "€40.00m", + "clubId": "131" + }, + { + "age": "20", + "date": "Sep 12, 2007", + "clubName": "FC Barcelona", + "marketValue": "€60.00m", + "clubId": "131" + }, + { + "age": "20", + "date": "Feb 4, 2008", + "clubName": "FC Barcelona", + "marketValue": "€55.00m", + "clubId": "131" + }, + { + "age": "21", + "date": "Jul 10, 2008", + "clubName": "FC Barcelona", + "marketValue": "€55.00m", + "clubId": "131" + }, + { + "age": "21", + "date": "Jan 26, 2009", + "clubName": "FC Barcelona", + "marketValue": "€55.00m", + "clubId": "131" + }, + { + "age": "21", + "date": "Apr 28, 2009", + "clubName": "FC Barcelona", + "marketValue": "€60.00m", + "clubId": "131" + }, + { + "age": "22", + "date": "Jul 22, 2009", + "clubName": "FC Barcelona", + "marketValue": "€70.00m", + "clubId": "131" + }, + { + "age": "22", + "date": "Dec 3, 2009", + "clubName": "FC Barcelona", + "marketValue": "€70.00m", + "clubId": "131" + }, + { + "age": "22", + "date": "Jan 7, 2010", + "clubName": "FC Barcelona", + "marketValue": "€80.00m", + "clubId": "131" + }, + { + "age": "22", + "date": "Apr 12, 2010", + "clubName": "FC Barcelona", + "marketValue": "€80.00m", + "clubId": "131" + }, + { + "age": "23", + "date": "Aug 27, 2010", + "clubName": "FC Barcelona", + "marketValue": "€100.00m", + "clubId": "131" + }, + { + "age": "23", + "date": "Feb 4, 2011", + "clubName": "FC Barcelona", + "marketValue": "€100.00m", + "clubId": "131" + }, + { + "age": "24", + "date": "Jul 29, 2011", + "clubName": "FC Barcelona", + "marketValue": "€100.00m", + "clubId": "131" + }, + { + "age": "24", + "date": "Feb 3, 2012", + "clubName": "FC Barcelona", + "marketValue": "€100.00m", + "clubId": "131" + }, + { + "age": "25", + "date": "Aug 7, 2012", + "clubName": "FC Barcelona", + "marketValue": "€120.00m", + "clubId": "131" + }, + { + "age": "25", + "date": "Jan 10, 2013", + "clubName": "FC Barcelona", + "marketValue": "€120.00m", + "clubId": "131" + }, + { + "age": "25", + "date": "Jun 12, 2013", + "clubName": "FC Barcelona", + "marketValue": "€120.00m", + "clubId": "131" + }, + { + "age": "26", + "date": "Jan 23, 2014", + "clubName": "FC Barcelona", + "marketValue": "€120.00m", + "clubId": "131" + }, + { + "age": "27", + "date": "Jul 20, 2014", + "clubName": "FC Barcelona", + "marketValue": "€120.00m", + "clubId": "131" + }, + { + "age": "27", + "date": "Jan 23, 2015", + "clubName": "FC Barcelona", + "marketValue": "€120.00m", + "clubId": "131" + }, + { + "age": "28", + "date": "Jul 1, 2015", + "clubName": "FC Barcelona", + "marketValue": "€120.00m", + "clubId": "131" + }, + { + "age": "28", + "date": "Feb 22, 2016", + "clubName": "FC Barcelona", + "marketValue": "€120.00m", + "clubId": "131" + }, + { + "age": "29", + "date": "Jul 15, 2016", + "clubName": "FC Barcelona", + "marketValue": "€120.00m", + "clubId": "131" + }, + { + "age": "29", + "date": "Jan 24, 2017", + "clubName": "FC Barcelona", + "marketValue": "€120.00m", + "clubId": "131" + }, + { + "age": "29", + "date": "Jun 5, 2017", + "clubName": "FC Barcelona", + "marketValue": "€120.00m", + "clubId": "131" + }, + { + "age": "30", + "date": "Jan 1, 2018", + "clubName": "FC Barcelona", + "marketValue": "€180.00m", + "clubId": "131" + }, + { + "age": "30", + "date": "May 30, 2018", + "clubName": "FC Barcelona", + "marketValue": "€180.00m", + "clubId": "131" + }, + { + "age": "31", + "date": "Dec 21, 2018", + "clubName": "FC Barcelona", + "marketValue": "€160.00m", + "clubId": "131" + }, + { + "age": "31", + "date": "Jun 11, 2019", + "clubName": "FC Barcelona", + "marketValue": "€150.00m", + "clubId": "131" + }, + { + "age": "32", + "date": "Dec 20, 2019", + "clubName": "FC Barcelona", + "marketValue": "€140.00m", + "clubId": "131" + }, + { + "age": "32", + "date": "Apr 8, 2020", + "clubName": "FC Barcelona", + "marketValue": "€112.00m", + "clubId": "131" + }, + { + "age": "33", + "date": "Oct 8, 2020", + "clubName": "FC Barcelona", + "marketValue": "€100.00m", + "clubId": "131" + }, + { + "age": "33", + "date": "Jan 5, 2021", + "clubName": "FC Barcelona", + "marketValue": "€80.00m", + "clubId": "131" + }, + { + "age": "33", + "date": "Jun 10, 2021", + "clubName": "FC Barcelona", + "marketValue": "€80.00m", + "clubId": "131" + }, + { + "age": "34", + "date": "Dec 16, 2021", + "clubName": "Paris Saint-Germain", + "marketValue": "€60.00m", + "clubId": "583" + }, + { + "age": "34", + "date": "May 30, 2022", + "clubName": "Paris Saint-Germain", + "marketValue": "€50.00m", + "clubId": "583" + }, + { + "age": "35", + "date": "Nov 2, 2022", + "clubName": "Paris Saint-Germain", + "marketValue": "€50.00m", + "clubId": "583" + }, + { + "age": "35", + "date": "Mar 27, 2023", + "clubName": "Paris Saint-Germain", + "marketValue": "€45.00m", + "clubId": "583" + }, + { + "age": "36", + "date": "Jun 27, 2023", + "clubName": "Paris Saint-Germain", + "marketValue": "€35.00m", + "clubId": "583" + }, + { + "age": "36", + "date": "Aug 22, 2023", + "clubName": "Inter Miami CF", + "marketValue": "€35.00m", + "clubId": "69261" + }, + { + "age": "36", + "date": "Dec 18, 2023", + "clubName": "Inter Miami CF", + "marketValue": "€35.00m", + "clubId": "69261" + }, + { + "age": "36", + "date": "Mar 25, 2024", + "clubName": "Inter Miami CF", + "marketValue": "€30.00m", + "clubId": "69261" + }, + { + "age": "36", + "date": "Jun 13, 2024", + "clubName": "Inter Miami CF", + "marketValue": "€30.00m", + "clubId": "69261" + }, + { + "age": "37", + "date": "Sep 26, 2024", + "clubName": "Inter Miami CF", + "marketValue": "€25.00m", + "clubId": "69261" + }, + { + "age": "37", + "date": "Dec 12, 2024", + "clubName": "Inter Miami CF", + "marketValue": "€20.00m", + "clubId": "69261" + } + ], + "ranking": { + "Worldwide": "478", + "MLS": "1", + "Miami": "1", + "Argentina": "20", + "Right Winger": "52", + "Year 1987": "1" + } +} \ No newline at end of file diff --git a/tests/data/players/market_value/3373.json b/tests/data/players/market_value/3373.json new file mode 100644 index 0000000..86dda2f --- /dev/null +++ b/tests/data/players/market_value/3373.json @@ -0,0 +1,147 @@ +{ + "id": "3373", + "marketValue": null, + "marketValueHistory": [ + { + "age": "24", + "date": "Oct 4, 2004", + "clubName": "FC Barcelona", + "marketValue": "€38.00m", + "clubId": "131" + }, + { + "age": "24", + "date": "Dec 20, 2004", + "clubName": "FC Barcelona", + "marketValue": "€50.00m", + "clubId": "131" + }, + { + "age": "25", + "date": "Jan 20, 2006", + "clubName": "FC Barcelona", + "marketValue": "€70.00m", + "clubId": "131" + }, + { + "age": "27", + "date": "Sep 9, 2007", + "clubName": "FC Barcelona", + "marketValue": "€80.00m", + "clubId": "131" + }, + { + "age": "27", + "date": "Feb 4, 2008", + "clubName": "FC Barcelona", + "marketValue": "€50.00m", + "clubId": "131" + }, + { + "age": "28", + "date": "Jul 10, 2008", + "clubName": "FC Barcelona", + "marketValue": "€35.00m", + "clubId": "131" + }, + { + "age": "28", + "date": "Feb 6, 2009", + "clubName": "AC Milan", + "marketValue": "€33.00m", + "clubId": "5" + }, + { + "age": "29", + "date": "Aug 6, 2009", + "clubName": "AC Milan", + "marketValue": "€28.50m", + "clubId": "5" + }, + { + "age": "29", + "date": "Oct 29, 2009", + "clubName": "AC Milan", + "marketValue": "€25.00m", + "clubId": "5" + }, + { + "age": "29", + "date": "Jan 27, 2010", + "clubName": "AC Milan", + "marketValue": "€27.50m", + "clubId": "5" + }, + { + "age": "30", + "date": "Jan 12, 2011", + "clubName": "CR Flamengo", + "marketValue": "€12.00m", + "clubId": "614" + }, + { + "age": "31", + "date": "May 30, 2011", + "clubName": "CR Flamengo", + "marketValue": "€8.00m", + "clubId": "614" + }, + { + "age": "31", + "date": "Dec 8, 2011", + "clubName": "CR Flamengo", + "marketValue": "€7.00m", + "clubId": "614" + }, + { + "age": "32", + "date": "May 24, 2012", + "clubName": "CR Flamengo", + "marketValue": "€4.00m", + "clubId": "614" + }, + { + "age": "32", + "date": "Jul 29, 2012", + "clubName": "Clube Atlético Mineiro", + "marketValue": "€3.00m", + "clubId": "330" + }, + { + "age": "32", + "date": "Dec 5, 2012", + "clubName": "Clube Atlético Mineiro", + "marketValue": "€2.00m", + "clubId": "330" + }, + { + "age": "33", + "date": "Aug 26, 2013", + "clubName": "Clube Atlético Mineiro", + "marketValue": "€1.50m", + "clubId": "330" + }, + { + "age": "34", + "date": "Mar 28, 2014", + "clubName": "Clube Atlético Mineiro", + "marketValue": "€1.50m", + "clubId": "330" + }, + { + "age": "34", + "date": "Sep 1, 2014", + "clubName": "Clube Atlético Mineiro", + "marketValue": "€1.50m", + "clubId": "330" + }, + { + "age": "36", + "date": "Feb 3, 2017", + "clubName": "Without Club", + "marketValue": "-", + "clubId": "515" + } + ], + "ranking": {} +} \ No newline at end of file diff --git a/tests/data/players/market_value/68290.json b/tests/data/players/market_value/68290.json new file mode 100644 index 0000000..0dc3ffc --- /dev/null +++ b/tests/data/players/market_value/68290.json @@ -0,0 +1,315 @@ +{ + "id": "68290", + "marketValue": "€15.00m", + "marketValueHistory": [ + { + "age": "17", + "date": "Feb 22, 2009", + "clubName": "Santos FC", + "marketValue": "€1.00m", + "clubId": "221" + }, + { + "age": "17", + "date": "Jun 5, 2009", + "clubName": "Santos FC", + "marketValue": "€1.50m", + "clubId": "221" + }, + { + "age": "17", + "date": "Sep 6, 2009", + "clubName": "Santos FC", + "marketValue": "€2.50m", + "clubId": "221" + }, + { + "age": "17", + "date": "Dec 8, 2009", + "clubName": "Santos FC", + "marketValue": "€6.00m", + "clubId": "221" + }, + { + "age": "18", + "date": "Apr 15, 2010", + "clubName": "Santos FC", + "marketValue": "€10.00m", + "clubId": "221" + }, + { + "age": "18", + "date": "Sep 6, 2010", + "clubName": "Santos FC", + "marketValue": "€14.00m", + "clubId": "221" + }, + { + "age": "18", + "date": "Dec 10, 2010", + "clubName": "Santos FC", + "marketValue": "€18.00m", + "clubId": "221" + }, + { + "age": "19", + "date": "May 30, 2011", + "clubName": "Santos FC", + "marketValue": "€25.00m", + "clubId": "221" + }, + { + "age": "19", + "date": "Aug 12, 2011", + "clubName": "Santos FC", + "marketValue": "€30.00m", + "clubId": "221" + }, + { + "age": "19", + "date": "Dec 8, 2011", + "clubName": "Santos FC", + "marketValue": "€30.00m", + "clubId": "221" + }, + { + "age": "20", + "date": "May 24, 2012", + "clubName": "Santos FC", + "marketValue": "€30.00m", + "clubId": "221" + }, + { + "age": "20", + "date": "Aug 8, 2012", + "clubName": "Santos FC", + "marketValue": "€40.00m", + "clubId": "221" + }, + { + "age": "20", + "date": "Dec 5, 2012", + "clubName": "Santos FC", + "marketValue": "€40.00m", + "clubId": "221" + }, + { + "age": "21", + "date": "Feb 26, 2013", + "clubName": "Santos FC", + "marketValue": "€50.00m", + "clubId": "221" + }, + { + "age": "21", + "date": "Jul 30, 2013", + "clubName": "FC Barcelona", + "marketValue": "€50.00m", + "clubId": "131" + }, + { + "age": "21", + "date": "Jan 23, 2014", + "clubName": "FC Barcelona", + "marketValue": "€60.00m", + "clubId": "131" + }, + { + "age": "22", + "date": "Jul 20, 2014", + "clubName": "FC Barcelona", + "marketValue": "€70.00m", + "clubId": "131" + }, + { + "age": "22", + "date": "Jan 23, 2015", + "clubName": "FC Barcelona", + "marketValue": "€80.00m", + "clubId": "131" + }, + { + "age": "23", + "date": "Jul 1, 2015", + "clubName": "FC Barcelona", + "marketValue": "€80.00m", + "clubId": "131" + }, + { + "age": "23", + "date": "Nov 22, 2015", + "clubName": "FC Barcelona", + "marketValue": "€100.00m", + "clubId": "131" + }, + { + "age": "24", + "date": "Feb 22, 2016", + "clubName": "FC Barcelona", + "marketValue": "€100.00m", + "clubId": "131" + }, + { + "age": "24", + "date": "Jul 15, 2016", + "clubName": "FC Barcelona", + "marketValue": "€100.00m", + "clubId": "131" + }, + { + "age": "24", + "date": "Jan 24, 2017", + "clubName": "FC Barcelona", + "marketValue": "€100.00m", + "clubId": "131" + }, + { + "age": "25", + "date": "Jun 5, 2017", + "clubName": "FC Barcelona", + "marketValue": "€100.00m", + "clubId": "131" + }, + { + "age": "25", + "date": "Oct 12, 2017", + "clubName": "Paris Saint-Germain", + "marketValue": "€150.00m", + "clubId": "583" + }, + { + "age": "25", + "date": "Jan 24, 2018", + "clubName": "Paris Saint-Germain", + "marketValue": "€180.00m", + "clubId": "583" + }, + { + "age": "26", + "date": "Jun 4, 2018", + "clubName": "Paris Saint-Germain", + "marketValue": "€180.00m", + "clubId": "583" + }, + { + "age": "26", + "date": "Dec 17, 2018", + "clubName": "Paris Saint-Germain", + "marketValue": "€180.00m", + "clubId": "583" + }, + { + "age": "27", + "date": "Jun 3, 2019", + "clubName": "Paris Saint-Germain", + "marketValue": "€180.00m", + "clubId": "583" + }, + { + "age": "27", + "date": "Dec 19, 2019", + "clubName": "Paris Saint-Germain", + "marketValue": "€160.00m", + "clubId": "583" + }, + { + "age": "28", + "date": "Apr 8, 2020", + "clubName": "Paris Saint-Germain", + "marketValue": "€128.00m", + "clubId": "583" + }, + { + "age": "28", + "date": "Oct 15, 2020", + "clubName": "Paris Saint-Germain", + "marketValue": "€128.00m", + "clubId": "583" + }, + { + "age": "29", + "date": "Apr 9, 2021", + "clubName": "Paris Saint-Germain", + "marketValue": "€110.00m", + "clubId": "583" + }, + { + "age": "29", + "date": "Jun 4, 2021", + "clubName": "Paris Saint-Germain", + "marketValue": "€100.00m", + "clubId": "583" + }, + { + "age": "29", + "date": "Dec 16, 2021", + "clubName": "Paris Saint-Germain", + "marketValue": "€90.00m", + "clubId": "583" + }, + { + "age": "30", + "date": "May 30, 2022", + "clubName": "Paris Saint-Germain", + "marketValue": "€75.00m", + "clubId": "583" + }, + { + "age": "30", + "date": "Nov 2, 2022", + "clubName": "Paris Saint-Germain", + "marketValue": "€75.00m", + "clubId": "583" + }, + { + "age": "31", + "date": "Mar 27, 2023", + "clubName": "Paris Saint-Germain", + "marketValue": "€70.00m", + "clubId": "583" + }, + { + "age": "31", + "date": "Jun 27, 2023", + "clubName": "Paris Saint-Germain", + "marketValue": "€60.00m", + "clubId": "583" + }, + { + "age": "31", + "date": "Oct 24, 2023", + "clubName": "Al-Hilal SFC", + "marketValue": "€50.00m", + "clubId": "1114" + }, + { + "age": "31", + "date": "Dec 15, 2023", + "clubName": "Al-Hilal SFC", + "marketValue": "€45.00m", + "clubId": "1114" + }, + { + "age": "32", + "date": "Jun 4, 2024", + "clubName": "Al-Hilal SFC", + "marketValue": "€30.00m", + "clubId": "1114" + }, + { + "age": "32", + "date": "Dec 13, 2024", + "clubName": "Al-Hilal SFC", + "marketValue": "€15.00m", + "clubId": "1114" + } + ], + "ranking": { + "Worldwide": "688", + "Saudi Pro League": "15", + "Al-Hilal": "7", + "Brazil": "59", + "Left Winger": "59", + "Year 1992": "7" + } +} \ No newline at end of file diff --git a/tests/data/players/market_value/8198.json b/tests/data/players/market_value/8198.json new file mode 100644 index 0000000..e13220d --- /dev/null +++ b/tests/data/players/market_value/8198.json @@ -0,0 +1,350 @@ +{ + "id": "8198", + "marketValue": "€12.00m", + "marketValueHistory": [ + { + "age": "19", + "date": "Oct 4, 2004", + "clubName": "Manchester United", + "marketValue": "€18.00m", + "clubId": "985" + }, + { + "age": "20", + "date": "Feb 11, 2005", + "clubName": "Manchester United", + "marketValue": "€22.80m", + "clubId": "985" + }, + { + "age": "20", + "date": "Oct 18, 2005", + "clubName": "Manchester United", + "marketValue": "€26.50m", + "clubId": "985" + }, + { + "age": "21", + "date": "Jun 14, 2006", + "clubName": "Manchester United", + "marketValue": "€25.00m", + "clubId": "985" + }, + { + "age": "22", + "date": "Apr 25, 2007", + "clubName": "Manchester United", + "marketValue": "€34.00m", + "clubId": "985" + }, + { + "age": "22", + "date": "Feb 4, 2008", + "clubName": "Manchester United", + "marketValue": "€50.00m", + "clubId": "985" + }, + { + "age": "23", + "date": "Apr 8, 2008", + "clubName": "Manchester United", + "marketValue": "€55.00m", + "clubId": "985" + }, + { + "age": "23", + "date": "Jul 4, 2008", + "clubName": "Manchester United", + "marketValue": "€60.00m", + "clubId": "985" + }, + { + "age": "24", + "date": "Jul 22, 2009", + "clubName": "Real Madrid", + "marketValue": "€70.00m", + "clubId": "418" + }, + { + "age": "24", + "date": "Dec 3, 2009", + "clubName": "Real Madrid", + "marketValue": "€70.00m", + "clubId": "418" + }, + { + "age": "24", + "date": "Jan 7, 2010", + "clubName": "Real Madrid", + "marketValue": "€75.00m", + "clubId": "418" + }, + { + "age": "25", + "date": "Apr 12, 2010", + "clubName": "Real Madrid", + "marketValue": "€75.00m", + "clubId": "418" + }, + { + "age": "25", + "date": "Aug 27, 2010", + "clubName": "Real Madrid", + "marketValue": "€90.00m", + "clubId": "418" + }, + { + "age": "25", + "date": "Feb 4, 2011", + "clubName": "Real Madrid", + "marketValue": "€90.00m", + "clubId": "418" + }, + { + "age": "26", + "date": "Jul 29, 2011", + "clubName": "Real Madrid", + "marketValue": "€90.00m", + "clubId": "418" + }, + { + "age": "26", + "date": "Feb 3, 2012", + "clubName": "Real Madrid", + "marketValue": "€90.00m", + "clubId": "418" + }, + { + "age": "27", + "date": "Aug 7, 2012", + "clubName": "Real Madrid", + "marketValue": "€100.00m", + "clubId": "418" + }, + { + "age": "27", + "date": "Jan 10, 2013", + "clubName": "Real Madrid", + "marketValue": "€100.00m", + "clubId": "418" + }, + { + "age": "28", + "date": "Jun 12, 2013", + "clubName": "Real Madrid", + "marketValue": "€100.00m", + "clubId": "418" + }, + { + "age": "28", + "date": "Jan 23, 2014", + "clubName": "Real Madrid", + "marketValue": "€100.00m", + "clubId": "418" + }, + { + "age": "29", + "date": "Jul 20, 2014", + "clubName": "Real Madrid", + "marketValue": "€100.00m", + "clubId": "418" + }, + { + "age": "29", + "date": "Oct 22, 2014", + "clubName": "Real Madrid", + "marketValue": "€120.00m", + "clubId": "418" + }, + { + "age": "29", + "date": "Jan 23, 2015", + "clubName": "Real Madrid", + "marketValue": "€120.00m", + "clubId": "418" + }, + { + "age": "30", + "date": "Jul 1, 2015", + "clubName": "Real Madrid", + "marketValue": "€120.00m", + "clubId": "418" + }, + { + "age": "30", + "date": "Nov 22, 2015", + "clubName": "Real Madrid", + "marketValue": "€110.00m", + "clubId": "418" + }, + { + "age": "31", + "date": "Feb 22, 2016", + "clubName": "Real Madrid", + "marketValue": "€110.00m", + "clubId": "418" + }, + { + "age": "31", + "date": "Jun 1, 2016", + "clubName": "Real Madrid", + "marketValue": "€110.00m", + "clubId": "418" + }, + { + "age": "31", + "date": "Jul 15, 2016", + "clubName": "Real Madrid", + "marketValue": "€110.00m", + "clubId": "418" + }, + { + "age": "31", + "date": "Jan 24, 2017", + "clubName": "Real Madrid", + "marketValue": "€100.00m", + "clubId": "418" + }, + { + "age": "32", + "date": "Jun 5, 2017", + "clubName": "Real Madrid", + "marketValue": "€100.00m", + "clubId": "418" + }, + { + "age": "32", + "date": "Jan 1, 2018", + "clubName": "Real Madrid", + "marketValue": "€120.00m", + "clubId": "418" + }, + { + "age": "33", + "date": "May 30, 2018", + "clubName": "Real Madrid", + "marketValue": "€100.00m", + "clubId": "418" + }, + { + "age": "33", + "date": "Dec 20, 2018", + "clubName": "Juventus FC", + "marketValue": "€100.00m", + "clubId": "506" + }, + { + "age": "34", + "date": "Jun 6, 2019", + "clubName": "Juventus FC", + "marketValue": "€90.00m", + "clubId": "506" + }, + { + "age": "34", + "date": "Dec 12, 2019", + "clubName": "Juventus FC", + "marketValue": "€75.00m", + "clubId": "506" + }, + { + "age": "35", + "date": "Apr 8, 2020", + "clubName": "Juventus FC", + "marketValue": "€60.00m", + "clubId": "506" + }, + { + "age": "35", + "date": "Aug 25, 2020", + "clubName": "Juventus FC", + "marketValue": "€60.00m", + "clubId": "506" + }, + { + "age": "35", + "date": "Dec 29, 2020", + "clubName": "Juventus FC", + "marketValue": "€60.00m", + "clubId": "506" + }, + { + "age": "36", + "date": "Mar 23, 2021", + "clubName": "Juventus FC", + "marketValue": "€50.00m", + "clubId": "506" + }, + { + "age": "36", + "date": "Jun 1, 2021", + "clubName": "Juventus FC", + "marketValue": "€45.00m", + "clubId": "506" + }, + { + "age": "36", + "date": "Dec 23, 2021", + "clubName": "Manchester United", + "marketValue": "€35.00m", + "clubId": "985" + }, + { + "age": "37", + "date": "Jun 15, 2022", + "clubName": "Manchester United", + "marketValue": "€30.00m", + "clubId": "985" + }, + { + "age": "37", + "date": "Sep 15, 2022", + "clubName": "Manchester United", + "marketValue": "€20.00m", + "clubId": "985" + }, + { + "age": "37", + "date": "Nov 3, 2022", + "clubName": "Manchester United", + "marketValue": "€20.00m", + "clubId": "985" + }, + { + "age": "38", + "date": "Jun 12, 2023", + "clubName": "Al-Nassr FC", + "marketValue": "€15.00m", + "clubId": "18544" + }, + { + "age": "38", + "date": "Dec 15, 2023", + "clubName": "Al-Nassr FC", + "marketValue": "€15.00m", + "clubId": "18544" + }, + { + "age": "39", + "date": "Jun 4, 2024", + "clubName": "Al-Nassr FC", + "marketValue": "€15.00m", + "clubId": "18544" + }, + { + "age": "39", + "date": "Dec 13, 2024", + "clubName": "Al-Nassr FC", + "marketValue": "€12.00m", + "clubId": "18544" + } + ], + "ranking": { + "Worldwide": "873", + "Saudi Pro League": "20", + "Al-Nassr": "4", + "Portugal": "46", + "Centre-Forward": "127", + "Year 1985": "1" + } +} \ No newline at end of file diff --git a/tests/data/players/profile/28003.json b/tests/data/players/profile/28003.json new file mode 100644 index 0000000..c1ef564 --- /dev/null +++ b/tests/data/players/profile/28003.json @@ -0,0 +1,71 @@ +{ + "id": "28003", + "url": "https://www.transfermarkt.com/lionel-messi/profil/spieler/28003", + "name": "Lionel Messi", + "description": "Lionel Messi, 37, from Argentina ➤ Inter Miami CF, since 2023 ➤ Right Winger ➤ Market value: €20.00m ➤ * Jun 24, 1987 in Rosario, Argentina", + "fullName": null, + "nameInHomeCountry": "Lionel Andrés Messi Cuccitini", + "imageUrl": "https://img.a.transfermarkt.technology/portrait/header/28003-1710080339.jpg?lm=1", + "dateOfBirth": "Jun 24, 1987", + "placeOfBirth": { + "city": "Rosario", + "country": "Argentina" + }, + "age": "37", + "height": "1,70m", + "citizenship": [ + "Argentina", + "Spain" + ], + "isRetired": false, + "retiredSince": null, + "position": { + "main": "Right Winger", + "other": [ + "Centre-Forward", + "Second Striker" + ] + }, + "foot": "left", + "shirtNumber": "#10", + "club": { + "id": "69261", + "name": "Miami", + "joined": "Jul 15, 2023", + "contractExpires": "Dec 31, 2025", + "contractOption": null, + "lastClubId": null, + "lastClubName": null, + "mostGamesFor": null + }, + "marketValue": "€20.00m", + "agent": { + "name": "Relatives", + "url": null + }, + "outfitter": "adidas", + "socialMedia": [ + "http://www.facebook.com/LeoMessi", + "http://instagram.com/leomessi", + "http://www.leomessi.com" + ], + "trainerProfile": { + "id": null, + "url": null, + "position": null + }, + "relatives": [ + { + "id": "55306", + "url": "/maximiliano-biancucchi/profil/spieler/55306", + "name": "Maximiliano Biancucchi", + "profileType": "player" + }, + { + "id": "82727", + "url": "/emanuel-biancucchi/profil/spieler/82727", + "name": "Emanuel Biancucchi", + "profileType": "player" + } + ] +} \ No newline at end of file diff --git a/tests/data/players/profile/3373.json b/tests/data/players/profile/3373.json new file mode 100644 index 0000000..df7eb3e --- /dev/null +++ b/tests/data/players/profile/3373.json @@ -0,0 +1,85 @@ +{ + "id": "3373", + "url": "https://www.transfermarkt.com/ronaldinho/profil/spieler/3373", + "name": "Ronaldinho", + "description": "Ronaldinho ➤ former footballer from Brazil ➤ Left Winger ➤ last club: Fluminense Football Club ➤ * Mar 21, 1980 in Porto Alegre, Brazil", + "fullName": "Ronaldo de Assís Moreira", + "nameInHomeCountry": null, + "imageUrl": "https://img.a.transfermarkt.technology/portrait/header/3373-1515762355.jpg?lm=1", + "dateOfBirth": "Mar 21, 1980", + "placeOfBirth": { + "city": "Porto Alegre", + "country": "Brazil" + }, + "age": "44", + "height": "1,82m", + "citizenship": [ + "Brazil", + "Spain" + ], + "isRetired": false, + "retiredSince": null, + "position": { + "main": "Left Winger", + "other": [ + "Attacking Midfield", + "Second Striker" + ] + }, + "foot": "right", + "shirtNumber": null, + "club": { + "id": null, + "name": "Retired", + "joined": "Jan 16, 2018", + "contractExpires": "-", + "contractOption": null, + "lastClubId": null, + "lastClubName": null, + "mostGamesFor": null + }, + "marketValue": null, + "agent": { + "name": null, + "url": null + }, + "outfitter": "Nike", + "socialMedia": [ + "http://twitter.com/10Ronaldinho", + "http://facebook.com/ronaldinho/", + "http://instagram.com/ronaldinho/", + "http://www.ronaldinho.com/", + "http://www.tiktok.com/@ronaldinho" + ], + "trainerProfile": { + "id": "135400", + "url": "/ronaldinho/profil/trainer/135400", + "position": null + }, + "relatives": [ + { + "id": "155735", + "url": "/assis/profil/spieler/155735", + "name": "Assis", + "profileType": "player" + }, + { + "id": "664840", + "url": "/joao-mendes/profil/spieler/664840", + "name": "João Mendes", + "profileType": "player" + }, + { + "id": "70409", + "url": "/edmilson-neves/profil/trainer/70409", + "name": "Edmilson Neves", + "profileType": "trainer" + }, + { + "id": "1270472", + "url": "/diego-assis/profil/spieler/1270472", + "name": "Diego Assis", + "profileType": "player" + } + ] +} \ No newline at end of file diff --git a/tests/data/players/profile/68290.json b/tests/data/players/profile/68290.json new file mode 100644 index 0000000..2b0dda2 --- /dev/null +++ b/tests/data/players/profile/68290.json @@ -0,0 +1,60 @@ +{ + "id": "68290", + "url": "https://www.transfermarkt.com/neymar/profil/spieler/68290", + "name": "Neymar", + "description": "Neymar, 32, from Brazil ➤ Al-Hilal SFC, since 2023 ➤ Left Winger ➤ Market value: €15.00m ➤ * Feb 5, 1992 in Mogi das Cruzes, Brazil", + "fullName": "Neymar da Silva Santos Júnior", + "nameInHomeCountry": null, + "imageUrl": "https://img.a.transfermarkt.technology/portrait/header/68290-1697056482.png?lm=1", + "dateOfBirth": "Feb 5, 1992", + "placeOfBirth": { + "city": "Mogi das Cruzes", + "country": "Brazil" + }, + "age": "32", + "height": "1,75m", + "citizenship": [ + "Brazil" + ], + "isRetired": false, + "retiredSince": null, + "position": { + "main": "Left Winger", + "other": [ + "Second Striker", + "Attacking Midfield" + ] + }, + "foot": "right", + "shirtNumber": "#10", + "club": { + "id": "1114", + "name": "Al-Hilal", + "joined": "Aug 15, 2023", + "contractExpires": "Jun 30, 2025", + "contractOption": "Option for a further year", + "lastClubId": null, + "lastClubName": null, + "mostGamesFor": null + }, + "marketValue": "€15.00m", + "agent": { + "name": "Relatives", + "url": null + }, + "outfitter": "Puma", + "socialMedia": [ + "http://www.twitch.tv/Neymarjr", + "http://twitter.com/neymarjr", + "http://www.facebook.com/neymarjr", + "http://instagram.com/neymarjr", + "http://www.neymaroficial.com/", + "http://www.tiktok.com/@neymarjr" + ], + "trainerProfile": { + "id": null, + "url": null, + "position": null + }, + "relatives": [] +} \ No newline at end of file diff --git a/tests/data/players/profile/8198.json b/tests/data/players/profile/8198.json new file mode 100644 index 0000000..28603a3 --- /dev/null +++ b/tests/data/players/profile/8198.json @@ -0,0 +1,58 @@ +{ + "id": "8198", + "url": "https://www.transfermarkt.com/cristiano-ronaldo/profil/spieler/8198", + "name": "Cristiano Ronaldo", + "description": "Cristiano Ronaldo, 39, from Portugal ➤ Al-Nassr FC, since 2022 ➤ Centre-Forward ➤ Market value: €12.00m ➤ * Feb 5, 1985 in Funchal, Portugal", + "fullName": null, + "nameInHomeCountry": "Cristiano Ronaldo dos Santos Aveiro", + "imageUrl": "https://img.a.transfermarkt.technology/portrait/header/8198-1694609670.jpg?lm=1", + "dateOfBirth": "Feb 5, 1985", + "placeOfBirth": { + "city": "Funchal", + "country": "Portugal" + }, + "age": "39", + "height": "1,88m", + "citizenship": [ + "Portugal" + ], + "isRetired": false, + "retiredSince": null, + "position": { + "main": "Centre-Forward", + "other": [ + "Left Winger", + "Right Winger" + ] + }, + "foot": "right", + "shirtNumber": "#7", + "club": { + "id": "18544", + "name": "Al-Nassr", + "joined": "Jan 1, 2023", + "contractExpires": "Jun 30, 2025", + "contractOption": null, + "lastClubId": null, + "lastClubName": null, + "mostGamesFor": null + }, + "marketValue": "€12.00m", + "agent": { + "name": "Gestifute", + "url": "/gestifute/beraterfirma/berater/413" + }, + "outfitter": "Nike", + "socialMedia": [ + "http://twitter.com/Cristiano", + "http://www.facebook.com/Cristiano", + "http://www.instagram.com/cristiano", + "http://www.cristianoronaldo.com/" + ], + "trainerProfile": { + "id": null, + "url": null, + "position": null + }, + "relatives": [] +} \ No newline at end of file diff --git a/tests/data/players/search/Cristiano.json b/tests/data/players/search/Cristiano.json new file mode 100644 index 0000000..f33fd03 --- /dev/null +++ b/tests/data/players/search/Cristiano.json @@ -0,0 +1,151 @@ +{ + "query": "Cristiano", + "pageNumber": 1, + "lastPageNumber": 42, + "results": [ + { + "id": "8198", + "name": "Cristiano Ronaldo", + "position": "CF", + "club": { + "name": "Al-Nassr FC", + "id": "18544" + }, + "age": "39", + "nationalities": [ + "Portugal" + ], + "marketValue": "€12.00m" + }, + { + "id": "3165", + "name": "Cris", + "position": "CB", + "club": { + "name": "Retired", + "id": "123" + }, + "age": "47", + "nationalities": [ + "Brazil", + "Portugal" + ], + "marketValue": "-" + }, + { + "id": "21408", + "name": "Cristiano Lucarelli", + "position": "CF", + "club": { + "name": "Retired", + "id": "123" + }, + "age": "49", + "nationalities": [ + "Italy" + ], + "marketValue": "-" + }, + { + "id": "124555", + "name": "Cristiano Biraghi", + "position": "LB", + "club": { + "name": "ACF Fiorentina", + "id": "430" + }, + "age": "32", + "nationalities": [ + "Italy" + ], + "marketValue": "€2.00m" + }, + { + "id": "163086", + "name": "Cristiano Piccini", + "position": "CB", + "club": { + "name": "Atlético de San Luis", + "id": "40188" + }, + "age": "32", + "nationalities": [ + "Italy" + ], + "marketValue": "€500k" + }, + { + "id": "504209", + "name": "Gianluca Busio", + "position": "CM", + "club": { + "name": "Venezia FC", + "id": "607" + }, + "age": "22", + "nationalities": [ + "United States", + "Italy" + ], + "marketValue": "€6.50m" + }, + { + "id": "5783", + "name": "Cristiano Zanetti", + "position": "DM", + "club": { + "name": "Retired", + "id": "123" + }, + "age": "47", + "nationalities": [ + "Italy" + ], + "marketValue": "-" + }, + { + "id": "6195", + "name": "Cristiano Doni", + "position": "AM", + "club": { + "name": "Retired", + "id": "123" + }, + "age": "51", + "nationalities": [ + "Italy" + ], + "marketValue": "-" + }, + { + "id": "21488", + "name": "Tita", + "position": "LW", + "club": { + "name": "Retired", + "id": "123" + }, + "age": "43", + "nationalities": [ + "Brazil", + "Türkiye" + ], + "marketValue": "-" + }, + { + "id": "33739", + "name": "Cristiano", + "position": "LW", + "club": { + "name": "AE Jataiense", + "id": "25244" + }, + "age": "41", + "nationalities": [ + "Brazil", + "Portugal" + ], + "marketValue": "-" + } + ] +} \ No newline at end of file diff --git a/tests/data/players/search/Messi.json b/tests/data/players/search/Messi.json new file mode 100644 index 0000000..49f58d0 --- /dev/null +++ b/tests/data/players/search/Messi.json @@ -0,0 +1,150 @@ +{ + "query": "Messi", + "pageNumber": 1, + "lastPageNumber": 22, + "results": [ + { + "id": "28003", + "name": "Lionel Messi", + "position": "RW", + "club": { + "name": "Inter Miami CF", + "id": "69261" + }, + "age": "37", + "nationalities": [ + "Argentina", + "Spain" + ], + "marketValue": "€20.00m" + }, + { + "id": "113586", + "name": "Manoel", + "position": "CB", + "club": { + "name": "Fluminense Football Club", + "id": "2462" + }, + "age": "34", + "nationalities": [ + "Brazil" + ], + "marketValue": "€200k" + }, + { + "id": "449151", + "name": "Junior Messias", + "position": "RW", + "club": { + "name": "Genoa CFC", + "id": "252" + }, + "age": "33", + "nationalities": [ + "Brazil", + "Italy" + ], + "marketValue": "€2.00m" + }, + { + "id": "744024", + "name": "João Marcelo", + "position": "CB", + "club": { + "name": "Cruzeiro Esporte Clube", + "id": "609" + }, + "age": "24", + "nationalities": [ + "Brazil" + ], + "marketValue": "€5.50m" + }, + { + "id": "173617", + "name": "Fabrício", + "position": "CF", + "club": { + "name": "Without Club", + "id": "515" + }, + "age": "34", + "nationalities": [ + "Brazil" + ], + "marketValue": "€75k" + }, + { + "id": "13810", + "name": "Alexandre Rotweiller", + "position": "DM", + "club": { + "name": "Retired", + "id": "123" + }, + "age": "45", + "nationalities": [ + "Brazil" + ], + "marketValue": "-" + }, + { + "id": "393581", + "name": "Bruno Almeida", + "position": "RW", + "club": { + "name": "CD Santa Clara", + "id": "2423" + }, + "age": "28", + "nationalities": [ + "Portugal" + ], + "marketValue": "€700k" + }, + { + "id": "76071", + "name": "Leandro", + "position": "CB", + "club": { + "name": "Retired", + "id": "123" + }, + "age": "41", + "nationalities": [ + "Brazil", + "Poland" + ], + "marketValue": "-" + }, + { + "id": "7854", + "name": "Messias Conceicao", + "position": "DM", + "club": { + "name": "Retired", + "id": "123" + }, + "age": "47", + "nationalities": [ + "Brazil" + ], + "marketValue": "-" + }, + { + "id": "45240", + "name": "Georges Messi", + "position": "AM", + "club": { + "name": "Retired", + "id": "123" + }, + "age": "44", + "nationalities": [ + "Cameroon" + ], + "marketValue": "-" + } + ] +} \ No newline at end of file diff --git a/tests/data/players/search/Neymar.json b/tests/data/players/search/Neymar.json new file mode 100644 index 0000000..2181a0e --- /dev/null +++ b/tests/data/players/search/Neymar.json @@ -0,0 +1,133 @@ +{ + "query": "Neymar", + "pageNumber": 1, + "lastPageNumber": 1, + "results": [ + { + "id": "68290", + "name": "Neymar", + "position": "LW", + "club": { + "name": "Al-Hilal SFC", + "id": "1114" + }, + "age": "32", + "nationalities": [ + "Brazil" + ], + "marketValue": "€15.00m" + }, + { + "id": "441690", + "name": "Amâncio Canhemba", + "position": "AM", + "club": { + "name": "Clube Ferroviário de Maputo", + "id": "12379" + }, + "age": "27", + "nationalities": [ + "Mozambique" + ], + "marketValue": "-" + }, + { + "id": "876462", + "name": "Nicolas Neymar", + "position": "Midfield", + "club": { + "name": "UD Songo", + "id": "43314" + }, + "age": "23", + "nationalities": [ + "Mozambique" + ], + "marketValue": "-" + }, + { + "id": "896344", + "name": "Martín Jiménez", + "position": "CB", + "club": { + "name": "Without Club", + "id": "515" + }, + "age": "29", + "nationalities": [ + "Panama" + ], + "marketValue": "€50k" + }, + { + "id": "910476", + "name": "Neymar Sánchez", + "position": "LW", + "club": { + "name": "Millonarios FC U20", + "id": "22899" + }, + "age": "21", + "nationalities": [ + "Colombia" + ], + "marketValue": "-" + }, + { + "id": "1073939", + "name": "Neymar", + "position": "Midfield", + "club": { + "name": "GA Sampaio (RR)", + "id": "87822" + }, + "age": "26", + "nationalities": [ + "Brazil" + ], + "marketValue": "-" + }, + { + "id": "1149306", + "name": "Neymar Uribe", + "position": "Defender", + "club": { + "name": "Envigado FC U20", + "id": "22573" + }, + "age": "21", + "nationalities": [ + "Colombia" + ], + "marketValue": "-" + }, + { + "id": "1214663", + "name": "Júnior Neymar", + "position": "CF", + "club": { + "name": "Retired", + "id": "123" + }, + "age": "30", + "nationalities": [ + "Brazil" + ], + "marketValue": "-" + }, + { + "id": "1307213", + "name": "Neymar", + "position": "Attack", + "club": { + "name": "CD Lunda Sul", + "id": "97257" + }, + "age": "20", + "nationalities": [ + "Angola" + ], + "marketValue": "-" + } + ] +} \ No newline at end of file diff --git a/tests/data/players/search/Ronaldo.json b/tests/data/players/search/Ronaldo.json new file mode 100644 index 0000000..83ab163 --- /dev/null +++ b/tests/data/players/search/Ronaldo.json @@ -0,0 +1,152 @@ +{ + "query": "Ronaldo", + "pageNumber": 1, + "lastPageNumber": 41, + "results": [ + { + "id": "8198", + "name": "Cristiano Ronaldo", + "position": "CF", + "club": { + "name": "Al-Nassr FC", + "id": "18544" + }, + "age": "39", + "nationalities": [ + "Portugal" + ], + "marketValue": "€12.00m" + }, + { + "id": "3140", + "name": "Ronaldo", + "position": "CF", + "club": { + "name": "Retired", + "id": "123" + }, + "age": "48", + "nationalities": [ + "Brazil", + "Spain" + ], + "marketValue": "-" + }, + { + "id": "3373", + "name": "Ronaldinho", + "position": "LW", + "club": { + "name": "Retired", + "id": "123" + }, + "age": "44", + "nationalities": [ + "Brazil", + "Spain" + ], + "marketValue": "-" + }, + { + "id": "102589", + "name": "Ronaldao", + "position": "CB", + "club": { + "name": "Retired", + "id": "123" + }, + "age": "59", + "nationalities": [ + "Brazil" + ], + "marketValue": "-" + }, + { + "id": "356772", + "name": "Ronaldo Luiz", + "position": "LB", + "club": { + "name": "Retired", + "id": "123" + }, + "age": "58", + "nationalities": [ + "Brazil" + ], + "marketValue": "-" + }, + { + "id": "32213", + "name": "Naldo", + "position": "CB", + "club": { + "name": "Retired", + "id": "123" + }, + "age": "42", + "nationalities": [ + "Brazil", + "Germany" + ], + "marketValue": "-" + }, + { + "id": "434676", + "name": "Ronaldo Vieira", + "position": "CM", + "club": { + "name": "UC Sampdoria", + "id": "1038" + }, + "age": "26", + "nationalities": [ + "England", + "Guinea-Bissau" + ], + "marketValue": "€400k" + }, + { + "id": "866670", + "name": "Ronaldo", + "position": "RW", + "club": { + "name": "FC Rostov", + "id": "1083" + }, + "age": "24", + "nationalities": [ + "Brazil" + ], + "marketValue": "€5.00m" + }, + { + "id": "405768", + "name": "Ronaldo", + "position": "DM", + "club": { + "name": "Sport Club Internacional", + "id": "6600" + }, + "age": "28", + "nationalities": [ + "Brazil" + ], + "marketValue": "€700k" + }, + { + "id": "6887", + "name": "Ronaldo", + "position": "CB", + "club": { + "name": "Retired", + "id": "123" + }, + "age": "50", + "nationalities": [ + "Brazil", + "Portugal" + ], + "marketValue": "-" + } + ] +} \ No newline at end of file diff --git a/tests/data/players/stats/28003.json b/tests/data/players/stats/28003.json new file mode 100644 index 0000000..b13ab68 --- /dev/null +++ b/tests/data/players/stats/28003.json @@ -0,0 +1,1110 @@ +{ + "id": "28003", + "stats": [ + { + "competitionId": "POUS", + "clubId": "69261", + "seasonId": "2024", + "competitionName": "MLS Cup Playoffs", + "appearances": "3", + "goals": "1", + "assists": "1", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "270'" + }, + { + "competitionId": "MLS1", + "clubId": "69261", + "seasonId": "2024", + "competitionName": "MLS", + "appearances": "19", + "goals": "20", + "assists": "10", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.486'" + }, + { + "competitionId": "CCL", + "clubId": "69261", + "seasonId": "23/24", + "competitionName": "CONCACAF Champions Cup", + "appearances": "3", + "goals": "2", + "assists": "2", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "230'" + }, + { + "competitionId": "MLS1", + "clubId": "69261", + "seasonId": "2023", + "competitionName": "MLS", + "appearances": "6", + "goals": "1", + "assists": "2", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "372'" + }, + { + "competitionId": "MLSP", + "clubId": "69261", + "seasonId": "2023", + "competitionName": "US Open Cup", + "appearances": "1", + "goals": "-", + "assists": "2", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "120'" + }, + { + "competitionId": "USMX", + "clubId": "69261", + "seasonId": "2023", + "competitionName": "Leagues Cup", + "appearances": "7", + "goals": "10", + "assists": "1", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "624'" + }, + { + "competitionId": "FR1", + "clubId": "583", + "seasonId": "22/23", + "competitionName": "Ligue 1", + "appearances": "32", + "goals": "16", + "assists": "16", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.842'" + }, + { + "competitionId": "CL", + "clubId": "583", + "seasonId": "22/23", + "competitionName": "UEFA Champions League", + "appearances": "7", + "goals": "4", + "assists": "4", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "615'" + }, + { + "competitionId": "FRC", + "clubId": "583", + "seasonId": "22/23", + "competitionName": "Coupe de France", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "FRCH", + "clubId": "583", + "seasonId": "22/23", + "competitionName": "Trophée des Champions", + "appearances": "1", + "goals": "1", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "FR1", + "clubId": "583", + "seasonId": "21/22", + "competitionName": "Ligue 1", + "appearances": "26", + "goals": "6", + "assists": "15", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.152'" + }, + { + "competitionId": "CL", + "clubId": "583", + "seasonId": "21/22", + "competitionName": "UEFA Champions League", + "appearances": "7", + "goals": "5", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "630'" + }, + { + "competitionId": "FRC", + "clubId": "583", + "seasonId": "21/22", + "competitionName": "Coupe de France", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "20/21", + "competitionName": "LaLiga", + "appearances": "35", + "goals": "30", + "assists": "11", + "yellowCards": "4", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "3.023'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "20/21", + "competitionName": "Copa del Rey", + "appearances": "5", + "goals": "3", + "assists": "1", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "510'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "20/21", + "competitionName": "UEFA Champions League", + "appearances": "6", + "goals": "5", + "assists": "2", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "540'" + }, + { + "competitionId": "SUC", + "clubId": "131", + "seasonId": "20/21", + "competitionName": "Supercopa", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "1", + "minutesPlayed": "120'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "19/20", + "competitionName": "UEFA Champions League", + "appearances": "8", + "goals": "3", + "assists": "4", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "661'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "19/20", + "competitionName": "LaLiga", + "appearances": "33", + "goals": "25", + "assists": "22", + "yellowCards": "4", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.880'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "19/20", + "competitionName": "Copa del Rey", + "appearances": "2", + "goals": "2", + "assists": "1", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "SUC", + "clubId": "131", + "seasonId": "19/20", + "competitionName": "Supercopa", + "appearances": "1", + "goals": "1", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "18/19", + "competitionName": "Copa del Rey", + "appearances": "5", + "goals": "3", + "assists": "3", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "387'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "18/19", + "competitionName": "LaLiga", + "appearances": "34", + "goals": "36", + "assists": "14", + "yellowCards": "3", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.710'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "18/19", + "competitionName": "UEFA Champions League", + "appearances": "10", + "goals": "12", + "assists": "3", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "837'" + }, + { + "competitionId": "SUC", + "clubId": "131", + "seasonId": "18/19", + "competitionName": "Supercopa", + "appearances": "1", + "goals": "-", + "assists": "2", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "17/18", + "competitionName": "LaLiga", + "appearances": "36", + "goals": "34", + "assists": "14", + "yellowCards": "3", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.996'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "17/18", + "competitionName": "Copa del Rey", + "appearances": "6", + "goals": "4", + "assists": "4", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "509'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "17/18", + "competitionName": "UEFA Champions League", + "appearances": "10", + "goals": "6", + "assists": "2", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "783'" + }, + { + "competitionId": "SUC", + "clubId": "131", + "seasonId": "17/18", + "competitionName": "Supercopa", + "appearances": "2", + "goals": "1", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "16/17", + "competitionName": "Copa del Rey", + "appearances": "7", + "goals": "5", + "assists": "4", + "yellowCards": "3", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "630'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "16/17", + "competitionName": "LaLiga", + "appearances": "34", + "goals": "37", + "assists": "12", + "yellowCards": "6", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.832'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "16/17", + "competitionName": "UEFA Champions League", + "appearances": "9", + "goals": "11", + "assists": "2", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "810'" + }, + { + "competitionId": "SUC", + "clubId": "131", + "seasonId": "16/17", + "competitionName": "Supercopa", + "appearances": "2", + "goals": "1", + "assists": "2", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "15/16", + "competitionName": "Copa del Rey", + "appearances": "5", + "goals": "5", + "assists": "6", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "480'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "15/16", + "competitionName": "LaLiga", + "appearances": "33", + "goals": "26", + "assists": "16", + "yellowCards": "3", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.729'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "15/16", + "competitionName": "UEFA Champions League", + "appearances": "7", + "goals": "6", + "assists": "1", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "630'" + }, + { + "competitionId": "KLUB", + "clubId": "131", + "seasonId": "15/16", + "competitionName": "Club World Cup", + "appearances": "1", + "goals": "1", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "SUC", + "clubId": "131", + "seasonId": "15/16", + "competitionName": "Supercopa", + "appearances": "2", + "goals": "1", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "USC", + "clubId": "131", + "seasonId": "15/16", + "competitionName": "UEFA Super Cup", + "appearances": "1", + "goals": "2", + "assists": "1", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "120'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "14/15", + "competitionName": "UEFA Champions League", + "appearances": "13", + "goals": "10", + "assists": "6", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.146'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "14/15", + "competitionName": "Copa del Rey", + "appearances": "6", + "goals": "5", + "assists": "4", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "540'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "14/15", + "competitionName": "LaLiga", + "appearances": "38", + "goals": "43", + "assists": "21", + "yellowCards": "4", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "3.375'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "13/14", + "competitionName": "LaLiga", + "appearances": "31", + "goals": "28", + "assists": "11", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.502'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "13/14", + "competitionName": "Copa del Rey", + "appearances": "6", + "goals": "5", + "assists": "3", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "476'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "13/14", + "competitionName": "UEFA Champions League", + "appearances": "7", + "goals": "8", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "630'" + }, + { + "competitionId": "SUC", + "clubId": "131", + "seasonId": "13/14", + "competitionName": "Supercopa", + "appearances": "2", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "135'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "12/13", + "competitionName": "LaLiga", + "appearances": "32", + "goals": "46", + "assists": "13", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.626'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "12/13", + "competitionName": "UEFA Champions League", + "appearances": "11", + "goals": "8", + "assists": "3", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "821'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "12/13", + "competitionName": "Copa del Rey", + "appearances": "5", + "goals": "4", + "assists": "1", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "443'" + }, + { + "competitionId": "SUC", + "clubId": "131", + "seasonId": "12/13", + "competitionName": "Supercopa", + "appearances": "2", + "goals": "2", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "11/12", + "competitionName": "Copa del Rey", + "appearances": "7", + "goals": "3", + "assists": "4", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "512'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "11/12", + "competitionName": "LaLiga", + "appearances": "37", + "goals": "50", + "assists": "19", + "yellowCards": "6", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "3.269'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "11/12", + "competitionName": "UEFA Champions League", + "appearances": "11", + "goals": "14", + "assists": "5", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "990'" + }, + { + "competitionId": "KLUB", + "clubId": "131", + "seasonId": "11/12", + "competitionName": "Club World Cup", + "appearances": "2", + "goals": "2", + "assists": "1", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "USC", + "clubId": "131", + "seasonId": "11/12", + "competitionName": "UEFA Super Cup", + "appearances": "1", + "goals": "1", + "assists": "1", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "SUC", + "clubId": "131", + "seasonId": "11/12", + "competitionName": "Supercopa", + "appearances": "2", + "goals": "3", + "assists": "2", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "10/11", + "competitionName": "UEFA Champions League", + "appearances": "13", + "goals": "12", + "assists": "4", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.048'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "10/11", + "competitionName": "LaLiga", + "appearances": "33", + "goals": "31", + "assists": "21", + "yellowCards": "3", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.861'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "10/11", + "competitionName": "Copa del Rey", + "appearances": "7", + "goals": "7", + "assists": "2", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "542'" + }, + { + "competitionId": "SUC", + "clubId": "131", + "seasonId": "10/11", + "competitionName": "Supercopa", + "appearances": "2", + "goals": "3", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "128'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "09/10", + "competitionName": "LaLiga", + "appearances": "35", + "goals": "34", + "assists": "11", + "yellowCards": "3", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.840'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "09/10", + "competitionName": "UEFA Champions League", + "appearances": "11", + "goals": "8", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "986'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "09/10", + "competitionName": "Copa del Rey", + "appearances": "3", + "goals": "1", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "209'" + }, + { + "competitionId": "KLUB", + "clubId": "131", + "seasonId": "09/10", + "competitionName": "Club World Cup", + "appearances": "2", + "goals": "2", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "157'" + }, + { + "competitionId": "USC", + "clubId": "131", + "seasonId": "09/10", + "competitionName": "UEFA Super Cup", + "appearances": "1", + "goals": "-", + "assists": "1", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "120'" + }, + { + "competitionId": "SUC", + "clubId": "131", + "seasonId": "09/10", + "competitionName": "Supercopa", + "appearances": "1", + "goals": "2", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "08/09", + "competitionName": "UEFA Champions League", + "appearances": "12", + "goals": "9", + "assists": "5", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "927'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "08/09", + "competitionName": "Copa del Rey", + "appearances": "8", + "goals": "6", + "assists": "1", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "450'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "08/09", + "competitionName": "LaLiga", + "appearances": "31", + "goals": "23", + "assists": "13", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.513'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "07/08", + "competitionName": "LaLiga", + "appearances": "28", + "goals": "10", + "assists": "14", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.003'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "07/08", + "competitionName": "UEFA Champions League", + "appearances": "9", + "goals": "6", + "assists": "2", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "726'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "07/08", + "competitionName": "Copa del Rey", + "appearances": "3", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "225'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "06/07", + "competitionName": "LaLiga", + "appearances": "26", + "goals": "14", + "assists": "2", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.001'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "06/07", + "competitionName": "Copa del Rey", + "appearances": "2", + "goals": "2", + "assists": "1", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "166'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "06/07", + "competitionName": "UEFA Champions League", + "appearances": "5", + "goals": "1", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "385'" + }, + { + "competitionId": "USC", + "clubId": "131", + "seasonId": "06/07", + "competitionName": "UEFA Super Cup", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "SUC", + "clubId": "131", + "seasonId": "06/07", + "competitionName": "Supercopa", + "appearances": "2", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "121'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "05/06", + "competitionName": "UEFA Champions League", + "appearances": "6", + "goals": "1", + "assists": "2", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "322'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "05/06", + "competitionName": "LaLiga", + "appearances": "17", + "goals": "6", + "assists": "2", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "912'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "05/06", + "competitionName": "Copa del Rey", + "appearances": "2", + "goals": "1", + "assists": "1", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "ES3C", + "clubId": "2464", + "seasonId": "04/05", + "competitionName": "2ª B - Grupo III", + "appearances": "17", + "goals": "6", + "assists": "1", + "yellowCards": "3", + "secondYellowCards": "-", + "redCards": "1", + "minutesPlayed": "1.515'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "04/05", + "competitionName": "LaLiga", + "appearances": "7", + "goals": "1", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "76'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "04/05", + "competitionName": "UEFA Champions League", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "04/05", + "competitionName": "Copa del Rey", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "73'" + }, + { + "competitionId": "ES3C", + "clubId": "2464", + "seasonId": "03/04", + "competitionName": "2ª B - Grupo III", + "appearances": "5", + "goals": "-", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "404'" + } + ] +} \ No newline at end of file diff --git a/tests/data/players/stats/3373.json b/tests/data/players/stats/3373.json new file mode 100644 index 0000000..b7822ee --- /dev/null +++ b/tests/data/players/stats/3373.json @@ -0,0 +1,785 @@ +{ + "id": "3373", + "stats": [ + { + "competitionId": "BRA1", + "clubId": "2462", + "seasonId": "2015", + "competitionName": "Série A", + "appearances": "7", + "goals": "-", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "468'" + }, + { + "competitionId": "BRC", + "clubId": "2462", + "seasonId": "2015", + "competitionName": "Copa do Brasil", + "appearances": "2", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "88'" + }, + { + "competitionId": "POME", + "clubId": "4961", + "seasonId": "14/15", + "competitionName": "Liguilla Clausura", + "appearances": "5", + "goals": "1", + "assists": "1", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "279'" + }, + { + "competitionId": "MEX1", + "clubId": "4961", + "seasonId": "14/15", + "competitionName": "Liga MX Clausura", + "appearances": "11", + "goals": "4", + "assists": "4", + "yellowCards": "4", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "593'" + }, + { + "competitionId": "MXCC", + "clubId": "4961", + "seasonId": "14/15", + "competitionName": "Copa MX Clausura", + "appearances": "3", + "goals": "-", + "assists": "1", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "251'" + }, + { + "competitionId": "MEXA", + "clubId": "4961", + "seasonId": "14/15", + "competitionName": "Liga MX Apertura", + "appearances": "9", + "goals": "3", + "assists": "2", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "767'" + }, + { + "competitionId": "MXCA", + "clubId": "4961", + "seasonId": "14/15", + "competitionName": "Copa MX Apertura", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "RECO", + "clubId": "330", + "seasonId": "2014", + "competitionName": "Recopa Sudamericana", + "appearances": "2", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "110'" + }, + { + "competitionId": "CLI", + "clubId": "330", + "seasonId": "2014", + "competitionName": "Libertadores", + "appearances": "7", + "goals": "1", + "assists": "2", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "613'" + }, + { + "competitionId": "BRA1", + "clubId": "330", + "seasonId": "2014", + "competitionName": "Série A", + "appearances": "2", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "156'" + }, + { + "competitionId": "BRCM", + "clubId": "330", + "seasonId": "2014", + "competitionName": "Campeonato Mineiro", + "appearances": "4", + "goals": "-", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "360'" + }, + { + "competitionId": "KLUB", + "clubId": "330", + "seasonId": "13/14", + "competitionName": "Club World Cup", + "appearances": "2", + "goals": "2", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "1", + "minutesPlayed": "177'" + }, + { + "competitionId": "BRA1", + "clubId": "330", + "seasonId": "2013", + "competitionName": "Série A", + "appearances": "14", + "goals": "8", + "assists": "2", + "yellowCards": "6", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.256'" + }, + { + "competitionId": "BRC", + "clubId": "330", + "seasonId": "2013", + "competitionName": "Copa do Brasil", + "appearances": "2", + "goals": "-", + "assists": "2", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "CLI", + "clubId": "330", + "seasonId": "2013", + "competitionName": "Libertadores", + "appearances": "14", + "goals": "4", + "assists": "7", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.265'" + }, + { + "competitionId": "BRCM", + "clubId": "330", + "seasonId": "2013", + "competitionName": "Campeonato Mineiro", + "appearances": "6", + "goals": "4", + "assists": "2", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "522'" + }, + { + "competitionId": "BRA1", + "clubId": "330", + "seasonId": "2012", + "competitionName": "Série A", + "appearances": "32", + "goals": "9", + "assists": "15", + "yellowCards": "5", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.867'" + }, + { + "competitionId": "BRA1", + "clubId": "614", + "seasonId": "2012", + "competitionName": "Série A", + "appearances": "2", + "goals": "1", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "166'" + }, + { + "competitionId": "CLI", + "clubId": "614", + "seasonId": "2012", + "competitionName": "Libertadores", + "appearances": "8", + "goals": "2", + "assists": "6", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "720'" + }, + { + "competitionId": "BRA1", + "clubId": "614", + "seasonId": "2011", + "competitionName": "Série A", + "appearances": "31", + "goals": "14", + "assists": "7", + "yellowCards": "11", + "secondYellowCards": "-", + "redCards": "1", + "minutesPlayed": "2.738'" + }, + { + "competitionId": "CS", + "clubId": "614", + "seasonId": "2011", + "competitionName": "Copa Sudamericana", + "appearances": "3", + "goals": "2", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "151'" + }, + { + "competitionId": "BRC", + "clubId": "614", + "seasonId": "2011", + "competitionName": "Copa do Brasil", + "appearances": "5", + "goals": "1", + "assists": "2", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "450'" + }, + { + "competitionId": "IT1", + "clubId": "5", + "seasonId": "10/11", + "competitionName": "Serie A", + "appearances": "11", + "goals": "-", + "assists": "3", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "606'" + }, + { + "competitionId": "CL", + "clubId": "5", + "seasonId": "10/11", + "competitionName": "UEFA Champions League", + "appearances": "5", + "goals": "1", + "assists": "1", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "317'" + }, + { + "competitionId": "IT1", + "clubId": "5", + "seasonId": "09/10", + "competitionName": "Serie A", + "appearances": "36", + "goals": "12", + "assists": "18", + "yellowCards": "6", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.898'" + }, + { + "competitionId": "CL", + "clubId": "5", + "seasonId": "09/10", + "competitionName": "UEFA Champions League", + "appearances": "7", + "goals": "3", + "assists": "1", + "yellowCards": "3", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "585'" + }, + { + "competitionId": "IT1", + "clubId": "5", + "seasonId": "08/09", + "competitionName": "Serie A", + "appearances": "29", + "goals": "8", + "assists": "5", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.606'" + }, + { + "competitionId": "UEFA", + "clubId": "5", + "seasonId": "08/09", + "competitionName": "UEFA Cup", + "appearances": "6", + "goals": "2", + "assists": "1", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "255'" + }, + { + "competitionId": "CIT", + "clubId": "5", + "seasonId": "08/09", + "competitionName": "Italy Cup", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "120'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "07/08", + "competitionName": "LaLiga", + "appearances": "17", + "goals": "8", + "assists": "2", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.174'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "07/08", + "competitionName": "UEFA Champions League", + "appearances": "8", + "goals": "1", + "assists": "2", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "591'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "07/08", + "competitionName": "Copa del Rey", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "15'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "06/07", + "competitionName": "LaLiga", + "appearances": "32", + "goals": "21", + "assists": "9", + "yellowCards": "8", + "secondYellowCards": "-", + "redCards": "1", + "minutesPlayed": "2.742'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "06/07", + "competitionName": "Copa del Rey", + "appearances": "4", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "360'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "06/07", + "competitionName": "UEFA Champions League", + "appearances": "8", + "goals": "2", + "assists": "2", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "720'" + }, + { + "competitionId": "KLUB", + "clubId": "131", + "seasonId": "06/07", + "competitionName": "Club World Cup", + "appearances": "2", + "goals": "1", + "assists": "1", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "USC", + "clubId": "131", + "seasonId": "06/07", + "competitionName": "UEFA Super Cup", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "SUC", + "clubId": "131", + "seasonId": "06/07", + "competitionName": "Supercopa", + "appearances": "2", + "goals": "-", + "assists": "2", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "05/06", + "competitionName": "UEFA Champions League", + "appearances": "12", + "goals": "7", + "assists": "4", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.079'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "05/06", + "competitionName": "LaLiga", + "appearances": "29", + "goals": "17", + "assists": "18", + "yellowCards": "5", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.527'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "05/06", + "competitionName": "Copa del Rey", + "appearances": "2", + "goals": "1", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "1", + "minutesPlayed": "128'" + }, + { + "competitionId": "SUC", + "clubId": "131", + "seasonId": "05/06", + "competitionName": "Supercopa", + "appearances": "2", + "goals": "1", + "assists": "1", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "04/05", + "competitionName": "LaLiga", + "appearances": "35", + "goals": "9", + "assists": "15", + "yellowCards": "5", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "3.071'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "04/05", + "competitionName": "UEFA Champions League", + "appearances": "7", + "goals": "4", + "assists": "2", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "603'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "03/04", + "competitionName": "LaLiga", + "appearances": "32", + "goals": "15", + "assists": "6", + "yellowCards": "8", + "secondYellowCards": "1", + "redCards": "-", + "minutesPlayed": "2.678'" + }, + { + "competitionId": "UEFA", + "clubId": "131", + "seasonId": "03/04", + "competitionName": "UEFA Cup", + "appearances": "7", + "goals": "4", + "assists": "2", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "538'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "03/04", + "competitionName": "Copa del Rey", + "appearances": "6", + "goals": "3", + "assists": "3", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "482'" + }, + { + "competitionId": "FRC", + "clubId": "583", + "seasonId": "02/03", + "competitionName": "Coupe de France", + "appearances": "5", + "goals": "3", + "assists": "3", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "413'" + }, + { + "competitionId": "FR1", + "clubId": "583", + "seasonId": "02/03", + "competitionName": "Ligue 1", + "appearances": "27", + "goals": "8", + "assists": "9", + "yellowCards": "3", + "secondYellowCards": "-", + "redCards": "1", + "minutesPlayed": "1.925'" + }, + { + "competitionId": "UEFA", + "clubId": "583", + "seasonId": "02/03", + "competitionName": "UEFA Cup", + "appearances": "4", + "goals": "1", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "332'" + }, + { + "competitionId": "FRL", + "clubId": "583", + "seasonId": "02/03", + "competitionName": "Coupe de la Ligue", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "FR1", + "clubId": "583", + "seasonId": "01/02", + "competitionName": "Division 1", + "appearances": "28", + "goals": "9", + "assists": "7", + "yellowCards": "7", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.920'" + }, + { + "competitionId": "FRC", + "clubId": "583", + "seasonId": "01/02", + "competitionName": "Coupe de France", + "appearances": "2", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "210'" + }, + { + "competitionId": "FRL", + "clubId": "583", + "seasonId": "01/02", + "competitionName": "Coupe de la Ligue", + "appearances": "4", + "goals": "2", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "154'" + }, + { + "competitionId": "UEFA", + "clubId": "583", + "seasonId": "01/02", + "competitionName": "UEFA Cup", + "appearances": "6", + "goals": "2", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "492'" + }, + { + "competitionId": "BRA1", + "clubId": "210", + "seasonId": "2000", + "competitionName": "Série A", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "BRA1", + "clubId": "210", + "seasonId": "1999", + "competitionName": "Série A", + "appearances": "7", + "goals": "3", + "assists": "2", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "615'" + }, + { + "competitionId": "CMER", + "clubId": "210", + "seasonId": "1999", + "competitionName": "Copa Mercosur", + "appearances": "4", + "goals": "2", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "360'" + }, + { + "competitionId": "CMER", + "clubId": "210", + "seasonId": "1998", + "competitionName": "Copa Mercosur", + "appearances": "5", + "goals": "2", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "316'" + }, + { + "competitionId": "CLI", + "clubId": "210", + "seasonId": "1998", + "competitionName": "Libertadores", + "appearances": "10", + "goals": "1", + "assists": "1", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "766'" + } + ] +} \ No newline at end of file diff --git a/tests/data/players/stats/68290.json b/tests/data/players/stats/68290.json new file mode 100644 index 0000000..201853d --- /dev/null +++ b/tests/data/players/stats/68290.json @@ -0,0 +1,824 @@ +{ + "id": "68290", + "stats": [ + { + "competitionId": "ACLE", + "clubId": "1114", + "seasonId": "24/25", + "competitionName": "AFC Champions League Elite", + "appearances": "2", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "42'" + }, + { + "competitionId": "AFCL", + "clubId": "1114", + "seasonId": "23/24", + "competitionName": "AFC Champions League", + "appearances": "2", + "goals": "1", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "SA1", + "clubId": "1114", + "seasonId": "23/24", + "competitionName": "Saudi Pro League", + "appearances": "3", + "goals": "-", + "assists": "3", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "206'" + }, + { + "competitionId": "FR1", + "clubId": "583", + "seasonId": "22/23", + "competitionName": "Ligue 1", + "appearances": "20", + "goals": "13", + "assists": "11", + "yellowCards": "4", + "secondYellowCards": "1", + "redCards": "-", + "minutesPlayed": "1.552'" + }, + { + "competitionId": "CL", + "clubId": "583", + "seasonId": "22/23", + "competitionName": "UEFA Champions League", + "appearances": "6", + "goals": "2", + "assists": "3", + "yellowCards": "4", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "540'" + }, + { + "competitionId": "FRC", + "clubId": "583", + "seasonId": "22/23", + "competitionName": "Coupe de France", + "appearances": "2", + "goals": "1", + "assists": "3", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "FRCH", + "clubId": "583", + "seasonId": "22/23", + "competitionName": "Trophée des Champions", + "appearances": "1", + "goals": "2", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "FR1", + "clubId": "583", + "seasonId": "21/22", + "competitionName": "Ligue 1", + "appearances": "22", + "goals": "13", + "assists": "6", + "yellowCards": "10", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.861'" + }, + { + "competitionId": "CL", + "clubId": "583", + "seasonId": "21/22", + "competitionName": "UEFA Champions League", + "appearances": "6", + "goals": "-", + "assists": "2", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "467'" + }, + { + "competitionId": "FR1", + "clubId": "583", + "seasonId": "20/21", + "competitionName": "Ligue 1", + "appearances": "18", + "goals": "9", + "assists": "6", + "yellowCards": "4", + "secondYellowCards": "1", + "redCards": "1", + "minutesPlayed": "1.416'" + }, + { + "competitionId": "FRC", + "clubId": "583", + "seasonId": "20/21", + "competitionName": "Coupe de France", + "appearances": "3", + "goals": "1", + "assists": "2", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "166'" + }, + { + "competitionId": "CL", + "clubId": "583", + "seasonId": "20/21", + "competitionName": "UEFA Champions League", + "appearances": "9", + "goals": "6", + "assists": "3", + "yellowCards": "3", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "746'" + }, + { + "competitionId": "FRCH", + "clubId": "583", + "seasonId": "20/21", + "competitionName": "Trophée des Champions", + "appearances": "1", + "goals": "1", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "25'" + }, + { + "competitionId": "CL", + "clubId": "583", + "seasonId": "19/20", + "competitionName": "UEFA Champions League", + "appearances": "7", + "goals": "3", + "assists": "4", + "yellowCards": "3", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "585'" + }, + { + "competitionId": "FRL", + "clubId": "583", + "seasonId": "19/20", + "competitionName": "Coupe de la Ligue", + "appearances": "3", + "goals": "1", + "assists": "2", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "300'" + }, + { + "competitionId": "FRC", + "clubId": "583", + "seasonId": "19/20", + "competitionName": "Coupe de France", + "appearances": "2", + "goals": "2", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "FR1", + "clubId": "583", + "seasonId": "19/20", + "competitionName": "Ligue 1", + "appearances": "15", + "goals": "13", + "assists": "6", + "yellowCards": "2", + "secondYellowCards": "1", + "redCards": "-", + "minutesPlayed": "1.322'" + }, + { + "competitionId": "FR1", + "clubId": "583", + "seasonId": "18/19", + "competitionName": "Ligue 1", + "appearances": "17", + "goals": "15", + "assists": "8", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.444'" + }, + { + "competitionId": "FRC", + "clubId": "583", + "seasonId": "18/19", + "competitionName": "Coupe de France", + "appearances": "3", + "goals": "2", + "assists": "3", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "272'" + }, + { + "competitionId": "FRL", + "clubId": "583", + "seasonId": "18/19", + "competitionName": "Coupe de la Ligue", + "appearances": "1", + "goals": "1", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "CL", + "clubId": "583", + "seasonId": "18/19", + "competitionName": "UEFA Champions League", + "appearances": "6", + "goals": "5", + "assists": "2", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "532'" + }, + { + "competitionId": "FRCH", + "clubId": "583", + "seasonId": "18/19", + "competitionName": "Trophée des Champions", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "14'" + }, + { + "competitionId": "FR1", + "clubId": "583", + "seasonId": "17/18", + "competitionName": "Ligue 1", + "appearances": "20", + "goals": "19", + "assists": "13", + "yellowCards": "4", + "secondYellowCards": "1", + "redCards": "-", + "minutesPlayed": "1.797'" + }, + { + "competitionId": "CL", + "clubId": "583", + "seasonId": "17/18", + "competitionName": "UEFA Champions League", + "appearances": "7", + "goals": "6", + "assists": "3", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "630'" + }, + { + "competitionId": "FRL", + "clubId": "583", + "seasonId": "17/18", + "competitionName": "Coupe de la Ligue", + "appearances": "2", + "goals": "1", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "FRC", + "clubId": "583", + "seasonId": "17/18", + "competitionName": "Coupe de France", + "appearances": "1", + "goals": "2", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "16/17", + "competitionName": "Copa del Rey", + "appearances": "6", + "goals": "3", + "assists": "3", + "yellowCards": "3", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "522'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "16/17", + "competitionName": "LaLiga", + "appearances": "30", + "goals": "13", + "assists": "14", + "yellowCards": "6", + "secondYellowCards": "-", + "redCards": "1", + "minutesPlayed": "2.653'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "16/17", + "competitionName": "UEFA Champions League", + "appearances": "9", + "goals": "4", + "assists": "9", + "yellowCards": "5", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "797'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "15/16", + "competitionName": "Copa del Rey", + "appearances": "5", + "goals": "4", + "assists": "2", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "480'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "15/16", + "competitionName": "LaLiga", + "appearances": "34", + "goals": "24", + "assists": "16", + "yellowCards": "6", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "3.056'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "15/16", + "competitionName": "UEFA Champions League", + "appearances": "9", + "goals": "3", + "assists": "5", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "810'" + }, + { + "competitionId": "KLUB", + "clubId": "131", + "seasonId": "15/16", + "competitionName": "Club World Cup", + "appearances": "1", + "goals": "-", + "assists": "2", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "88'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "14/15", + "competitionName": "UEFA Champions League", + "appearances": "12", + "goals": "10", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.025'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "14/15", + "competitionName": "Copa del Rey", + "appearances": "6", + "goals": "7", + "assists": "1", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "503'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "14/15", + "competitionName": "LaLiga", + "appearances": "33", + "goals": "22", + "assists": "9", + "yellowCards": "6", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.571'" + }, + { + "competitionId": "ES1", + "clubId": "131", + "seasonId": "13/14", + "competitionName": "LaLiga", + "appearances": "26", + "goals": "9", + "assists": "10", + "yellowCards": "6", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.737'" + }, + { + "competitionId": "CDR", + "clubId": "131", + "seasonId": "13/14", + "competitionName": "Copa del Rey", + "appearances": "3", + "goals": "1", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "206'" + }, + { + "competitionId": "CL", + "clubId": "131", + "seasonId": "13/14", + "competitionName": "UEFA Champions League", + "appearances": "10", + "goals": "4", + "assists": "5", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "776'" + }, + { + "competitionId": "SUC", + "clubId": "131", + "seasonId": "13/14", + "competitionName": "Supercopa", + "appearances": "2", + "goals": "1", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "120'" + }, + { + "competitionId": "BRA1", + "clubId": "221", + "seasonId": "2013", + "competitionName": "Série A", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "BRC", + "clubId": "221", + "seasonId": "2013", + "competitionName": "Copa do Brasil", + "appearances": "4", + "goals": "1", + "assists": "2", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "360'" + }, + { + "competitionId": "BCPF", + "clubId": "221", + "seasonId": "2013", + "competitionName": "Paulistão A1 - Fase Final", + "appearances": "4", + "goals": "-", + "assists": "1", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "360'" + }, + { + "competitionId": "BCP1", + "clubId": "221", + "seasonId": "2013", + "competitionName": "Paulistão A1 - Primeira Fase", + "appearances": "14", + "goals": "12", + "assists": "5", + "yellowCards": "4", + "secondYellowCards": "-", + "redCards": "1", + "minutesPlayed": "1.215'" + }, + { + "competitionId": "BRA1", + "clubId": "221", + "seasonId": "2012", + "competitionName": "Série A", + "appearances": "17", + "goals": "14", + "assists": "7", + "yellowCards": "5", + "secondYellowCards": "-", + "redCards": "1", + "minutesPlayed": "1.493'" + }, + { + "competitionId": "RECO", + "clubId": "221", + "seasonId": "2012", + "competitionName": "Recopa Sudamericana", + "appearances": "2", + "goals": "1", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "CLI", + "clubId": "221", + "seasonId": "2012", + "competitionName": "Libertadores", + "appearances": "12", + "goals": "8", + "assists": "3", + "yellowCards": "6", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.110'" + }, + { + "competitionId": "BCPF", + "clubId": "221", + "seasonId": "2012", + "competitionName": "Paulistão A1 - Fase Final", + "appearances": "4", + "goals": "8", + "assists": "1", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "360'" + }, + { + "competitionId": "BCP1", + "clubId": "221", + "seasonId": "2012", + "competitionName": "Paulistão A1 - Primeira Fase", + "appearances": "12", + "goals": "12", + "assists": "6", + "yellowCards": "3", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.080'" + }, + { + "competitionId": "KLUB", + "clubId": "221", + "seasonId": "11/12", + "competitionName": "Club World Cup", + "appearances": "2", + "goals": "1", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "BRA1", + "clubId": "221", + "seasonId": "2011", + "competitionName": "Série A", + "appearances": "21", + "goals": "13", + "assists": "5", + "yellowCards": "8", + "secondYellowCards": "1", + "redCards": "-", + "minutesPlayed": "1.882'" + }, + { + "competitionId": "CLI", + "clubId": "221", + "seasonId": "2011", + "competitionName": "Libertadores", + "appearances": "13", + "goals": "6", + "assists": "3", + "yellowCards": "5", + "secondYellowCards": "1", + "redCards": "-", + "minutesPlayed": "1.133'" + }, + { + "competitionId": "BCPF", + "clubId": "221", + "seasonId": "2011", + "competitionName": "Paulistão A1 - Fase Final", + "appearances": "4", + "goals": "2", + "assists": "1", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "360'" + }, + { + "competitionId": "BCP1", + "clubId": "221", + "seasonId": "2011", + "competitionName": "Paulistão A1 - Primeira Fase", + "appearances": "7", + "goals": "2", + "assists": "1", + "yellowCards": "3", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "630'" + }, + { + "competitionId": "BRA1", + "clubId": "221", + "seasonId": "2010", + "competitionName": "Série A", + "appearances": "31", + "goals": "17", + "assists": "9", + "yellowCards": "11", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.654'" + }, + { + "competitionId": "CS", + "clubId": "221", + "seasonId": "2010", + "competitionName": "Copa Sudamericana", + "appearances": "2", + "goals": "-", + "assists": "1", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "135'" + }, + { + "competitionId": "BRC", + "clubId": "221", + "seasonId": "2010", + "competitionName": "Copa do Brasil", + "appearances": "8", + "goals": "11", + "assists": "5", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "688'" + }, + { + "competitionId": "BCPF", + "clubId": "221", + "seasonId": "2010", + "competitionName": "Paulistão A1 - Fase Final", + "appearances": "4", + "goals": "4", + "assists": "1", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "284'" + }, + { + "competitionId": "BCP1", + "clubId": "221", + "seasonId": "2010", + "competitionName": "Paulistão A1 - Primeira Fase", + "appearances": "15", + "goals": "10", + "assists": "4", + "yellowCards": "4", + "secondYellowCards": "-", + "redCards": "1", + "minutesPlayed": "1.266'" + }, + { + "competitionId": "BRA1", + "clubId": "221", + "seasonId": "2009", + "competitionName": "Série A", + "appearances": "33", + "goals": "10", + "assists": "6", + "yellowCards": "6", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.626'" + }, + { + "competitionId": "BCPF", + "clubId": "221", + "seasonId": "2009", + "competitionName": "Paulistão A1 - Fase Final", + "appearances": "4", + "goals": "1", + "assists": "1", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "298'" + }, + { + "competitionId": "BRC", + "clubId": "221", + "seasonId": "2009", + "competitionName": "Copa do Brasil", + "appearances": "3", + "goals": "1", + "assists": "1", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "223'" + }, + { + "competitionId": "BCP1", + "clubId": "221", + "seasonId": "2009", + "competitionName": "Paulistão A1 - Primeira Fase", + "appearances": "8", + "goals": "2", + "assists": "1", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "531'" + } + ] +} \ No newline at end of file diff --git a/tests/data/players/stats/8198.json b/tests/data/players/stats/8198.json new file mode 100644 index 0000000..48d9dd3 --- /dev/null +++ b/tests/data/players/stats/8198.json @@ -0,0 +1,1240 @@ +{ + "id": "8198", + "stats": [ + { + "competitionId": "SA1", + "clubId": "18544", + "seasonId": "24/25", + "competitionName": "Saudi Pro League", + "appearances": "13", + "goals": "11", + "assists": "2", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.163'" + }, + { + "competitionId": "ACLE", + "clubId": "18544", + "seasonId": "24/25", + "competitionName": "AFC Champions League Elite", + "appearances": "4", + "goals": "4", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "333'" + }, + { + "competitionId": "SAKC", + "clubId": "18544", + "seasonId": "24/25", + "competitionName": "King's Cup", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "SASS", + "clubId": "18544", + "seasonId": "24/25", + "competitionName": "Saudi Super Cup", + "appearances": "2", + "goals": "2", + "assists": "1", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "171'" + }, + { + "competitionId": "SAKC", + "clubId": "18544", + "seasonId": "23/24", + "competitionName": "King's Cup", + "appearances": "4", + "goals": "3", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "412'" + }, + { + "competitionId": "SA1", + "clubId": "18544", + "seasonId": "23/24", + "competitionName": "Saudi Pro League", + "appearances": "31", + "goals": "35", + "assists": "11", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.648'" + }, + { + "competitionId": "SASS", + "clubId": "18544", + "seasonId": "23/24", + "competitionName": "Saudi Super Cup", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "1", + "minutesPlayed": "86'" + }, + { + "competitionId": "AFCL", + "clubId": "18544", + "seasonId": "23/24", + "competitionName": "AFC Champions League", + "appearances": "8", + "goals": "6", + "assists": "1", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "738'" + }, + { + "competitionId": "ACLQ", + "clubId": "18544", + "seasonId": "23/24", + "competitionName": "AFC CL-Qualification", + "appearances": "1", + "goals": "-", + "assists": "1", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "SA1", + "clubId": "18544", + "seasonId": "22/23", + "competitionName": "Saudi Pro League", + "appearances": "16", + "goals": "14", + "assists": "2", + "yellowCards": "3", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.434'" + }, + { + "competitionId": "SAKC", + "clubId": "18544", + "seasonId": "22/23", + "competitionName": "King's Cup", + "appearances": "2", + "goals": "-", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "177'" + }, + { + "competitionId": "SASS", + "clubId": "18544", + "seasonId": "22/23", + "competitionName": "Saudi Super Cup", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "GB1", + "clubId": "985", + "seasonId": "22/23", + "competitionName": "Premier League", + "appearances": "10", + "goals": "1", + "assists": "-", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "520'" + }, + { + "competitionId": "EL", + "clubId": "985", + "seasonId": "22/23", + "competitionName": "Europa League", + "appearances": "6", + "goals": "2", + "assists": "2", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "531'" + }, + { + "competitionId": "GB1", + "clubId": "985", + "seasonId": "21/22", + "competitionName": "Premier League", + "appearances": "30", + "goals": "18", + "assists": "3", + "yellowCards": "8", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.459'" + }, + { + "competitionId": "CL", + "clubId": "985", + "seasonId": "21/22", + "competitionName": "UEFA Champions League", + "appearances": "7", + "goals": "6", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "612'" + }, + { + "competitionId": "FAC", + "clubId": "985", + "seasonId": "21/22", + "competitionName": "FA Cup", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "120'" + }, + { + "competitionId": "IT1", + "clubId": "506", + "seasonId": "21/22", + "competitionName": "Serie A", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "30'" + }, + { + "competitionId": "IT1", + "clubId": "506", + "seasonId": "20/21", + "competitionName": "Serie A", + "appearances": "33", + "goals": "29", + "assists": "2", + "yellowCards": "3", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.803'" + }, + { + "competitionId": "CIT", + "clubId": "506", + "seasonId": "20/21", + "competitionName": "Italy Cup", + "appearances": "4", + "goals": "2", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "288'" + }, + { + "competitionId": "CL", + "clubId": "506", + "seasonId": "20/21", + "competitionName": "UEFA Champions League", + "appearances": "6", + "goals": "4", + "assists": "2", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "570'" + }, + { + "competitionId": "SCI", + "clubId": "506", + "seasonId": "20/21", + "competitionName": "Supercoppa Italiana", + "appearances": "1", + "goals": "1", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "CL", + "clubId": "506", + "seasonId": "19/20", + "competitionName": "UEFA Champions League", + "appearances": "8", + "goals": "4", + "assists": "1", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "712'" + }, + { + "competitionId": "IT1", + "clubId": "506", + "seasonId": "19/20", + "competitionName": "Serie A", + "appearances": "33", + "goals": "31", + "assists": "6", + "yellowCards": "3", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.919'" + }, + { + "competitionId": "CIT", + "clubId": "506", + "seasonId": "19/20", + "competitionName": "Italy Cup", + "appearances": "4", + "goals": "2", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "360'" + }, + { + "competitionId": "SCI", + "clubId": "506", + "seasonId": "19/20", + "competitionName": "Supercoppa Italiana", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "IT1", + "clubId": "506", + "seasonId": "18/19", + "competitionName": "Serie A", + "appearances": "31", + "goals": "21", + "assists": "9", + "yellowCards": "3", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.689'" + }, + { + "competitionId": "CL", + "clubId": "506", + "seasonId": "18/19", + "competitionName": "UEFA Champions League", + "appearances": "9", + "goals": "6", + "assists": "2", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "1", + "minutesPlayed": "749'" + }, + { + "competitionId": "CIT", + "clubId": "506", + "seasonId": "18/19", + "competitionName": "Italy Cup", + "appearances": "2", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "118'" + }, + { + "competitionId": "SCI", + "clubId": "506", + "seasonId": "18/19", + "competitionName": "Supercoppa Italiana", + "appearances": "1", + "goals": "1", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "CL", + "clubId": "418", + "seasonId": "17/18", + "competitionName": "UEFA Champions League", + "appearances": "13", + "goals": "15", + "assists": "3", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.170'" + }, + { + "competitionId": "ES1", + "clubId": "418", + "seasonId": "17/18", + "competitionName": "LaLiga", + "appearances": "27", + "goals": "26", + "assists": "5", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.297'" + }, + { + "competitionId": "KLUB", + "clubId": "418", + "seasonId": "17/18", + "competitionName": "Club World Cup", + "appearances": "2", + "goals": "2", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "SUC", + "clubId": "418", + "seasonId": "17/18", + "competitionName": "Supercopa", + "appearances": "1", + "goals": "1", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "1", + "redCards": "-", + "minutesPlayed": "24'" + }, + { + "competitionId": "USC", + "clubId": "418", + "seasonId": "17/18", + "competitionName": "UEFA Super Cup", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "7'" + }, + { + "competitionId": "CL", + "clubId": "418", + "seasonId": "16/17", + "competitionName": "UEFA Champions League", + "appearances": "13", + "goals": "12", + "assists": "6", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.200'" + }, + { + "competitionId": "ES1", + "clubId": "418", + "seasonId": "16/17", + "competitionName": "LaLiga", + "appearances": "29", + "goals": "25", + "assists": "6", + "yellowCards": "4", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.544'" + }, + { + "competitionId": "CDR", + "clubId": "418", + "seasonId": "16/17", + "competitionName": "Copa del Rey", + "appearances": "2", + "goals": "1", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "KLUB", + "clubId": "418", + "seasonId": "16/17", + "competitionName": "Club World Cup", + "appearances": "2", + "goals": "4", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "202'" + }, + { + "competitionId": "CL", + "clubId": "418", + "seasonId": "15/16", + "competitionName": "UEFA Champions League", + "appearances": "12", + "goals": "16", + "assists": "4", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.109'" + }, + { + "competitionId": "ES1", + "clubId": "418", + "seasonId": "15/16", + "competitionName": "LaLiga", + "appearances": "36", + "goals": "35", + "assists": "11", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "3.184'" + }, + { + "competitionId": "ES1", + "clubId": "418", + "seasonId": "14/15", + "competitionName": "LaLiga", + "appearances": "35", + "goals": "48", + "assists": "17", + "yellowCards": "4", + "secondYellowCards": "-", + "redCards": "1", + "minutesPlayed": "3.099'" + }, + { + "competitionId": "CL", + "clubId": "418", + "seasonId": "14/15", + "competitionName": "UEFA Champions League", + "appearances": "12", + "goals": "10", + "assists": "4", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.065'" + }, + { + "competitionId": "CDR", + "clubId": "418", + "seasonId": "14/15", + "competitionName": "Copa del Rey", + "appearances": "2", + "goals": "1", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "117'" + }, + { + "competitionId": "KLUB", + "clubId": "418", + "seasonId": "14/15", + "competitionName": "Club World Cup", + "appearances": "2", + "goals": "-", + "assists": "2", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "SUC", + "clubId": "418", + "seasonId": "14/15", + "competitionName": "Supercopa", + "appearances": "2", + "goals": "-", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "USC", + "clubId": "418", + "seasonId": "14/15", + "competitionName": "UEFA Super Cup", + "appearances": "1", + "goals": "2", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "CL", + "clubId": "418", + "seasonId": "13/14", + "competitionName": "UEFA Champions League", + "appearances": "11", + "goals": "17", + "assists": "5", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "993'" + }, + { + "competitionId": "ES1", + "clubId": "418", + "seasonId": "13/14", + "competitionName": "LaLiga", + "appearances": "30", + "goals": "31", + "assists": "11", + "yellowCards": "4", + "secondYellowCards": "-", + "redCards": "1", + "minutesPlayed": "2.540'" + }, + { + "competitionId": "CDR", + "clubId": "418", + "seasonId": "13/14", + "competitionName": "Copa del Rey", + "appearances": "6", + "goals": "3", + "assists": "1", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "497'" + }, + { + "competitionId": "CDR", + "clubId": "418", + "seasonId": "12/13", + "competitionName": "Copa del Rey", + "appearances": "7", + "goals": "7", + "assists": "1", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "1", + "minutesPlayed": "655'" + }, + { + "competitionId": "ES1", + "clubId": "418", + "seasonId": "12/13", + "competitionName": "LaLiga", + "appearances": "34", + "goals": "34", + "assists": "11", + "yellowCards": "9", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.717'" + }, + { + "competitionId": "CL", + "clubId": "418", + "seasonId": "12/13", + "competitionName": "UEFA Champions League", + "appearances": "12", + "goals": "12", + "assists": "1", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.080'" + }, + { + "competitionId": "SUC", + "clubId": "418", + "seasonId": "12/13", + "competitionName": "Supercopa", + "appearances": "2", + "goals": "2", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "ES1", + "clubId": "418", + "seasonId": "11/12", + "competitionName": "LaLiga", + "appearances": "38", + "goals": "46", + "assists": "12", + "yellowCards": "4", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "3.354'" + }, + { + "competitionId": "CL", + "clubId": "418", + "seasonId": "11/12", + "competitionName": "UEFA Champions League", + "appearances": "10", + "goals": "10", + "assists": "3", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "930'" + }, + { + "competitionId": "CDR", + "clubId": "418", + "seasonId": "11/12", + "competitionName": "Copa del Rey", + "appearances": "5", + "goals": "3", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "438'" + }, + { + "competitionId": "SUC", + "clubId": "418", + "seasonId": "11/12", + "competitionName": "Supercopa", + "appearances": "2", + "goals": "1", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "ES1", + "clubId": "418", + "seasonId": "10/11", + "competitionName": "LaLiga", + "appearances": "34", + "goals": "40", + "assists": "13", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.913'" + }, + { + "competitionId": "CL", + "clubId": "418", + "seasonId": "10/11", + "competitionName": "UEFA Champions League", + "appearances": "12", + "goals": "6", + "assists": "4", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.021'" + }, + { + "competitionId": "CDR", + "clubId": "418", + "seasonId": "10/11", + "competitionName": "Copa del Rey", + "appearances": "8", + "goals": "7", + "assists": "1", + "yellowCards": "3", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "684'" + }, + { + "competitionId": "ES1", + "clubId": "418", + "seasonId": "09/10", + "competitionName": "LaLiga", + "appearances": "29", + "goals": "26", + "assists": "9", + "yellowCards": "3", + "secondYellowCards": "1", + "redCards": "1", + "minutesPlayed": "2.465'" + }, + { + "competitionId": "CL", + "clubId": "418", + "seasonId": "09/10", + "competitionName": "UEFA Champions League", + "appearances": "6", + "goals": "7", + "assists": "1", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "450'" + }, + { + "competitionId": "CL", + "clubId": "985", + "seasonId": "08/09", + "competitionName": "UEFA Champions League", + "appearances": "12", + "goals": "4", + "assists": "3", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.010'" + }, + { + "competitionId": "GB1", + "clubId": "985", + "seasonId": "08/09", + "competitionName": "Premier League", + "appearances": "33", + "goals": "18", + "assists": "7", + "yellowCards": "5", + "secondYellowCards": "1", + "redCards": "-", + "minutesPlayed": "2.745'" + }, + { + "competitionId": "CGB", + "clubId": "985", + "seasonId": "08/09", + "competitionName": "League Cup", + "appearances": "4", + "goals": "2", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "240'" + }, + { + "competitionId": "FAC", + "clubId": "985", + "seasonId": "08/09", + "competitionName": "FA Cup", + "appearances": "2", + "goals": "1", + "assists": "1", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "144'" + }, + { + "competitionId": "KLUB", + "clubId": "985", + "seasonId": "08/09", + "competitionName": "Club World Cup", + "appearances": "2", + "goals": "1", + "assists": "1", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "CL", + "clubId": "985", + "seasonId": "07/08", + "competitionName": "UEFA Champions League", + "appearances": "11", + "goals": "8", + "assists": "1", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.017'" + }, + { + "competitionId": "GB1", + "clubId": "985", + "seasonId": "07/08", + "competitionName": "Premier League", + "appearances": "34", + "goals": "31", + "assists": "7", + "yellowCards": "5", + "secondYellowCards": "-", + "redCards": "1", + "minutesPlayed": "2.747'" + }, + { + "competitionId": "FAC", + "clubId": "985", + "seasonId": "07/08", + "competitionName": "FA Cup", + "appearances": "3", + "goals": "3", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "270'" + }, + { + "competitionId": "GBCS", + "clubId": "985", + "seasonId": "07/08", + "competitionName": "Community Shield", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "120'" + }, + { + "competitionId": "FAC", + "clubId": "985", + "seasonId": "06/07", + "competitionName": "FA Cup", + "appearances": "7", + "goals": "3", + "assists": "1", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "558'" + }, + { + "competitionId": "GB1", + "clubId": "985", + "seasonId": "06/07", + "competitionName": "Premier League", + "appearances": "34", + "goals": "17", + "assists": "8", + "yellowCards": "2", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.788'" + }, + { + "competitionId": "CL", + "clubId": "985", + "seasonId": "06/07", + "competitionName": "UEFA Champions League", + "appearances": "11", + "goals": "3", + "assists": "5", + "yellowCards": "3", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "951'" + }, + { + "competitionId": "CGB", + "clubId": "985", + "seasonId": "06/07", + "competitionName": "League Cup", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "90'" + }, + { + "competitionId": "GB1", + "clubId": "985", + "seasonId": "05/06", + "competitionName": "Premier League", + "appearances": "33", + "goals": "9", + "assists": "6", + "yellowCards": "8", + "secondYellowCards": "-", + "redCards": "1", + "minutesPlayed": "2.286'" + }, + { + "competitionId": "CGB", + "clubId": "985", + "seasonId": "05/06", + "competitionName": "League Cup", + "appearances": "4", + "goals": "2", + "assists": "1", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "343'" + }, + { + "competitionId": "FAC", + "clubId": "985", + "seasonId": "05/06", + "competitionName": "FA Cup", + "appearances": "2", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "121'" + }, + { + "competitionId": "CL", + "clubId": "985", + "seasonId": "05/06", + "competitionName": "UEFA Champions League", + "appearances": "6", + "goals": "-", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "506'" + }, + { + "competitionId": "CLQ", + "clubId": "985", + "seasonId": "05/06", + "competitionName": "Champions League Qu.", + "appearances": "2", + "goals": "1", + "assists": "1", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "157'" + }, + { + "competitionId": "FAC", + "clubId": "985", + "seasonId": "04/05", + "competitionName": "FA Cup", + "appearances": "7", + "goals": "4", + "assists": "3", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "545'" + }, + { + "competitionId": "GB1", + "clubId": "985", + "seasonId": "04/05", + "competitionName": "Premier League", + "appearances": "33", + "goals": "5", + "assists": "4", + "yellowCards": "3", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "2.425'" + }, + { + "competitionId": "CL", + "clubId": "985", + "seasonId": "04/05", + "competitionName": "UEFA Champions League", + "appearances": "7", + "goals": "-", + "assists": "2", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "502'" + }, + { + "competitionId": "CGB", + "clubId": "985", + "seasonId": "04/05", + "competitionName": "League Cup", + "appearances": "2", + "goals": "-", + "assists": "-", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "180'" + }, + { + "competitionId": "CLQ", + "clubId": "985", + "seasonId": "04/05", + "competitionName": "Champions League Qu.", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "64'" + }, + { + "competitionId": "FAC", + "clubId": "985", + "seasonId": "03/04", + "competitionName": "FA Cup", + "appearances": "5", + "goals": "2", + "assists": "3", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "436'" + }, + { + "competitionId": "GB1", + "clubId": "985", + "seasonId": "03/04", + "competitionName": "Premier League", + "appearances": "29", + "goals": "4", + "assists": "4", + "yellowCards": "3", + "secondYellowCards": "1", + "redCards": "-", + "minutesPlayed": "1.551'" + }, + { + "competitionId": "CL", + "clubId": "985", + "seasonId": "03/04", + "competitionName": "UEFA Champions League", + "appearances": "5", + "goals": "-", + "assists": "1", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "291'" + }, + { + "competitionId": "CGB", + "clubId": "985", + "seasonId": "03/04", + "competitionName": "League Cup", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "77'" + }, + { + "competitionId": "PO1", + "clubId": "336", + "seasonId": "02/03", + "competitionName": "SuperLiga", + "appearances": "25", + "goals": "3", + "assists": "5", + "yellowCards": "1", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "1.069'" + }, + { + "competitionId": "POPO", + "clubId": "336", + "seasonId": "02/03", + "competitionName": "Taça de Portugal", + "appearances": "3", + "goals": "2", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "172'" + }, + { + "competitionId": "UEFA", + "clubId": "336", + "seasonId": "02/03", + "competitionName": "UEFA Cup", + "appearances": "2", + "goals": "-", + "assists": "1", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "119'" + }, + { + "competitionId": "POSU", + "clubId": "336", + "seasonId": "02/03", + "competitionName": "Supertaça", + "appearances": "-", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "-" + }, + { + "competitionId": "CLQ", + "clubId": "336", + "seasonId": "02/03", + "competitionName": "Champions League Qu.", + "appearances": "1", + "goals": "-", + "assists": "-", + "yellowCards": "-", + "secondYellowCards": "-", + "redCards": "-", + "minutesPlayed": "32'" + } + ] +} \ No newline at end of file diff --git a/tests/data/players/transfers/28003.json b/tests/data/players/transfers/28003.json new file mode 100644 index 0000000..f65d379 --- /dev/null +++ b/tests/data/players/transfers/28003.json @@ -0,0 +1,137 @@ +{ + "id": "28003", + "transfers": [ + { + "id": "4418847", + "clubFrom": { + "id": "583", + "name": "Paris SG" + }, + "clubTo": { + "id": "69261", + "name": "Miami" + }, + "date": "Jul 15, 2023", + "upcoming": false, + "season": "23/24", + "marketValue": "€35.00m", + "fee": "free transfer" + }, + { + "id": "3489998", + "clubFrom": { + "id": "131", + "name": "Barcelona" + }, + "clubTo": { + "id": "583", + "name": "Paris SG" + }, + "date": "Aug 10, 2021", + "upcoming": false, + "season": "21/22", + "marketValue": "€80.00m", + "fee": "free transfer" + }, + { + "id": "48265", + "clubFrom": { + "id": "2464", + "name": "Barcelona B" + }, + "clubTo": { + "id": "131", + "name": "Barcelona" + }, + "date": "Jul 1, 2005", + "upcoming": false, + "season": "05/06", + "marketValue": "€3.00m", + "fee": "-" + }, + { + "id": "153557", + "clubFrom": { + "id": "63954", + "name": "Barcelona C" + }, + "clubTo": { + "id": "2464", + "name": "Barcelona B" + }, + "date": "Mar 5, 2004", + "upcoming": false, + "season": "03/04", + "marketValue": "-", + "fee": "-" + }, + { + "id": "1993882", + "clubFrom": { + "id": "2470", + "name": "Barça U19" + }, + "clubTo": { + "id": "63954", + "name": "Barcelona C" + }, + "date": "Nov 28, 2003", + "upcoming": false, + "season": "03/04", + "marketValue": "-", + "fee": "-" + }, + { + "id": "1136539", + "clubFrom": { + "id": "14321", + "name": "Barça U16" + }, + "clubTo": { + "id": "2470", + "name": "Barça U19" + }, + "date": "Sep 13, 2003", + "upcoming": false, + "season": "03/04", + "marketValue": "-", + "fee": "-" + }, + { + "id": "2326361", + "clubFrom": { + "id": "70295", + "name": "Barça Youth" + }, + "clubTo": { + "id": "14321", + "name": "Barça U16" + }, + "date": "Jul 1, 2002", + "upcoming": false, + "season": "02/03", + "marketValue": "-", + "fee": "-" + }, + { + "id": "181327", + "clubFrom": { + "id": "92364", + "name": "Newell's JV" + }, + "clubTo": { + "id": "70295", + "name": "Barça Youth" + }, + "date": "Jul 1, 2000", + "upcoming": false, + "season": "00/01", + "marketValue": "-", + "fee": "free transfer" + } + ], + "youthClubs": [ + "Grandoli FC (1992-1995)", + "Newell's Old Boys (1995-2000)" + ] +} \ No newline at end of file diff --git a/tests/data/players/transfers/3373.json b/tests/data/players/transfers/3373.json new file mode 100644 index 0000000..f22e271 --- /dev/null +++ b/tests/data/players/transfers/3373.json @@ -0,0 +1,166 @@ +{ + "id": "3373", + "transfers": [ + { + "id": "1695687", + "clubFrom": { + "id": "515", + "name": "Without Club" + }, + "clubTo": { + "id": "123", + "name": "Retired" + }, + "date": "Jan 16, 2018", + "upcoming": false, + "season": "17/18", + "marketValue": "-", + "fee": "-" + }, + { + "id": "1352957", + "clubFrom": { + "id": "2462", + "name": "Fluminense" + }, + "clubTo": { + "id": "515", + "name": "Without Club" + }, + "date": "Sep 29, 2015", + "upcoming": false, + "season": "15/16", + "marketValue": "€1.50m", + "fee": "-" + }, + { + "id": "1264183", + "clubFrom": { + "id": "4961", + "name": "Querétaro FC" + }, + "clubTo": { + "id": "2462", + "name": "Fluminense" + }, + "date": "Jul 11, 2015", + "upcoming": false, + "season": "15/16", + "marketValue": "€1.50m", + "fee": "free transfer" + }, + { + "id": "1097798", + "clubFrom": { + "id": "330", + "name": "Atlético-MG" + }, + "clubTo": { + "id": "4961", + "name": "Querétaro FC" + }, + "date": "Sep 5, 2014", + "upcoming": false, + "season": "14/15", + "marketValue": "€1.50m", + "fee": "free transfer" + }, + { + "id": "723963", + "clubFrom": { + "id": "614", + "name": "Flamengo" + }, + "clubTo": { + "id": "330", + "name": "Atlético-MG" + }, + "date": "Jun 4, 2012", + "upcoming": false, + "season": "11/12", + "marketValue": "€4.00m", + "fee": "free transfer" + }, + { + "id": "521934", + "clubFrom": { + "id": "5", + "name": "AC Milan" + }, + "clubTo": { + "id": "614", + "name": "Flamengo" + }, + "date": "Jan 11, 2011", + "upcoming": false, + "season": "10/11", + "marketValue": "€27.50m", + "fee": "€3.00m" + }, + { + "id": "211889", + "clubFrom": { + "id": "131", + "name": "Barcelona" + }, + "clubTo": { + "id": "5", + "name": "AC Milan" + }, + "date": "Jul 15, 2008", + "upcoming": false, + "season": "08/09", + "marketValue": "€35.00m", + "fee": "€24.15m" + }, + { + "id": "10553", + "clubFrom": { + "id": "583", + "name": "Paris SG" + }, + "clubTo": { + "id": "131", + "name": "Barcelona" + }, + "date": "Jul 19, 2003", + "upcoming": false, + "season": "03/04", + "marketValue": "-", + "fee": "€32.25m" + }, + { + "id": "29908", + "clubFrom": { + "id": "210", + "name": "Grêmio" + }, + "clubTo": { + "id": "583", + "name": "Paris SG" + }, + "date": "Jul 1, 2001", + "upcoming": false, + "season": "01/02", + "marketValue": "-", + "fee": "€5.00m" + }, + { + "id": "29909", + "clubFrom": { + "id": "14704", + "name": "Grêmio B" + }, + "clubTo": { + "id": "210", + "name": "Grêmio" + }, + "date": "Jan 1, 1998", + "upcoming": false, + "season": "97/98", + "marketValue": "-", + "fee": "-" + } + ], + "youthClubs": null +} \ No newline at end of file diff --git a/tests/data/players/transfers/68290.json b/tests/data/players/transfers/68290.json new file mode 100644 index 0000000..fc1ff19 --- /dev/null +++ b/tests/data/players/transfers/68290.json @@ -0,0 +1,70 @@ +{ + "id": "68290", + "transfers": [ + { + "id": "4585197", + "clubFrom": { + "id": "583", + "name": "Paris SG" + }, + "clubTo": { + "id": "1114", + "name": "Al-Hilal" + }, + "date": "Aug 15, 2023", + "upcoming": false, + "season": "23/24", + "marketValue": "€60.00m", + "fee": "€90.00m" + }, + { + "id": "1866385", + "clubFrom": { + "id": "131", + "name": "Barcelona" + }, + "clubTo": { + "id": "583", + "name": "Paris SG" + }, + "date": "Aug 3, 2017", + "upcoming": false, + "season": "17/18", + "marketValue": "€100.00m", + "fee": "€222.00m" + }, + { + "id": "874846", + "clubFrom": { + "id": "221", + "name": "Santos" + }, + "clubTo": { + "id": "131", + "name": "Barcelona" + }, + "date": "Jul 1, 2013", + "upcoming": false, + "season": "13/14", + "marketValue": "€50.00m", + "fee": "€88.00m" + }, + { + "id": "271376", + "clubFrom": { + "id": "9540", + "name": "Santos U20" + }, + "clubTo": { + "id": "221", + "name": "Santos" + }, + "date": "Jan 1, 2009", + "upcoming": false, + "season": "08/09", + "marketValue": "-", + "fee": "-" + } + ], + "youthClubs": null +} \ No newline at end of file diff --git a/tests/data/players/transfers/8198.json b/tests/data/players/transfers/8198.json new file mode 100644 index 0000000..c2779d7 --- /dev/null +++ b/tests/data/players/transfers/8198.json @@ -0,0 +1,201 @@ +{ + "id": "8198", + "transfers": [ + { + "id": "4197140", + "clubFrom": { + "id": "515", + "name": "Without Club" + }, + "clubTo": { + "id": "18544", + "name": "Al-Nassr" + }, + "date": "Jan 1, 2023", + "upcoming": false, + "season": "22/23", + "marketValue": "€20.00m", + "fee": "-" + }, + { + "id": "4152208", + "clubFrom": { + "id": "985", + "name": "Man Utd" + }, + "clubTo": { + "id": "515", + "name": "Without Club" + }, + "date": "Nov 22, 2022", + "upcoming": false, + "season": "22/23", + "marketValue": "€20.00m", + "fee": "-" + }, + { + "id": "3527714", + "clubFrom": { + "id": "506", + "name": "Juventus" + }, + "clubTo": { + "id": "985", + "name": "Man Utd" + }, + "date": "Aug 31, 2021", + "upcoming": false, + "season": "21/22", + "marketValue": "€45.00m", + "fee": "€17.00m" + }, + { + "id": "2168965", + "clubFrom": { + "id": "418", + "name": "Real Madrid" + }, + "clubTo": { + "id": "506", + "name": "Juventus" + }, + "date": "Jul 10, 2018", + "upcoming": false, + "season": "18/19", + "marketValue": "€100.00m", + "fee": "€117.00m" + }, + { + "id": "308498", + "clubFrom": { + "id": "985", + "name": "Man Utd" + }, + "clubTo": { + "id": "418", + "name": "Real Madrid" + }, + "date": "Jul 6, 2009", + "upcoming": false, + "season": "09/10", + "marketValue": "€60.00m", + "fee": "€94.00m" + }, + { + "id": "12071", + "clubFrom": { + "id": "336", + "name": "Sporting CP" + }, + "clubTo": { + "id": "985", + "name": "Man Utd" + }, + "date": "Aug 12, 2003", + "upcoming": false, + "season": "03/04", + "marketValue": "-", + "fee": "€19.00m" + }, + { + "id": "23367", + "clubFrom": { + "id": "10283", + "name": "Sporting U19" + }, + "clubTo": { + "id": "336", + "name": "Sporting CP" + }, + "date": "Jul 1, 2002", + "upcoming": false, + "season": "02/03", + "marketValue": "-", + "fee": "-" + }, + { + "id": "1231081", + "clubFrom": { + "id": "48365", + "name": "Sporting U17" + }, + "clubTo": { + "id": "10283", + "name": "Sporting U19" + }, + "date": "Jul 1, 2000", + "upcoming": false, + "season": "00/01", + "marketValue": "-", + "fee": "-" + }, + { + "id": "1540403", + "clubFrom": { + "id": "53956", + "name": "Sporting Sub-15" + }, + "clubTo": { + "id": "48365", + "name": "Sporting U17" + }, + "date": "Jul 1, 1998", + "upcoming": false, + "season": "98/99", + "marketValue": "-", + "fee": "-" + }, + { + "id": "1680678", + "clubFrom": { + "id": "57926", + "name": "Nacional U15" + }, + "clubTo": { + "id": "53956", + "name": "Sporting Sub-15" + }, + "date": "Jul 1, 1997", + "upcoming": false, + "season": "97/98", + "marketValue": "-", + "fee": "?" + }, + { + "id": "3531985", + "clubFrom": { + "id": "63438", + "name": "Nacional Yth." + }, + "clubTo": { + "id": "57926", + "name": "Nacional U15" + }, + "date": "Jul 1, 1996", + "upcoming": false, + "season": "96/97", + "marketValue": "-", + "fee": "-" + }, + { + "id": "3927809", + "clubFrom": { + "id": "100646", + "name": "Andorinha Yth." + }, + "clubTo": { + "id": "63438", + "name": "Nacional Yth." + }, + "date": "Jul 1, 1995", + "upcoming": false, + "season": "95/96", + "marketValue": "-", + "fee": "free transfer" + } + ], + "youthClubs": [ + "CF Andorinha (1992-1995)", + "" + ] +} \ No newline at end of file diff --git a/tests/players/test_players_achievements.py b/tests/players/test_players_achievements.py deleted file mode 100644 index b3a317d..0000000 --- a/tests/players/test_players_achievements.py +++ /dev/null @@ -1,49 +0,0 @@ -from datetime import datetime - -import pytest -from fastapi import HTTPException -from schema import And, Optional, Schema - -from app.services.players.achievements import TransfermarktPlayerAchievements - - -def test_get_player_achievements_not_found(): - with pytest.raises(HTTPException): - TransfermarktPlayerAchievements(player_id="0") - - -@pytest.mark.parametrize("player_id", ["28003", "8198"]) -def test_get_player_achievements(player_id, len_greater_than_0, regex_integer, regex_date_mmm_dd_yyyy): - tfmkt = TransfermarktPlayerAchievements(player_id="28003") - result = tfmkt.get_player_achievements() - - expected_schema = Schema( - { - "id": And(str, regex_integer), - "achievements": [ - { - "title": And(str, len_greater_than_0), - "count": int, - "details": [ - { - "season": { - Optional("id"): And(str, regex_integer), - "name": And(str, len_greater_than_0), - }, - Optional("club"): { - Optional("id"): And(str, regex_integer), - Optional("name"): And(str, len_greater_than_0), - }, - Optional("competition"): { - Optional("id"): And(str, len_greater_than_0), - Optional("name"): And(str, len_greater_than_0), - }, - }, - ], - }, - ], - "updatedAt": datetime, - }, - ) - - assert expected_schema.validate(result) diff --git a/tests/players/test_players_injuries.py b/tests/players/test_players_injuries.py deleted file mode 100644 index 5155721..0000000 --- a/tests/players/test_players_injuries.py +++ /dev/null @@ -1,43 +0,0 @@ -from datetime import datetime - -import pytest -from fastapi import HTTPException -from schema import And, Optional, Schema - -from app.services.players.injuries import TransfermarktPlayerInjuries - - -def test_get_player_injuries_not_found(): - with pytest.raises(HTTPException): - TransfermarktPlayerInjuries(player_id="0") - - -@pytest.mark.parametrize( - "player_id,page_number", - [("28003", 1), ("28003", 2), ("28003", 3), ("28003", 999), ("8198", 1), ("8198", 999)], -) -def test_get_player_injuries(player_id, page_number, len_greater_than_0, regex_integer, regex_date_mmm_dd_yyyy): - tfmkt = TransfermarktPlayerInjuries(player_id=player_id, page_number=page_number) - result = tfmkt.get_player_injuries() - - expected_schema = Schema( - { - "id": And(str, regex_integer), - "pageNumber": int, - "lastPageNumber": int, - "injuries": [ - { - "season": And(str, len_greater_than_0), - "injury": And(str, len_greater_than_0), - "from": And(str, len_greater_than_0, regex_date_mmm_dd_yyyy), - Optional("until"): And(str, len_greater_than_0, regex_date_mmm_dd_yyyy), - "days": And(str, len_greater_than_0), - Optional("gamesMissed"): And(str, len_greater_than_0, regex_integer), - Optional("gamesMissedClubs"): list[str], - }, - ], - "updatedAt": datetime, - }, - ) - - assert expected_schema.validate(result) diff --git a/tests/players/test_players_market_value.py b/tests/players/test_players_market_value.py deleted file mode 100644 index afab6ca..0000000 --- a/tests/players/test_players_market_value.py +++ /dev/null @@ -1,62 +0,0 @@ -from datetime import datetime - -import pytest -from fastapi import HTTPException -from schema import And, Optional, Schema - -from app.services.players.market_value import TransfermarktPlayerMarketValue - - -def test_get_player_market_value_not_found(): - with pytest.raises(HTTPException): - TransfermarktPlayerMarketValue(player_id="0") - - -@pytest.mark.parametrize("player_id", ["8198", "28003"]) -def test_get_player_market_value_not_retired(player_id, len_greater_than_0): - tfmkt = TransfermarktPlayerMarketValue(player_id=player_id) - result = tfmkt.get_player_market_value() - - expected_schema = Schema( - { - "id": And(str, len_greater_than_0), - "marketValue": And(str, len_greater_than_0), - "marketValueHistory": [ - { - "age": And(str, len_greater_than_0), - "date": And(str, len_greater_than_0), - "clubName": And(str, len_greater_than_0), - "value": And(str, len_greater_than_0), - "clubID": And(str, len_greater_than_0), - }, - ], - "ranking": And(dict, lambda x: len(x) == 6), - "updatedAt": datetime, - }, - ) - - assert expected_schema.validate(result) - - -@pytest.mark.parametrize("player_id", ["3373"]) -def test_get_player_market_value_retired(player_id, len_greater_than_0): - tfmkt = TransfermarktPlayerMarketValue(player_id=player_id) - result = tfmkt.get_player_market_value() - - expected_schema = Schema( - { - "id": str, - "marketValueHistory": [ - { - "age": And(str, len_greater_than_0), - "date": And(str, len_greater_than_0), - "clubName": And(str, len_greater_than_0), - Optional("value"): And(str, len_greater_than_0), - "clubID": And(str, len_greater_than_0), - }, - ], - "updatedAt": datetime, - }, - ) - - assert expected_schema.validate(result) diff --git a/tests/players/test_players_profile.py b/tests/players/test_players_profile.py deleted file mode 100644 index 0eb3efd..0000000 --- a/tests/players/test_players_profile.py +++ /dev/null @@ -1,216 +0,0 @@ -from datetime import datetime - -import pytest -from fastapi import HTTPException -from schema import And, Schema - -from app.services.players.profile import TransfermarktPlayerProfile - - -def test_players_profile_not_found(): - with pytest.raises(HTTPException): - TransfermarktPlayerProfile(player_id="0") - - -def test_get_player_profile_28003(len_greater_than_0): - tfmk = TransfermarktPlayerProfile(player_id="28003") - result = tfmk.get_player_profile() - - expected_schema = Schema( - { - "id": And(str, len_greater_than_0), - "url": And(str, len_greater_than_0), - "name": And(str, len_greater_than_0), - "description": And(str, len_greater_than_0), - "nameInHomeCountry": And(str, len_greater_than_0), - "imageURL": And(str, len_greater_than_0), - "dateOfBirth": And(str, len_greater_than_0), - "placeOfBirth": { - "city": And(str, len_greater_than_0), - "country": And(str, len_greater_than_0), - }, - "age": And(str, len_greater_than_0), - "height": And(str, len_greater_than_0), - "citizenship": And(list, len_greater_than_0), - "isRetired": bool, - "position": { - "main": And(str, len_greater_than_0), - "other": And(list, len_greater_than_0), - }, - "foot": And(str, len_greater_than_0), - "shirtNumber": And(str, len_greater_than_0), - "club": { - "id": And(str, len_greater_than_0), - "name": And(str, len_greater_than_0), - "joined": And(str, len_greater_than_0), - "contractExpires": And(str, len_greater_than_0), - }, - "marketValue": And(str, len_greater_than_0), - "agent": { - "name": And(str, len_greater_than_0), - }, - "outfitter": And(str, len_greater_than_0), - "socialMedia": And(list, len_greater_than_0), - "relatives": [ - { - "id": And(str, len_greater_than_0), - "url": And(str, len_greater_than_0), - "name": And(str, len_greater_than_0), - "profileType": And(str, len_greater_than_0), - }, - ], - "updatedAt": datetime, - }, - ) - - assert expected_schema.validate(result) - - -def test_get_player_profile_8198(len_greater_than_0): - tfmk = TransfermarktPlayerProfile(player_id="8198") - result = tfmk.get_player_profile() - - expected_schema = Schema( - { - "id": And(str, len_greater_than_0), - "url": And(str, len_greater_than_0), - "name": And(str, len_greater_than_0), - "description": And(str, len_greater_than_0), - "fullName": And(str, len_greater_than_0), - "imageURL": And(str, len_greater_than_0), - "dateOfBirth": And(str, len_greater_than_0), - "placeOfBirth": { - "city": And(str, len_greater_than_0), - "country": And(str, len_greater_than_0), - }, - "age": And(str, len_greater_than_0), - "height": And(str, len_greater_than_0), - "citizenship": And(list, len_greater_than_0), - "isRetired": bool, - "position": { - "main": And(str, len_greater_than_0), - "other": And(list, len_greater_than_0), - }, - "foot": And(str, len_greater_than_0), - "shirtNumber": And(str, len_greater_than_0), - "club": { - "id": And(str, len_greater_than_0), - "name": And(str, len_greater_than_0), - "joined": And(str, len_greater_than_0), - "contractExpires": And(str, len_greater_than_0), - }, - "marketValue": And(str, len_greater_than_0), - "agent": { - "name": And(str, len_greater_than_0), - "url": And(str, len_greater_than_0), - }, - "outfitter": And(str, len_greater_than_0), - "socialMedia": And(list, len_greater_than_0), - "updatedAt": datetime, - }, - ) - - assert expected_schema.validate(result) - - -def test_get_player_profile_68290(len_greater_than_0): - tfmk = TransfermarktPlayerProfile(player_id="68290") - result = tfmk.get_player_profile() - - expected_schema = Schema( - { - "id": And(str, len_greater_than_0), - "url": And(str, len_greater_than_0), - "name": And(str, len_greater_than_0), - "description": And(str, len_greater_than_0), - "fullName": And(str, len_greater_than_0), - "imageURL": And(str, len_greater_than_0), - "dateOfBirth": And(str, len_greater_than_0), - "placeOfBirth": { - "city": And(str, len_greater_than_0), - "country": And(str, len_greater_than_0), - }, - "age": And(str, len_greater_than_0), - "height": And(str, len_greater_than_0), - "citizenship": And(list, len_greater_than_0), - "isRetired": bool, - "position": { - "main": And(str, len_greater_than_0), - "other": And(list, len_greater_than_0), - }, - "foot": And(str, len_greater_than_0), - "shirtNumber": And(str, len_greater_than_0), - "club": { - "id": And(str, len_greater_than_0), - "name": And(str, len_greater_than_0), - "joined": And(str, len_greater_than_0), - "contractExpires": And(str, len_greater_than_0), - "contractOption": And(str, len_greater_than_0), - }, - "marketValue": And(str, len_greater_than_0), - "agent": { - "name": And(str, len_greater_than_0), - }, - "outfitter": And(str, len_greater_than_0), - "socialMedia": And(list, len_greater_than_0), - "updatedAt": datetime, - }, - ) - - assert expected_schema.validate(result) - - -def test_get_player_profile_3373(len_greater_than_0): - tfmk = TransfermarktPlayerProfile(player_id="3373") - result = tfmk.get_player_profile() - - expected_schema = Schema( - { - "id": And(str, len_greater_than_0), - "url": And(str, len_greater_than_0), - "name": And(str, len_greater_than_0), - "description": And(str, len_greater_than_0), - "fullName": And(str, len_greater_than_0), - "imageURL": And(str, len_greater_than_0), - "dateOfBirth": And(str, len_greater_than_0), - "placeOfBirth": { - "city": And(str, len_greater_than_0), - "country": And(str, len_greater_than_0), - }, - "age": And(str, len_greater_than_0), - "height": And(str, len_greater_than_0), - "citizenship": And(list, len_greater_than_0), - "isRetired": bool, - "retiredSince": And(str, len_greater_than_0), - "position": { - "main": And(str, len_greater_than_0), - "other": And(list, len_greater_than_0), - }, - "foot": And(str, len_greater_than_0), - "club": { - "name": And(str, len_greater_than_0), - "joined": And(str, len_greater_than_0), - "lastClubID": And(str, len_greater_than_0), - "lastClubName": And(str, len_greater_than_0), - "mostGamesFor": And(str, len_greater_than_0), - }, - "outfitter": And(str, len_greater_than_0), - "socialMedia": And(list, len_greater_than_0), - "trainerProfile": { - "id": And(str, len_greater_than_0), - "url": And(str, len_greater_than_0), - "position": And(str, len_greater_than_0), - }, - "relatives": [ - { - "id": And(str, len_greater_than_0), - "url": And(str, len_greater_than_0), - "name": And(str, len_greater_than_0), - "profileType": And(str, len_greater_than_0), - }, - ], - "updatedAt": datetime, - }, - ) - - assert expected_schema.validate(result) diff --git a/tests/players/test_players_search.py b/tests/players/test_players_search.py deleted file mode 100644 index 1c3f3b8..0000000 --- a/tests/players/test_players_search.py +++ /dev/null @@ -1,54 +0,0 @@ -from datetime import datetime - -import pytest -from schema import And, Schema - -from app.services.players.search import TransfermarktPlayerSearch - - -def test_players_search_empty(len_greater_than_0, len_equal_to_0): - tfmkt = TransfermarktPlayerSearch(query="0") - result = tfmkt.search_players() - - expected_schema = Schema( - { - "query": And(str, len_greater_than_0), - "pageNumber": 1, - "lastPageNumber": 1, - "results": And(list, len_equal_to_0), - "updatedAt": datetime, - }, - ) - - assert expected_schema.validate(result) - - -@pytest.mark.parametrize("query,page_number", [("Messi", 1), ("Ronaldo", 2)]) -def test_players_search(query, page_number, len_greater_than_0, regex_integer, regex_market_value): - tfmkt = TransfermarktPlayerSearch(query=query, page_number=page_number) - result = tfmkt.search_players() - - expected_schema = Schema( - { - "query": query, - "pageNumber": page_number, - "lastPageNumber": And(int, lambda x: x > 1), - "results": [ - { - "id": And(str, len_greater_than_0, regex_integer), - "name": And(str, len_greater_than_0), - "position": And(str, len_greater_than_0), - "club": { - "id": And(str, len_greater_than_0, regex_integer), - "name": And(str, len_greater_than_0), - }, - "age": And(str, len_greater_than_0, regex_integer), - "nationalities": And(list, len_greater_than_0), - "marketValue": And(str, len_greater_than_0, regex_market_value), - }, - ], - "updatedAt": datetime, - }, - ) - - assert expected_schema.validate(result) diff --git a/tests/players/test_players_stats.py b/tests/players/test_players_stats.py deleted file mode 100644 index 6ee3e7a..0000000 --- a/tests/players/test_players_stats.py +++ /dev/null @@ -1,86 +0,0 @@ -from datetime import datetime - -import pytest -from fastapi import HTTPException -from schema import And, Optional, Schema - -from app.services.players.stats import TransfermarktPlayerStats - - -def test_players_profile_not_found(): - with pytest.raises(HTTPException): - TransfermarktPlayerStats(player_id="0") - - -@pytest.mark.parametrize("player_id", ["3373", "8198", "68290"]) -def test_get_player_stats(player_id, len_greater_than_0, regex_integer): - tfmkt = TransfermarktPlayerStats(player_id=player_id) - result = tfmkt.get_player_stats() - - expected_schema = Schema( - { - "id": str, - "stats": [ - { - "competitionID": And(str, len_greater_than_0), - "clubID": And(str, len_greater_than_0, regex_integer), - "seasonID": And(str, len_greater_than_0), - "competitionName": And(str, len_greater_than_0), - Optional("appearances"): And(str, len_greater_than_0, regex_integer), - Optional("goals"): And(str, len_greater_than_0, regex_integer), - Optional("assists"): And(str, len_greater_than_0, regex_integer), - Optional("yellowCards"): And(str, len_greater_than_0, regex_integer), - Optional("secondYellowCards"): And(str, len_greater_than_0, regex_integer), - Optional("redCards"): And(str, len_greater_than_0, regex_integer), - Optional("minutesPlayed"): And(str, len_greater_than_0), - }, - ], - "updatedAt": datetime, - }, - ) - - assert expected_schema.validate(result) - assert any("appearances" in stat for stat in result.get("stats")) - assert any("goals" in stat for stat in result.get("stats")) - assert any("assists" in stat for stat in result.get("stats")) - assert any("yellowCards" in stat for stat in result.get("stats")) - assert any("secondYellowCards" in stat for stat in result.get("stats")) - assert any("redCards" in stat for stat in result.get("stats")) - assert any("minutesPlayed" in stat for stat in result.get("stats")) - - -@pytest.mark.parametrize("player_id", ["5023", "13811"]) -def test_get_player_stats_goalkeeper(player_id, len_greater_than_0, regex_integer): - tfmkt = TransfermarktPlayerStats(player_id=player_id) - result = tfmkt.get_player_stats() - - expected_schema = Schema( - { - "id": str, - "stats": [ - { - "competitionID": And(str, len_greater_than_0), - "clubID": And(str, len_greater_than_0, regex_integer), - "seasonID": And(str, len_greater_than_0), - "competitionName": And(str, len_greater_than_0), - Optional("appearances"): And(str, len_greater_than_0, regex_integer), - Optional("goals"): And(str, len_greater_than_0, regex_integer), - Optional("yellowCards"): And(str, len_greater_than_0, regex_integer), - Optional("secondYellowCards"): And(str, len_greater_than_0, regex_integer), - Optional("redCards"): And(str, len_greater_than_0, regex_integer), - Optional("goalsConceded"): And(str, len_greater_than_0, regex_integer), - Optional("cleanSheets"): And(str, len_greater_than_0, regex_integer), - Optional("minutesPlayed"): And(str, len_greater_than_0), - }, - ], - "updatedAt": datetime, - }, - ) - - assert expected_schema.validate(result) - assert any("appearances" in stat for stat in result.get("stats")) - assert any("yellowCards" in stat for stat in result.get("stats")) - assert any("redCards" in stat for stat in result.get("stats")) - assert any("goalsConceded" in stat for stat in result.get("stats")) - assert any("cleanSheets" in stat for stat in result.get("stats")) - assert any("minutesPlayed" in stat for stat in result.get("stats")) diff --git a/tests/players/test_players_transfers.py b/tests/players/test_players_transfers.py deleted file mode 100644 index 866cc76..0000000 --- a/tests/players/test_players_transfers.py +++ /dev/null @@ -1,48 +0,0 @@ -from datetime import datetime - -import pytest -from fastapi import HTTPException -from schema import And, Optional, Schema - -from app.services.players.transfers import TransfermarktPlayerTransfers - - -def test_get_player_transfers_not_found(): - with pytest.raises(HTTPException): - TransfermarktPlayerTransfers(player_id="0") - - -@pytest.mark.parametrize("player_id", ["28003", "8198"]) -def test_get_player_transfers(player_id, len_greater_than_0, regex_integer, regex_date_mmm_dd_yyyy, regex_market_value): - tfmkt = TransfermarktPlayerTransfers(player_id=player_id) - result = tfmkt.get_player_transfers() - - expected_schema = Schema( - { - "id": And(str, len_greater_than_0, regex_integer), - "transfers": [ - { - "id": And(str, len_greater_than_0, regex_integer), - "season": And(str, len_greater_than_0), - "date": And(str, len_greater_than_0, regex_date_mmm_dd_yyyy), - "from": { - "clubID": And(str, len_greater_than_0, regex_integer), - "clubName": And(str, len_greater_than_0), - }, - "to": { - "clubID": And(str, len_greater_than_0, regex_integer), - "clubName": And(str, len_greater_than_0), - }, - "upcoming": bool, - Optional("marketValue"): And(str, len_greater_than_0, regex_market_value), - Optional("fee"): And(str, len_greater_than_0), - }, - ], - "youthClubs": list, - "updatedAt": datetime, - }, - ) - - assert expected_schema.validate(result) - assert any("marketValue" in stat for stat in result.get("transfers")) - assert any("fee" in stat for stat in result.get("transfers")) diff --git a/tests/services/test_clubs.py b/tests/services/test_clubs.py new file mode 100644 index 0000000..57d70fa --- /dev/null +++ b/tests/services/test_clubs.py @@ -0,0 +1,60 @@ +import pytest + +from app.services.clubs.players import TransfermarktClubPlayers +from app.services.clubs.profile import TransfermarktClubProfile +from app.services.clubs.search import TransfermarktClubSearch + + +@pytest.mark.parametrize( + "club_id, season_id", + [ + ("5", "2003"), # Milan AC + ("27", "2019"), # FC Bayern Munich + ("31", "2018"), # Liverpool FC + ("131", "2010"), # Barcelona FC + ("131", None), # Barcelona FC + ("210", "2017"), # Grêmio FBPA + ], +) +def test_club_players(club_id: str, season_id: str, load_test_data: callable): + tfmkt = TransfermarktClubPlayers(club_id=club_id, season_id=season_id) + response = tfmkt.get_club_players() + expected = load_test_data(f"clubs/players/{club_id}_{season_id}") + + assert response == expected + + +@pytest.mark.parametrize( + "club_id", + [ + "5", # Milan AC + "27", # FC Bayern Munich + "31", # Liverpool FC + "131", # Barcelona FC + "210", # Grêmio FBPA + ], +) +def test_clubs_profile(club_id: str, load_test_data: callable): + tfmkt = TransfermarktClubProfile(club_id=club_id) + response = tfmkt.get_club_profile() + expected = load_test_data(f"clubs/profile/{club_id}") + + assert response == expected + + +@pytest.mark.parametrize( + "query", + [ + "Milan", + "Bayern", + "Liverpool", + "Barcelona", + "Grêmio", + ], +) +def test_clubs_search(query: str, load_test_data: callable): + tfmkt = TransfermarktClubSearch(query=query) + response = tfmkt.search_clubs() + expected = load_test_data(f"clubs/search/{query}") + + assert response == expected diff --git a/tests/services/test_competitions.py b/tests/services/test_competitions.py new file mode 100644 index 0000000..84e6944 --- /dev/null +++ b/tests/services/test_competitions.py @@ -0,0 +1,36 @@ +import pytest + +from app.services.competitions.clubs import TransfermarktCompetitionClubs +from app.services.competitions.search import TransfermarktCompetitionSearch + + +@pytest.mark.parametrize( + "competition_id", + [ + "BRA1", + "GB1", + "ES1", + ], +) +def test_competitions_clubs(competition_id: str, load_test_data: callable): + tfmkt = TransfermarktCompetitionClubs(competition_id=competition_id) + response = tfmkt.get_competition_clubs() + expected = load_test_data(f"competitions/clubs/{competition_id}") + + assert response == expected + + +@pytest.mark.parametrize( + "query", + [ + "Brasileirão", + "Premier League", + "La Liga", + ], +) +def test_competitions_search(query: str, load_test_data: callable): + tfmkt = TransfermarktCompetitionSearch(query=query) + response = tfmkt.search_competitions() + expected = load_test_data(f"competitions/search/{query}") + + assert response == expected diff --git a/tests/services/test_players.py b/tests/services/test_players.py new file mode 100644 index 0000000..afdf71f --- /dev/null +++ b/tests/services/test_players.py @@ -0,0 +1,156 @@ +import pytest + +from app.schemas.players import ( + PlayerAchievements, + PlayerInjuries, + PlayerJerseyNumbers, + PlayerMarketValue, + PlayerProfile, + PlayerSearch, + PlayerStats, + PlayerTransfers, +) +from app.services.players.achievements import TransfermarktPlayerAchievements +from app.services.players.injuries import TransfermarktPlayerInjuries +from app.services.players.jersey_numbers import TransfermarktPlayerJerseyNumbers +from app.services.players.market_value import TransfermarktPlayerMarketValue +from app.services.players.profile import TransfermarktPlayerProfile +from app.services.players.search import TransfermarktPlayerSearch +from app.services.players.stats import TransfermarktPlayerStats +from app.services.players.transfers import TransfermarktPlayerTransfers + + +@pytest.mark.parametrize( + "player_id", + [ + "3373", # Ronaldinho + "8198", # Cristiano Ronaldo + "28003", # Lionel Messi + "68290", # Neymar + ], +) +def test_players_achievements(player_id: str, load_test_data: callable): + tfmkt = TransfermarktPlayerAchievements(player_id=player_id) + response = PlayerAchievements.model_validate(tfmkt.get_player_achievements()) + expected = PlayerAchievements.model_validate(load_test_data(f"players/achievements/{player_id}")) + + assert response == expected + + +@pytest.mark.parametrize( + "player_id", + [ + "3373", # Ronaldinho + "8198", # Cristiano Ronaldo + "28003", # Lionel Messi + "68290", # Neymar + ], +) +def test_players_injuries(player_id: str, load_test_data: callable): + tfmkt = TransfermarktPlayerInjuries(player_id=player_id) + response = PlayerInjuries.model_validate(tfmkt.get_player_injuries()) + expected = PlayerInjuries.model_validate(load_test_data(f"players/injuries/{player_id}")) + + assert response == expected + + +@pytest.mark.parametrize( + "player_id", + [ + "3373", # Ronaldinho + "8198", # Cristiano Ronaldo + "28003", # Lionel Messi + "68290", # Neymar + ], +) +def test_players_jersey_numbers(player_id: str, load_test_data: callable): + tfmkt = TransfermarktPlayerJerseyNumbers(player_id=player_id) + response = PlayerJerseyNumbers.model_validate(tfmkt.get_player_jersey_numbers()) + expected = PlayerJerseyNumbers.model_validate(load_test_data(f"players/jersey_numbers/{player_id}")) + + assert response == expected + + +@pytest.mark.parametrize( + "player_id", + [ + "3373", # Ronaldinho + "8198", # Cristiano Ronaldo + "28003", # Lionel Messi + "68290", # Neymar + ], +) +def test_players_market_value(player_id: str, load_test_data: callable): + tfmkt = TransfermarktPlayerMarketValue(player_id=player_id) + response = PlayerMarketValue.model_validate(tfmkt.get_player_market_value()) + expected = PlayerMarketValue.model_validate(load_test_data(f"players/market_value/{player_id}")) + + assert response == expected + + +@pytest.mark.parametrize( + "player_id", + [ + "3373", # Ronaldinho + "8198", # Cristiano Ronaldo + "28003", # Lionel Messi + "68290", # Neymar + ], +) +def test_players_profile(player_id: str): + tfmkt = TransfermarktPlayerProfile(player_id=player_id) + response = PlayerProfile.model_validate(tfmkt.get_player_profile()) + expected = PlayerProfile.model_validate(load_test_data(f"players/profile/{player_id}")) + + assert response == expected + + +@pytest.mark.parametrize( + "query", + [ + "Ronaldo", + "Messi", + "Neymar", + "Cristiano", + ], +) +def test_players_search(query: str, load_test_data: callable): + tfmkt = TransfermarktPlayerSearch(query=query) + response = PlayerSearch.model_validate(tfmkt.search_players()) + expected = PlayerSearch.model_validate(load_test_data(f"players/search/{query}")) + + assert response == expected + + +@pytest.mark.parametrize( + "player_id", + [ + "3373", # Ronaldinho + "8198", # Cristiano Ronaldo + "28003", # Lionel Messi + "68290", # Neymar + ], +) +def test_players_stats(player_id: str, load_test_data: callable): + tfmkt = TransfermarktPlayerStats(player_id=player_id) + response = PlayerStats.model_validate(tfmkt.get_player_stats()) + expected = PlayerStats.model_validate(load_test_data(f"players/stats/{player_id}")) + + assert response == expected + + +@pytest.mark.parametrize( + "player_id", + [ + "3373", # Ronaldinho + "8198", # Cristiano Ronaldo + "28003", # Lionel Messi + "68290", # Neymar + ], +) +def test_players_transfers(player_id: str, load_test_data: callable): + tfmkt = TransfermarktPlayerTransfers(player_id=player_id) + response = PlayerTransfers.model_validate(tfmkt.get_player_transfers()) + expected = PlayerTransfers.model_validate(load_test_data(f"players/transfers/{player_id}")) + + assert response == expected