Álbumes destacados, datos reales de MusicKit y una prueba que mintió al pasar
Deep Cut Atlas muestra “deep cuts”: álbumes del catálogo de artistas que ya están en la biblioteca pero que todavía no se tienen. La siguiente pregunta era obvia: cuando un artista tiene diez álbumes que no se han escuchado, ¿cuál primero?
Apple Music tiene una sección “Essentials” en las páginas de artista, así que asumí que habría un flag correspondiente en la API, algo como isEssential en Album para poder ordenar por ahí. No lo hay. El tipo Artist de MusicKit expone doce vistas de relaciones y ninguna es “essential albums.” Lo que aparece como Essentials en la app Music es en realidad una lista de reproducción de canciones curada (artist.featuredPlaylists), no una señal a nivel de álbum en absoluto.
Lo que sí existe es artist.featuredAlbums, las selecciones editoriales de álbumes de Apple, presentes para los artistas que Apple realmente curó y nil para el resto. Renombré la función “Featured” en vez de “Essential” para que coincidiera con la API en lugar de la etiqueta de la interfaz, agregué un flag isFeatured a LibraryAlbum, y reordené la lista “More from artist” para que los lanzamientos destacados subieran al principio.
Las pruebas en el simulador con datos simulados se veían bien: la insignia aparecía, el orden funcionaba. Pero los datos simulados son ficticios, MusicKit no corre en el simulador de ninguna forma, así que nada en esa pasada tocó la API real de featuredAlbums. La única forma de saber si Apple realmente devuelve datos útiles ahí era un dispositivo físico.
Y sí los devuelve. Consultar el catálogo de Bad Bunny en el dispositivo arrojó 3 de 25 álbumes marcados como destacados: Un Verano Sin Ti, YHLQMDLG, OASIS, todos reales, todas selecciones editoriales sensatas. Buena señal de que la función funciona con datos reales, no solo con mis datos simulados.
Después, la suite de pruebas completa, ejecutada como parte de la misma pasada de verificación en el dispositivo, detectó algo que la corrida en el simulador no había detectado: una prueba de orden preexistente que verificaba un orden estricto de más nuevo a más viejo para una discografía de Khruangbin, donde un álbum, Con Todo El Mundo, había sido marcado como isFeatured: true en los datos simulados como parte de este mismo cambio. La prueba nunca se actualizó para esperarlo primero. Había estado “pasando” solo porque nadie había vuelto a correr la suite desde que cambiaron los datos simulados.
Nada de eso es exótico, es simplemente lo que pasa cuando los datos simulados y su prueba se desalinean en el mismo cambio y nadie corre las pruebas antes de fusionar. El arreglo fue una línea, pero es un recordatorio de que “el código compila y el simulador se ve bien” y “las pruebas realmente pasan” son dos afirmaciones distintas, y solo ejecutar la segunda detecta el desajuste.
Lecturas relacionadas
La ventana espejada mintió sobre que el teléfono estaba desbloqueado
Un arreglo de agrupación de una línea que ya estaba escrito, y tres muros entre eso y la prueba: aislamiento de actores, el alcance exclusivo a Mac de log stream, y una sesión espejada que parece desbloqueada cuando el dispositivo no lo está.
Álbumes de preestreno, y la solución que no pude verificar del todo
Los marcadores de posición 'Track N' de Apple se mostraban como si fueran datos reales. La única señal de detección que no pude confirmar se convirtió en la única señal de la que dejé de depender.
Un botón de suscripción, una API de MusicKit que nunca había usado, y una sheet que se cierra en silencio
musicSubscriptionOffer presenta la sheet nativa de Apple, y nada en la app se enteraría jamás de que se cerró. La acción correctamente codificada que igual era un callejón sin salida funcional.