Álbuns em destaque, dados reais do MusicKit, e um teste que mentiu sobre estar passando
O Deep Cut Atlas mostra “deep cuts”, álbuns do catálogo de artistas na sua biblioteca que você ainda não tem. A próxima pergunta era óbvia: quando um artista tem dez álbuns que você nunca ouviu, qual primeiro?
O Apple Music tem uma seção “Essentials” nas páginas de artista, então assumi que haveria uma flag correspondente na API, algum isEssential em Album que eu pudesse usar para ordenar. Não existe. O tipo Artist do MusicKit expõe doze relationship views e nenhuma delas é “álbuns essenciais”. O “Essentials” que você vê no app Music é uma playlist de músicas curada (artist.featuredPlaylists), não é um sinal no nível de álbum de jeito nenhum.
O que existe é artist.featuredAlbums, as escolhas editoriais de álbuns da Apple, presente para artistas que a Apple realmente curou e nil para todos os outros. Renomeei o recurso para “Featured” em vez de “Essential” para bater com a API em vez do rótulo da UI, adicionei uma flag isFeatured em LibraryAlbum, e reordenei a lista “More from artist” para colocar os lançamentos em destaque no topo.
Os testes no simulador com dados mockados pareciam corretos: o badge aparecia, a ordenação funcionava. Mas o dado mockado é falso, o MusicKit simplesmente não roda no simulador, então nada naquela passada tocou a API real do featuredAlbums. A única forma de saber se a Apple realmente retorna dado útil aqui era um aparelho físico.
E retorna. Consultar o catálogo do Bad Bunny direto no aparelho retornou 3 de 25 álbuns marcados como featured: Un Verano Sin Ti, YHLQMDLG, OASIS, todos reais, todas escolhas editoriais que fazem sentido. Bom sinal de que o recurso funciona contra dado real, não só as minhas fixtures mockadas.
Depois, a suíte de testes completa, rodada como parte da mesma passada de verificação no aparelho, pegou algo que a rodada no simulador não tinha pegado: um teste de ordenação pré-existente que verificava ordem estrita do mais novo para o mais antigo numa discografia do Khruangbin, onde um álbum, Con Todo El Mundo, tinha sido marcado como isFeatured: true na fixture mockada como parte dessa mesma mudança. O teste nunca foi atualizado para esperar que ele viesse primeiro. Ele estava “passando” só porque ninguém tinha rodado a suíte de novo desde que a fixture mudou.
Não tem nada de exótico nisso, é só o que acontece quando uma fixture e o teste dela se distanciam na mesma mudança e ninguém roda os testes antes de dar merge. O fix foi uma linha, mas é um lembrete de que “o código compila e o simulador parece certo” e “os testes realmente passam” são duas afirmações diferentes, e só rodar a segunda pega esse tipo de desalinhamento.
Leitura relacionada
A playlist que já tinha o nome certo
Um artefato de renomeação, uma API sem campo de autor pra atualizar, e um teste em dispositivo real provando que o bug já tinha se corrigido sozinho, fechado como aceitar como está.
A aba Discover que ficou permanentemente presa cavando
Uma busca de artista que falhava nunca contava como checada, então um artista ruim se reselecionava para sempre - até um teste de várias rodadas achar a segunda proteção.
Minha aba Discover estava vazia porque fiz a pergunta errada para o Apple Music
IDs de biblioteca usados em requisições de catálogo: dois sintomas, um bug só, uma correção verificada no dispositivo, e o número de 1.610 artistas que forçou um redesenho.
Você também pode achar útil
AdGuard para iOS
Bloqueio de anúncios e rastreadores em todo o sistema no iOS, sem necessidade de um servidor DNS separado.
Como afiliado da AdGuard, ganho com compras qualificadas.
Saiba maiseSIM Airalo
eSIM de dados local para viagens - sem necessidade de trocar um SIM físico.
Este é meu link de indicação da Airalo. Você recebe um desconto no seu primeiro eSIM e eu ganho crédito da Airalo para o meu.
Saiba maisProton Mail
E-mail criptografado de ponta a ponta, com arquitetura de acesso zero.
Como parceiro da Proton, ganho com compras qualificadas dos serviços de privacidade e segurança da Proton (Pass, Mail, VPN, Drive).
Saiba mais