Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions data/v2/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -494,37 +494,37 @@ def _load_resource_images() -> set[str]:
"front_default": ("pokemon/versions/generation-vi/icons/", "png"),
"front_female": ("pokemon/versions/generation-vi/icons/female/", "png"),
},
"omegaruby-alphasapphire": {
"omega-ruby-alpha-sapphire": {
"front_default": (
"pokemon/versions/generation-vi/omegaruby-alphasapphire/",
"pokemon/versions/generation-vi/omega-ruby-alpha-sapphire/",
"png",
),
"front_female": (
"pokemon/versions/generation-vi/omegaruby-alphasapphire/female/",
"pokemon/versions/generation-vi/omega-ruby-alpha-sapphire/female/",
"png",
),
"front_shiny": (
"pokemon/versions/generation-vi/omegaruby-alphasapphire/shiny/",
"pokemon/versions/generation-vi/omega-ruby-alpha-sapphire/shiny/",
"png",
),
"front_shiny_female": (
"pokemon/versions/generation-vi/omegaruby-alphasapphire/shiny/female/",
"pokemon/versions/generation-vi/omega-ruby-alpha-sapphire/shiny/female/",
"png",
),
"back_default": (
"pokemon/versions/generation-vi/omegaruby-alphasapphire/back/",
"pokemon/versions/generation-vi/omega-ruby-alpha-sapphire/back/",
"png",
),
"back_female": (
"pokemon/versions/generation-vi/omegaruby-alphasapphire/back/female/",
"pokemon/versions/generation-vi/omega-ruby-alpha-sapphire/back/female/",
"png",
),
"back_shiny": (
"pokemon/versions/generation-vi/omegaruby-alphasapphire/back/shiny/",
"pokemon/versions/generation-vi/omega-ruby-alpha-sapphire/back/shiny/",
"png",
),
"back_shiny_female": (
"pokemon/versions/generation-vi/omegaruby-alphasapphire/back/shiny/female/",
"pokemon/versions/generation-vi/omega-ruby-alpha-sapphire/back/shiny/female/",
"png",
),
},
Expand Down
38 changes: 38 additions & 0 deletions pokemon_v2/test_models.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
import csv
import os
import re
from unittest import mock

from django.conf import settings
from django.test import TestCase
from typing_extensions import override

from data.v2 import build
from data.v2.build import POKEMON_SPRITE_CONFIG, _pokemon_form_sprite_lookup
from pokemon_v2.models import *


Expand Down Expand Up @@ -228,3 +231,38 @@ def test_identifier_pattern_examples(self):
self.VALID_IDENTIFIER_PATTERN.match(identifier),
f"{identifier} should be invalid but was accepted",
)


class PokemonSpriteConfigTestCase(TestCase):
Comment thread
FallenDeity marked this conversation as resolved.
def test_generation_vi_sprite_group_keys_and_paths(self):
# keys are version-group names and each group's sprites live in a folder of the
# same name (https://github.com/PokeAPI/pokeapi/issues/1684)
gen_vi = POKEMON_SPRITE_CONFIG["versions"]["generation-vi"]

self.assertEqual(set(gen_vi), {"icons", "omega-ruby-alpha-sapphire", "x-y"})
for group, sprites in gen_vi.items():
for path, _extension in sprites.values():
self.assertTrue(
path.startswith(f"pokemon/versions/generation-vi/{group}/"),
f"{group} path {path} is not under the {group}/ sprites folder",
)

# https://github.com/PokeAPI/pokeapi/issues/1687: unown-a's front sprite is stored as
# 201.png, not 201-a.png, so default forms must fall back to the bare pokemon id
def test_form_sprite_lookup_falls_back_to_pokemon_id_for_default_forms(self):
# pokemon_forms.csv columns: id, identifier, form_identifier, pokemon_id, introduced_in, is_default
unown_a = ["201", "unown-a", "a", "201", "3", "1"]
unown_b = ["10001", "unown-b", "b", "201", "3", "0"]
images = {"pokemon/201.png", "pokemon/back/201-a.png", "pokemon/back/201.png"}

with mock.patch.object(build, "RESOURCE_IMAGES", images):
unown_a_lookup = _pokemon_form_sprite_lookup(unown_a)
unown_b_lookup = _pokemon_form_sprite_lookup(unown_b)

self.assertEqual(unown_a_lookup("pokemon/", "png"), build.MEDIA_DIR.format(file_name="pokemon/201.png"))
# a form-specific sprite still takes precedence over the fallback
self.assertEqual(
unown_a_lookup("pokemon/back/", "png"), build.MEDIA_DIR.format(file_name="pokemon/back/201-a.png")
)
# non-default forms never borrow the base pokemon's sprite
self.assertIsNone(unown_b_lookup("pokemon/", "png"))
Loading