diff --git a/CHANGELOG.md b/CHANGELOG.md index fc32055..8b5b646 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -42,6 +42,14 @@ Release names follow the **historic football clubs** naming convention (A–Z): ### Changed +- Normalize player dataset: seed Leandro Paredes (squad 5) permanently; correct + Enzo Fernández (squad 24) to SL Benfica / Liga Portugal, Alexis Mac Allister + (squad 20) to Brighton & Hove Albion, and Lionel Messi (squad 10) to Paris + Saint-Germain / Ligue 1 — all reflecting November 2022 World Cup squads (#288) +- Align CRUD test fixtures: Giovani Lo Celso (squad 27) for Create and Delete, + Lionel Messi (squad 10) for Retrieve, Damián Martínez (squad 23) for Update; + canonical UUID v5 strings applied across `dml.sql`, `PlayerFakes`, + `PlayerDTOFakes`, and `storage/players-sqlite3.db` (#288) - `Player` entity: `id` (UUID) is the database primary key — `@Id` with `GenerationType.UUID`; `squadNumber` (Integer) carries `@Column(unique=true)` and serves as the natural-key route identifier for `PUT` and `DELETE` (#268) @@ -59,6 +67,8 @@ Release names follow the **historic football clubs** naming convention (A–Z): ### Added +- Repository delete test: `givenPlayerExists_whenDelete_thenPlayerIsRemoved` + covers Lo Celso inline save + delete pattern (#288) - JaCoCo `check` goal added to Maven build enforcing 80% instruction and branch coverage — replaces manual HTML report step in `/pre-commit` (#268) - `.sonarcloud.properties`: SonarCloud Automatic Analysis configuration — diff --git a/src/test/java/ar/com/nanotaboada/java/samples/spring/boot/test/PlayerDTOFakes.java b/src/test/java/ar/com/nanotaboada/java/samples/spring/boot/test/PlayerDTOFakes.java index 195300f..03f6411 100644 --- a/src/test/java/ar/com/nanotaboada/java/samples/spring/boot/test/PlayerDTOFakes.java +++ b/src/test/java/ar/com/nanotaboada/java/samples/spring/boot/test/PlayerDTOFakes.java @@ -13,31 +13,27 @@ private PlayerDTOFakes() { throw new UnsupportedOperationException("This is a utility class and cannot be instantiated"); } - private static UUID uuid(int index) { - return UUID.fromString(String.format("00000000-0000-0000-0000-%012d", index)); - } - /** - * Leandro Paredes - Test data for CREATE operations + * Giovani Lo Celso - Test data for CREATE and DELETE operations * * Usage: - * - Service tests: Mock expected data for playersService.create() - * - Controller tests: Mock expected data for POST /players + * - Service tests: Mock expected data for playersService.create() / deleteBySquadNumber() + * - Controller tests: Mock expected data for POST /players and DELETE /players/{squadNumber} * - * Note: Not pre-seeded in test DB (squad number 5 slot is empty) + * Note: Not pre-seeded in test DB (squad number 27 falls outside seeded range 1–26) */ public static PlayerDTO createOneValid() { PlayerDTO playerDTO = new PlayerDTO(); - playerDTO.setId(null); // Will be generated by @PrePersist - playerDTO.setSquadNumber(5); - playerDTO.setFirstName("Leandro"); - playerDTO.setMiddleName("Daniel"); - playerDTO.setLastName("Paredes"); - playerDTO.setDateOfBirth(LocalDate.of(1994, 6, 29)); - playerDTO.setPosition("Defensive Midfield"); - playerDTO.setAbbrPosition("DM"); - playerDTO.setTeam("AS Roma"); - playerDTO.setLeague("Serie A"); + playerDTO.setId(null); // Will be generated by GenerationType.UUID on save + playerDTO.setSquadNumber(27); + playerDTO.setFirstName("Giovani"); + playerDTO.setMiddleName(null); + playerDTO.setLastName("Lo Celso"); + playerDTO.setDateOfBirth(LocalDate.of(1996, 7, 9)); + playerDTO.setPosition("Central Midfield"); + playerDTO.setAbbrPosition("CM"); + playerDTO.setTeam("Real Betis Balompié"); + playerDTO.setLeague("La Liga"); playerDTO.setStarting11(false); return playerDTO; } @@ -51,7 +47,7 @@ public static PlayerDTO createOneValid() { */ public static PlayerDTO createOneForUpdate() { PlayerDTO playerDTO = new PlayerDTO(); - playerDTO.setId(uuid(1)); + playerDTO.setId(UUID.fromString("01772c59-43f0-5d85-b913-c78e4e281452")); playerDTO.setSquadNumber(23); playerDTO.setFirstName("Damián"); playerDTO.setMiddleName("Emiliano"); @@ -74,7 +70,7 @@ public static PlayerDTO createOneForUpdate() { */ public static PlayerDTO createOneUpdated() { PlayerDTO playerDTO = new PlayerDTO(); - playerDTO.setId(uuid(1)); + playerDTO.setId(UUID.fromString("01772c59-43f0-5d85-b913-c78e4e281452")); playerDTO.setSquadNumber(23); playerDTO.setFirstName("Emiliano"); playerDTO.setMiddleName(null); @@ -110,46 +106,45 @@ public static PlayerDTO createOneInvalid() { } /** - * ALL 26 players - Complete Argentina 2022 FIFA World Cup squad + * ALL 26 players - Complete Argentina 2022 FIFA World Cup squad (squads 1–26) */ public static List createAll() { return Arrays.asList( // Starting 11 - createPlayerDTO(uuid(1), 23, "Damián", "Emiliano", "Martínez", LocalDate.of(1992, 9, 2), "Goalkeeper", "GK", "Aston Villa FC", "Premier League", true), - createPlayerDTO(uuid(2), 26, "Nahuel", null, "Molina", LocalDate.of(1998, 4, 6), "Right-Back", "RB", "Atlético Madrid", "La Liga", true), - createPlayerDTO(uuid(3), 13, "Cristian", "Gabriel", "Romero", LocalDate.of(1998, 4, 27), "Centre-Back", "CB", "Tottenham Hotspur", "Premier League", true), - createPlayerDTO(uuid(4), 19, "Nicolás", "Hernán Gonzalo", "Otamendi", LocalDate.of(1988, 2, 12), "Centre-Back", "CB", "SL Benfica", "Liga Portugal", true), - createPlayerDTO(uuid(5), 3, "Nicolás", "Alejandro", "Tagliafico", LocalDate.of(1992, 8, 31), "Left-Back", "LB", "Olympique Lyon", "Ligue 1", true), - createPlayerDTO(uuid(6), 11, "Ángel", "Fabián", "Di María", LocalDate.of(1988, 2, 14), "Right Winger", "RW", "SL Benfica", "Liga Portugal", true), - createPlayerDTO(uuid(7), 7, "Rodrigo", "Javier", "de Paul", LocalDate.of(1994, 5, 24), "Central Midfield", "CM", "Atlético Madrid", "La Liga", true), - createPlayerDTO(uuid(8), 24, "Enzo", "Jeremías", "Fernández", LocalDate.of(2001, 1, 17), "Central Midfield", "CM", "Chelsea FC", "Premier League", true), - createPlayerDTO(uuid(9), 20, "Alexis", null, "Mac Allister", LocalDate.of(1998, 12, 24), "Central Midfield", "CM", "Liverpool FC", "Premier League", true), - createPlayerDTO(uuid(10), 10, "Lionel", "Andrés", "Messi", LocalDate.of(1987, 6, 24), "Right Winger", "RW", "Inter Miami CF", "Major League Soccer", true), - createPlayerDTO(uuid(11), 9, "Julián", null, "Álvarez", LocalDate.of(2000, 1, 31), "Centre-Forward", "CF", "Manchester City", "Premier League", true), + createPlayerDTO("01772c59-43f0-5d85-b913-c78e4e281452", 23, "Damián", "Emiliano", "Martínez", LocalDate.of(1992, 9, 2), "Goalkeeper", "GK", "Aston Villa FC", "Premier League", true), + createPlayerDTO("da31293b-4c7e-5e0f-a168-469ee29ecbc4", 26, "Nahuel", null, "Molina", LocalDate.of(1998, 4, 6), "Right-Back", "RB", "Atlético Madrid", "La Liga", true), + createPlayerDTO("c096c69e-762b-5281-9290-bb9c167a24a0", 13, "Cristian", "Gabriel", "Romero", LocalDate.of(1998, 4, 27), "Centre-Back", "CB", "Tottenham Hotspur", "Premier League", true), + createPlayerDTO("d5f7dd7a-1dcb-5960-ba27-e34865b63358", 19, "Nicolás", "Hernán Gonzalo", "Otamendi", LocalDate.of(1988, 2, 12), "Centre-Back", "CB", "SL Benfica", "Liga Portugal", true), + createPlayerDTO("2f6f90a0-9b9d-5023-96d2-a2aaf03143a6", 3, "Nicolás", "Alejandro", "Tagliafico", LocalDate.of(1992, 8, 31), "Left-Back", "LB", "Olympique Lyon", "Ligue 1", true), + createPlayerDTO("b5b46e79-929e-5ed2-949d-0d167109c022", 11, "Ángel", "Fabián", "Di María", LocalDate.of(1988, 2, 14), "Right Winger", "RW", "SL Benfica", "Liga Portugal", true), + createPlayerDTO("0293b282-1da8-562e-998e-83849b417a42", 7, "Rodrigo", "Javier", "de Paul", LocalDate.of(1994, 5, 24), "Central Midfield", "CM", "Atlético Madrid", "La Liga", true), + createPlayerDTO("d3ba552a-dac3-588a-b961-1ea7224017fd", 24, "Enzo", "Jeremías", "Fernández", LocalDate.of(2001, 1, 17), "Central Midfield", "CM", "SL Benfica", "Liga Portugal", true), + createPlayerDTO("9613cae9-16ab-5b54-937e-3135123b9e0d", 20, "Alexis", null, "Mac Allister",LocalDate.of(1998, 12, 24), "Central Midfield", "CM", "Brighton & Hove Albion","Premier League", true), + createPlayerDTO("acc433bf-d505-51fe-831e-45eb44c4d43c", 10, "Lionel", "Andrés", "Messi", LocalDate.of(1987, 6, 24), "Right Winger", "RW", "Paris Saint-Germain", "Ligue 1", true), + createPlayerDTO("38bae91d-8519-55a2-b30a-b9fe38849bfb", 9, "Julián", null, "Álvarez", LocalDate.of(2000, 1, 31), "Centre-Forward", "CF", "Manchester City", "Premier League", true), // Substitutes - createPlayerDTO(uuid(12), 1, "Franco", "Daniel", "Armani", LocalDate.of(1986, 10, 16), "Goalkeeper", "GK", "River Plate", "Copa de la Liga", false), - createPlayerDTO(uuid(13), 12, "Gerónimo", null, "Rulli", LocalDate.of(1992, 5, 20), "Goalkeeper", "GK", "Ajax Amsterdam", "Eredivisie", false), - createPlayerDTO(uuid(14), 2, "Juan", "Marcos", "Foyth", LocalDate.of(1998, 1, 12), "Right-Back", "RB", "Villarreal", "La Liga", false), - createPlayerDTO(uuid(15), 4, "Gonzalo", "Ariel", "Montiel", LocalDate.of(1997, 1, 1), "Right-Back", "RB", "Nottingham Forest", "Premier League", false), - createPlayerDTO(uuid(16), 6, "Germán", "Alejo", "Pezzella", LocalDate.of(1991, 6, 27), "Centre-Back", "CB", "Real Betis Balompié", "La Liga", false), - createPlayerDTO(uuid(17), 8, "Marcos", "Javier", "Acuña", LocalDate.of(1991, 10, 28), "Left-Back", "LB", "Sevilla FC", "La Liga", false), - createPlayerDTO(uuid(18), 25, "Lisandro", null, "Martínez", LocalDate.of(1998, 1, 18), "Centre-Back", "CB", "Manchester United", "Premier League", false), - // Leandro Paredes (squad number 5) - created during tests - createPlayerDTO(uuid(19), 5, "Leandro", "Daniel", "Paredes", LocalDate.of(1994, 6, 29), "Defensive Midfield", "DM", "AS Roma", "Serie A", false), - createPlayerDTO(uuid(20), 14, "Exequiel", "Alejandro", "Palacios", LocalDate.of(1998, 10, 5), "Central Midfield", "CM", "Bayer 04 Leverkusen", "Bundesliga", false), - createPlayerDTO(uuid(21), 17, "Alejandro", "Darío", "Gómez", LocalDate.of(1988, 2, 15), "Left Winger", "LW", "AC Monza", "Serie A", false), - createPlayerDTO(uuid(22), 18, "Guido", null, "Rodríguez", LocalDate.of(1994, 4, 12), "Defensive Midfield", "DM", "Real Betis Balompié", "La Liga", false), - createPlayerDTO(uuid(23), 15, "Ángel", "Martín", "Correa", LocalDate.of(1995, 3, 9), "Right Winger", "RW", "Atlético Madrid", "La Liga", false), - createPlayerDTO(uuid(24), 16, "Thiago", "Ezequiel", "Almada", LocalDate.of(2001, 4, 26), "Attacking Midfield", "AM", "Atlanta United FC", "Major League Soccer", false), - createPlayerDTO(uuid(25), 21, "Paulo", "Exequiel", "Dybala", LocalDate.of(1993, 11, 15), "Second Striker", "SS", "AS Roma", "Serie A", false), - createPlayerDTO(uuid(26), 22, "Lautaro", "Javier", "Martínez", LocalDate.of(1997, 8, 22), "Centre-Forward", "CF", "Inter Milan", "Serie A", false)); + createPlayerDTO("5a9cd988-95e6-54c1-bc34-9aa08acca8d0", 1, "Franco", "Daniel", "Armani", LocalDate.of(1986, 10, 16), "Goalkeeper", "GK", "River Plate", "Copa de la Liga", false), + createPlayerDTO("5fdb10e8-38c0-5084-9a3f-b369a960b9c2", 2, "Juan", "Marcos", "Foyth", LocalDate.of(1998, 1, 12), "Right-Back", "RB", "Villarreal", "La Liga", false), + createPlayerDTO("bbd441f7-fcfb-5834-8468-2a9004b64c8c", 4, "Gonzalo", "Ariel", "Montiel", LocalDate.of(1997, 1, 1), "Right-Back", "RB", "Nottingham Forest", "Premier League", false), + createPlayerDTO("9d140400-196f-55d8-86e1-e0b96a375c83", 5, "Leandro", "Daniel", "Paredes", LocalDate.of(1994, 6, 29), "Defensive Midfield", "DM", "AS Roma", "Serie A", false), + createPlayerDTO("d8bfea25-f189-5d5e-b3a5-ed89329b9f7c", 6, "Germán", "Alejo", "Pezzella", LocalDate.of(1991, 6, 27), "Centre-Back", "CB", "Real Betis Balompié", "La Liga", false), + createPlayerDTO("dca343a8-12e5-53d6-89a8-916b120a5ee4", 8, "Marcos", "Javier", "Acuña", LocalDate.of(1991, 10, 28), "Left-Back", "LB", "Sevilla FC", "La Liga", false), + createPlayerDTO("c62f2ac1-41e8-5d34-b073-2ba0913d0e31", 12, "Gerónimo", null, "Rulli", LocalDate.of(1992, 5, 20), "Goalkeeper", "GK", "Ajax Amsterdam", "Eredivisie", false), + createPlayerDTO("d3b0e8e8-2c34-531a-b608-b24fed0ef986", 14, "Exequiel", "Alejandro", "Palacios", LocalDate.of(1998, 10, 5), "Central Midfield", "CM", "Bayer 04 Leverkusen", "Bundesliga", false), + createPlayerDTO("b1306b7b-a3a4-5f7c-90fd-dd5bdbed57ba", 15, "Ángel", "Martín", "Correa", LocalDate.of(1995, 3, 9), "Right Winger", "RW", "Atlético Madrid", "La Liga", false), + createPlayerDTO("ecec27e8-487b-5622-b116-0855020477ed", 16, "Thiago", "Ezequiel", "Almada", LocalDate.of(2001, 4, 26), "Attacking Midfield", "AM", "Atlanta United FC", "Major League Soccer", false), + createPlayerDTO("7cc8d527-56a2-58bd-9528-2618fc139d30", 17, "Alejandro","Darío", "Gómez", LocalDate.of(1988, 2, 15), "Left Winger", "LW", "AC Monza", "Serie A", false), + createPlayerDTO("191c82af-0c51-526a-b903-c3600b61b506", 18, "Guido", null, "Rodríguez", LocalDate.of(1994, 4, 12), "Defensive Midfield", "DM", "Real Betis Balompié", "La Liga", false), + createPlayerDTO("7941cd7c-4df1-5952-97e8-1e7f5d08e8aa", 21, "Paulo", "Exequiel", "Dybala", LocalDate.of(1993, 11, 15), "Second Striker", "SS", "AS Roma", "Serie A", false), + createPlayerDTO("79c96f29-c59f-5f98-96b8-3a5946246624", 22, "Lautaro", "Javier", "Martínez", LocalDate.of(1997, 8, 22), "Centre-Forward", "CF", "Inter Milan", "Serie A", false), + createPlayerDTO("98306555-a466-5d18-804e-dc82175e697b", 25, "Lisandro", null, "Martínez", LocalDate.of(1998, 1, 18), "Centre-Back", "CB", "Manchester United", "Premier League", false)); } - private static PlayerDTO createPlayerDTO(UUID id, Integer squadNumber, String firstName, String middleName, + private static PlayerDTO createPlayerDTO(String id, Integer squadNumber, String firstName, String middleName, String lastName, LocalDate dateOfBirth, String position, String abbrPosition, String team, String league, Boolean starting11) { PlayerDTO playerDTO = new PlayerDTO(); - playerDTO.setId(id); + playerDTO.setId(UUID.fromString(id)); playerDTO.setSquadNumber(squadNumber); playerDTO.setFirstName(firstName); playerDTO.setMiddleName(middleName); diff --git a/src/test/java/ar/com/nanotaboada/java/samples/spring/boot/test/PlayerFakes.java b/src/test/java/ar/com/nanotaboada/java/samples/spring/boot/test/PlayerFakes.java index f4639d9..a020d8d 100644 --- a/src/test/java/ar/com/nanotaboada/java/samples/spring/boot/test/PlayerFakes.java +++ b/src/test/java/ar/com/nanotaboada/java/samples/spring/boot/test/PlayerFakes.java @@ -13,32 +13,28 @@ private PlayerFakes() { throw new UnsupportedOperationException("This is a utility class and cannot be instantiated"); } - private static UUID uuid(int index) { - return UUID.fromString(String.format("00000000-0000-0000-0000-%012d", index)); - } - /** - * Leandro Paredes - Test data for CREATE operations + * Giovani Lo Celso - Test data for CREATE and DELETE operations * * Usage: - * - Repository tests: Insert into real in-memory DB - * - Service tests: Mock expected data for playersService.create() - * - Controller tests: Mock expected data for POST /players + * - Repository tests: Insert into real in-memory DB (not pre-seeded) + * - Service tests: Mock expected data for playersService.create() / deleteBySquadNumber() + * - Controller tests: Mock expected data for POST /players and DELETE /players/{squadNumber} * - * Note: Not pre-seeded in test DB (squad number 5 slot is empty) + * Note: Not pre-seeded in test DB (squad number 27 falls outside seeded range 1–26) */ public static Player createOneValid() { Player player = new Player(); - player.setId(null); // Will be generated by @PrePersist - player.setSquadNumber(5); - player.setFirstName("Leandro"); - player.setMiddleName("Daniel"); - player.setLastName("Paredes"); - player.setDateOfBirth(LocalDate.of(1994, 6, 29)); - player.setPosition("Defensive Midfield"); - player.setAbbrPosition("DM"); - player.setTeam("AS Roma"); - player.setLeague("Serie A"); + player.setId(null); // Will be generated by GenerationType.UUID on save + player.setSquadNumber(27); + player.setFirstName("Giovani"); + player.setMiddleName(null); + player.setLastName("Lo Celso"); + player.setDateOfBirth(LocalDate.of(1996, 7, 9)); + player.setPosition("Central Midfield"); + player.setAbbrPosition("CM"); + player.setTeam("Real Betis Balompié"); + player.setLeague("La Liga"); player.setStarting11(false); return player; } @@ -54,7 +50,7 @@ public static Player createOneValid() { */ public static Player createOneForUpdate() { Player player = new Player(); - player.setId(uuid(1)); + player.setId(UUID.fromString("01772c59-43f0-5d85-b913-c78e4e281452")); player.setSquadNumber(23); player.setFirstName("Damián"); player.setMiddleName("Emiliano"); @@ -77,7 +73,7 @@ public static Player createOneForUpdate() { */ public static Player createOneUpdated() { Player player = new Player(); - player.setId(uuid(1)); + player.setId(UUID.fromString("01772c59-43f0-5d85-b913-c78e4e281452")); player.setSquadNumber(23); player.setFirstName("Emiliano"); player.setMiddleName(null); @@ -111,46 +107,45 @@ public static Player createOneInvalid() { } /** - * ALL 26 players - Complete Argentina 2022 FIFA World Cup squad + * ALL 26 players - Complete Argentina 2022 FIFA World Cup squad (squads 1–26) */ public static List createAll() { return Arrays.asList( // Starting 11 - createPlayer(uuid(1), 23, "Damián", "Emiliano", "Martínez", LocalDate.of(1992, 9, 2), "Goalkeeper", "GK", "Aston Villa FC", "Premier League", true), - createPlayer(uuid(2), 26, "Nahuel", null, "Molina", LocalDate.of(1998, 4, 6), "Right-Back", "RB", "Atlético Madrid", "La Liga", true), - createPlayer(uuid(3), 13, "Cristian", "Gabriel", "Romero", LocalDate.of(1998, 4, 27), "Centre-Back", "CB", "Tottenham Hotspur", "Premier League", true), - createPlayer(uuid(4), 19, "Nicolás", "Hernán Gonzalo", "Otamendi", LocalDate.of(1988, 2, 12), "Centre-Back", "CB", "SL Benfica", "Liga Portugal", true), - createPlayer(uuid(5), 3, "Nicolás", "Alejandro", "Tagliafico", LocalDate.of(1992, 8, 31), "Left-Back", "LB", "Olympique Lyon", "Ligue 1", true), - createPlayer(uuid(6), 11, "Ángel", "Fabián", "Di María", LocalDate.of(1988, 2, 14), "Right Winger", "RW", "SL Benfica", "Liga Portugal", true), - createPlayer(uuid(7), 7, "Rodrigo", "Javier", "de Paul", LocalDate.of(1994, 5, 24), "Central Midfield", "CM", "Atlético Madrid", "La Liga", true), - createPlayer(uuid(8), 24, "Enzo", "Jeremías", "Fernández", LocalDate.of(2001, 1, 17), "Central Midfield", "CM", "Chelsea FC", "Premier League", true), - createPlayer(uuid(9), 20, "Alexis", null, "Mac Allister", LocalDate.of(1998, 12, 24), "Central Midfield", "CM", "Liverpool FC", "Premier League", true), - createPlayer(uuid(10), 10, "Lionel", "Andrés", "Messi", LocalDate.of(1987, 6, 24), "Right Winger", "RW", "Inter Miami CF", "Major League Soccer", true), - createPlayer(uuid(11), 9, "Julián", null, "Álvarez", LocalDate.of(2000, 1, 31), "Centre-Forward", "CF", "Manchester City", "Premier League", true), + createPlayer("01772c59-43f0-5d85-b913-c78e4e281452", 23, "Damián", "Emiliano", "Martínez", LocalDate.of(1992, 9, 2), "Goalkeeper", "GK", "Aston Villa FC", "Premier League", true), + createPlayer("da31293b-4c7e-5e0f-a168-469ee29ecbc4", 26, "Nahuel", null, "Molina", LocalDate.of(1998, 4, 6), "Right-Back", "RB", "Atlético Madrid", "La Liga", true), + createPlayer("c096c69e-762b-5281-9290-bb9c167a24a0", 13, "Cristian", "Gabriel", "Romero", LocalDate.of(1998, 4, 27), "Centre-Back", "CB", "Tottenham Hotspur", "Premier League", true), + createPlayer("d5f7dd7a-1dcb-5960-ba27-e34865b63358", 19, "Nicolás", "Hernán Gonzalo", "Otamendi", LocalDate.of(1988, 2, 12), "Centre-Back", "CB", "SL Benfica", "Liga Portugal", true), + createPlayer("2f6f90a0-9b9d-5023-96d2-a2aaf03143a6", 3, "Nicolás", "Alejandro", "Tagliafico", LocalDate.of(1992, 8, 31), "Left-Back", "LB", "Olympique Lyon", "Ligue 1", true), + createPlayer("b5b46e79-929e-5ed2-949d-0d167109c022", 11, "Ángel", "Fabián", "Di María", LocalDate.of(1988, 2, 14), "Right Winger", "RW", "SL Benfica", "Liga Portugal", true), + createPlayer("0293b282-1da8-562e-998e-83849b417a42", 7, "Rodrigo", "Javier", "de Paul", LocalDate.of(1994, 5, 24), "Central Midfield", "CM", "Atlético Madrid", "La Liga", true), + createPlayer("d3ba552a-dac3-588a-b961-1ea7224017fd", 24, "Enzo", "Jeremías", "Fernández", LocalDate.of(2001, 1, 17), "Central Midfield", "CM", "SL Benfica", "Liga Portugal", true), + createPlayer("9613cae9-16ab-5b54-937e-3135123b9e0d", 20, "Alexis", null, "Mac Allister",LocalDate.of(1998, 12, 24), "Central Midfield", "CM", "Brighton & Hove Albion","Premier League", true), + createPlayer("acc433bf-d505-51fe-831e-45eb44c4d43c", 10, "Lionel", "Andrés", "Messi", LocalDate.of(1987, 6, 24), "Right Winger", "RW", "Paris Saint-Germain", "Ligue 1", true), + createPlayer("38bae91d-8519-55a2-b30a-b9fe38849bfb", 9, "Julián", null, "Álvarez", LocalDate.of(2000, 1, 31), "Centre-Forward", "CF", "Manchester City", "Premier League", true), // Substitutes - createPlayer(uuid(12), 1, "Franco", "Daniel", "Armani", LocalDate.of(1986, 10, 16), "Goalkeeper", "GK", "River Plate", "Copa de la Liga", false), - createPlayer(uuid(13), 12, "Gerónimo", null, "Rulli", LocalDate.of(1992, 5, 20), "Goalkeeper", "GK", "Ajax Amsterdam", "Eredivisie", false), - createPlayer(uuid(14), 2, "Juan", "Marcos", "Foyth", LocalDate.of(1998, 1, 12), "Right-Back", "RB", "Villarreal", "La Liga", false), - createPlayer(uuid(15), 4, "Gonzalo", "Ariel", "Montiel", LocalDate.of(1997, 1, 1), "Right-Back", "RB", "Nottingham Forest", "Premier League", false), - createPlayer(uuid(16), 6, "Germán", "Alejo", "Pezzella", LocalDate.of(1991, 6, 27), "Centre-Back", "CB", "Real Betis Balompié", "La Liga", false), - createPlayer(uuid(17), 8, "Marcos", "Javier", "Acuña", LocalDate.of(1991, 10, 28), "Left-Back", "LB", "Sevilla FC", "La Liga", false), - createPlayer(uuid(18), 25, "Lisandro", null, "Martínez", LocalDate.of(1998, 1, 18), "Centre-Back", "CB", "Manchester United", "Premier League", false), - // Leandro Paredes (squad number 5) - created during tests - createPlayer(uuid(19), 5, "Leandro", "Daniel", "Paredes", LocalDate.of(1994, 6, 29), "Defensive Midfield", "DM", "AS Roma", "Serie A", false), - createPlayer(uuid(20), 14, "Exequiel", "Alejandro", "Palacios", LocalDate.of(1998, 10, 5), "Central Midfield", "CM", "Bayer 04 Leverkusen", "Bundesliga", false), - createPlayer(uuid(21), 17, "Alejandro", "Darío", "Gómez", LocalDate.of(1988, 2, 15), "Left Winger", "LW", "AC Monza", "Serie A", false), - createPlayer(uuid(22), 18, "Guido", null, "Rodríguez", LocalDate.of(1994, 4, 12), "Defensive Midfield", "DM", "Real Betis Balompié", "La Liga", false), - createPlayer(uuid(23), 15, "Ángel", "Martín", "Correa", LocalDate.of(1995, 3, 9), "Right Winger", "RW", "Atlético Madrid", "La Liga", false), - createPlayer(uuid(24), 16, "Thiago", "Ezequiel", "Almada", LocalDate.of(2001, 4, 26), "Attacking Midfield", "AM", "Atlanta United FC", "Major League Soccer", false), - createPlayer(uuid(25), 21, "Paulo", "Exequiel", "Dybala", LocalDate.of(1993, 11, 15), "Second Striker", "SS", "AS Roma", "Serie A", false), - createPlayer(uuid(26), 22, "Lautaro", "Javier", "Martínez", LocalDate.of(1997, 8, 22), "Centre-Forward", "CF", "Inter Milan", "Serie A", false)); + createPlayer("5a9cd988-95e6-54c1-bc34-9aa08acca8d0", 1, "Franco", "Daniel", "Armani", LocalDate.of(1986, 10, 16), "Goalkeeper", "GK", "River Plate", "Copa de la Liga", false), + createPlayer("5fdb10e8-38c0-5084-9a3f-b369a960b9c2", 2, "Juan", "Marcos", "Foyth", LocalDate.of(1998, 1, 12), "Right-Back", "RB", "Villarreal", "La Liga", false), + createPlayer("bbd441f7-fcfb-5834-8468-2a9004b64c8c", 4, "Gonzalo", "Ariel", "Montiel", LocalDate.of(1997, 1, 1), "Right-Back", "RB", "Nottingham Forest", "Premier League", false), + createPlayer("9d140400-196f-55d8-86e1-e0b96a375c83", 5, "Leandro", "Daniel", "Paredes", LocalDate.of(1994, 6, 29), "Defensive Midfield", "DM", "AS Roma", "Serie A", false), + createPlayer("d8bfea25-f189-5d5e-b3a5-ed89329b9f7c", 6, "Germán", "Alejo", "Pezzella", LocalDate.of(1991, 6, 27), "Centre-Back", "CB", "Real Betis Balompié", "La Liga", false), + createPlayer("dca343a8-12e5-53d6-89a8-916b120a5ee4", 8, "Marcos", "Javier", "Acuña", LocalDate.of(1991, 10, 28), "Left-Back", "LB", "Sevilla FC", "La Liga", false), + createPlayer("c62f2ac1-41e8-5d34-b073-2ba0913d0e31", 12, "Gerónimo", null, "Rulli", LocalDate.of(1992, 5, 20), "Goalkeeper", "GK", "Ajax Amsterdam", "Eredivisie", false), + createPlayer("d3b0e8e8-2c34-531a-b608-b24fed0ef986", 14, "Exequiel", "Alejandro", "Palacios", LocalDate.of(1998, 10, 5), "Central Midfield", "CM", "Bayer 04 Leverkusen", "Bundesliga", false), + createPlayer("b1306b7b-a3a4-5f7c-90fd-dd5bdbed57ba", 15, "Ángel", "Martín", "Correa", LocalDate.of(1995, 3, 9), "Right Winger", "RW", "Atlético Madrid", "La Liga", false), + createPlayer("ecec27e8-487b-5622-b116-0855020477ed", 16, "Thiago", "Ezequiel", "Almada", LocalDate.of(2001, 4, 26), "Attacking Midfield", "AM", "Atlanta United FC", "Major League Soccer", false), + createPlayer("7cc8d527-56a2-58bd-9528-2618fc139d30", 17, "Alejandro","Darío", "Gómez", LocalDate.of(1988, 2, 15), "Left Winger", "LW", "AC Monza", "Serie A", false), + createPlayer("191c82af-0c51-526a-b903-c3600b61b506", 18, "Guido", null, "Rodríguez", LocalDate.of(1994, 4, 12), "Defensive Midfield", "DM", "Real Betis Balompié", "La Liga", false), + createPlayer("7941cd7c-4df1-5952-97e8-1e7f5d08e8aa", 21, "Paulo", "Exequiel", "Dybala", LocalDate.of(1993, 11, 15), "Second Striker", "SS", "AS Roma", "Serie A", false), + createPlayer("79c96f29-c59f-5f98-96b8-3a5946246624", 22, "Lautaro", "Javier", "Martínez", LocalDate.of(1997, 8, 22), "Centre-Forward", "CF", "Inter Milan", "Serie A", false), + createPlayer("98306555-a466-5d18-804e-dc82175e697b", 25, "Lisandro", null, "Martínez", LocalDate.of(1998, 1, 18), "Centre-Back", "CB", "Manchester United", "Premier League", false)); } - private static Player createPlayer(UUID id, Integer squadNumber, String firstName, String middleName, + private static Player createPlayer(String id, Integer squadNumber, String firstName, String middleName, String lastName, LocalDate dateOfBirth, String position, String abbrPosition, String team, String league, Boolean starting11) { Player player = new Player(); - player.setId(id); + player.setId(UUID.fromString(id)); player.setSquadNumber(squadNumber); player.setFirstName(firstName); player.setMiddleName(middleName); diff --git a/src/test/java/ar/com/nanotaboada/java/samples/spring/boot/test/controllers/PlayersControllerTests.java b/src/test/java/ar/com/nanotaboada/java/samples/spring/boot/test/controllers/PlayersControllerTests.java index 2047c38..b5c0911 100644 --- a/src/test/java/ar/com/nanotaboada/java/samples/spring/boot/test/controllers/PlayersControllerTests.java +++ b/src/test/java/ar/com/nanotaboada/java/samples/spring/boot/test/controllers/PlayersControllerTests.java @@ -78,7 +78,7 @@ void givenValidPlayer_whenPost_thenReturnsCreated() // Given PlayerDTO dto = PlayerDTOFakes.createOneValid(); PlayerDTO savedDTO = PlayerDTOFakes.createOneValid(); - UUID savedUuid = UUID.fromString("00000000-0000-0000-0000-000000000019"); + UUID savedUuid = UUID.fromString("f8d13028-0d22-5513-8774-08a2332b5814"); savedDTO.setId(savedUuid); String content = objectMapper.writeValueAsString(dto); Mockito @@ -527,7 +527,7 @@ void givenNullBodySquadNumber_whenPut_thenReturnsBadRequest() void givenPlayerExists_whenDelete_thenReturnsNoContent() throws Exception { // Given - Integer squadNumber = 17; + Integer squadNumber = 27; // Lo Celso Mockito .when(playersServiceMock.deleteBySquadNumber(squadNumber)) .thenReturn(true); diff --git a/src/test/java/ar/com/nanotaboada/java/samples/spring/boot/test/repositories/PlayersRepositoryTests.java b/src/test/java/ar/com/nanotaboada/java/samples/spring/boot/test/repositories/PlayersRepositoryTests.java index fe6c20e..ec09503 100644 --- a/src/test/java/ar/com/nanotaboada/java/samples/spring/boot/test/repositories/PlayersRepositoryTests.java +++ b/src/test/java/ar/com/nanotaboada/java/samples/spring/boot/test/repositories/PlayersRepositoryTests.java @@ -122,4 +122,21 @@ void givenPlayerDoesNotExist_whenFindBySquadNumber_thenReturnsEmpty() { // Then then(actual).isEmpty(); } + + /** + * Given Lo Celso is saved to the database (not pre-seeded) + * When deleting that player by their UUID + * Then the player is no longer found + */ + @Test + void givenPlayerExists_whenDelete_thenPlayerIsRemoved() { + // Given + Player saved = repository.save(PlayerFakes.createOneValid()); // Lo Celso (squad 27) + UUID savedId = saved.getId(); + then(savedId).isNotNull(); + // When + repository.delete(saved); + // Then + then(repository.findById(savedId)).isEmpty(); + } } diff --git a/src/test/java/ar/com/nanotaboada/java/samples/spring/boot/test/services/PlayersServiceTests.java b/src/test/java/ar/com/nanotaboada/java/samples/spring/boot/test/services/PlayersServiceTests.java index f8730a1..13b9fdf 100644 --- a/src/test/java/ar/com/nanotaboada/java/samples/spring/boot/test/services/PlayersServiceTests.java +++ b/src/test/java/ar/com/nanotaboada/java/samples/spring/boot/test/services/PlayersServiceTests.java @@ -270,7 +270,7 @@ void givenPlayerDoesNotExist_whenRetrieveBySquadNumber_thenReturnsNull() { * Then a list of matching player DTOs is returned */ @Test - void givenPlayersExist_whenSearchByLeague_thenReturns7Players() { + void givenPlayersExist_whenSearchByLeague_thenReturns6Players() { // Given String league = "Premier"; List entities = PlayerFakes.createAll().stream() @@ -403,11 +403,8 @@ void givenNullSquadNumber_whenUpdate_thenReturnsFalse() { @Test void givenPlayerExists_whenDelete_thenReturnsTrue() { // Given - Integer squadNumber = 17; - Player entity = PlayerFakes.createAll().stream() - .filter(p -> squadNumber.equals(p.getSquadNumber())) - .findFirst() - .orElseThrow(); + Player entity = PlayerFakes.createOneValid(); // Lo Celso (squad 27) + Integer squadNumber = entity.getSquadNumber(); Mockito .when(playersRepositoryMock.findBySquadNumber(squadNumber)) .thenReturn(Optional.of(entity)); diff --git a/src/test/resources/dml.sql b/src/test/resources/dml.sql index 978216d..55e0507 100644 --- a/src/test/resources/dml.sql +++ b/src/test/resources/dml.sql @@ -1,36 +1,36 @@ -- Test Database Data (DML - Data Manipulation Language) --- Contains all 26 players from production database EXCEPT Leandro Paredes (squadNumber 5) --- Leandro Paredes will be created during tests (for POST/create operations) +-- Contains all 26 players from the 2022 FIFA World Cup Argentina squad +-- Giovani Lo Celso (squadNumber 27) will be created and deleted during tests -- Damián Emiliano Martínez (squadNumber 23) will be updated during tests --- Alejandro Gómez (squadNumber 17) will be deleted during tests -- Starting 11 (id is PRIMARY KEY, squadNumber is UNIQUE) INSERT INTO players (id, squadNumber, firstName, middleName, lastName, dateOfBirth, position, abbrPosition, team, league, starting11) VALUES -('00000000-0000-0000-0000-000000000001', 23, 'Damián', 'Emiliano', 'Martínez', '1992-09-02T00:00:00.000Z', 'Goalkeeper', 'GK', 'Aston Villa FC', 'Premier League', 1), -('00000000-0000-0000-0000-000000000002', 26, 'Nahuel', NULL, 'Molina', '1998-04-06T00:00:00.000Z', 'Right-Back', 'RB', 'Atlético Madrid', 'La Liga', 1), -('00000000-0000-0000-0000-000000000003', 13, 'Cristian', 'Gabriel', 'Romero', '1998-04-27T00:00:00.000Z', 'Centre-Back', 'CB', 'Tottenham Hotspur', 'Premier League', 1), -('00000000-0000-0000-0000-000000000004', 19, 'Nicolás', 'Hernán Gonzalo', 'Otamendi', '1988-02-12T00:00:00.000Z', 'Centre-Back', 'CB', 'SL Benfica', 'Liga Portugal', 1), -('00000000-0000-0000-0000-000000000005', 3, 'Nicolás', 'Alejandro', 'Tagliafico', '1992-08-31T00:00:00.000Z', 'Left-Back', 'LB', 'Olympique Lyon', 'Ligue 1', 1), -('00000000-0000-0000-0000-000000000006', 11, 'Ángel', 'Fabián', 'Di María', '1988-02-14T00:00:00.000Z', 'Right Winger', 'RW', 'SL Benfica', 'Liga Portugal', 1), -('00000000-0000-0000-0000-000000000007', 7, 'Rodrigo', 'Javier', 'de Paul', '1994-05-24T00:00:00.000Z', 'Central Midfield', 'CM', 'Atlético Madrid', 'La Liga', 1), -('00000000-0000-0000-0000-000000000008', 24, 'Enzo', 'Jeremías', 'Fernández', '2001-01-17T00:00:00.000Z', 'Central Midfield', 'CM', 'Chelsea FC', 'Premier League', 1), -('00000000-0000-0000-0000-000000000009', 20, 'Alexis', NULL, 'Mac Allister', '1998-12-24T00:00:00.000Z', 'Central Midfield', 'CM', 'Liverpool FC', 'Premier League', 1), -('00000000-0000-0000-0000-000000000010', 10, 'Lionel', 'Andrés', 'Messi', '1987-06-24T00:00:00.000Z', 'Right Winger', 'RW', 'Inter Miami CF', 'Major League Soccer', 1), -('00000000-0000-0000-0000-000000000011', 9, 'Julián', NULL, 'Álvarez', '2000-01-31T00:00:00.000Z', 'Centre-Forward', 'CF', 'Manchester City', 'Premier League', 1); +('01772c59-43f0-5d85-b913-c78e4e281452', 23, 'Damián', 'Emiliano', 'Martínez', '1992-09-02T00:00:00.000Z', 'Goalkeeper', 'GK', 'Aston Villa FC', 'Premier League', 1), +('da31293b-4c7e-5e0f-a168-469ee29ecbc4', 26, 'Nahuel', NULL, 'Molina', '1998-04-06T00:00:00.000Z', 'Right-Back', 'RB', 'Atlético Madrid', 'La Liga', 1), +('c096c69e-762b-5281-9290-bb9c167a24a0', 13, 'Cristian', 'Gabriel', 'Romero', '1998-04-27T00:00:00.000Z', 'Centre-Back', 'CB', 'Tottenham Hotspur', 'Premier League', 1), +('d5f7dd7a-1dcb-5960-ba27-e34865b63358', 19, 'Nicolás', 'Hernán Gonzalo', 'Otamendi', '1988-02-12T00:00:00.000Z', 'Centre-Back', 'CB', 'SL Benfica', 'Liga Portugal', 1), +('2f6f90a0-9b9d-5023-96d2-a2aaf03143a6', 3, 'Nicolás', 'Alejandro', 'Tagliafico', '1992-08-31T00:00:00.000Z', 'Left-Back', 'LB', 'Olympique Lyon', 'Ligue 1', 1), +('b5b46e79-929e-5ed2-949d-0d167109c022', 11, 'Ángel', 'Fabián', 'Di María', '1988-02-14T00:00:00.000Z', 'Right Winger', 'RW', 'SL Benfica', 'Liga Portugal', 1), +('0293b282-1da8-562e-998e-83849b417a42', 7, 'Rodrigo', 'Javier', 'de Paul', '1994-05-24T00:00:00.000Z', 'Central Midfield', 'CM', 'Atlético Madrid', 'La Liga', 1), +('d3ba552a-dac3-588a-b961-1ea7224017fd', 24, 'Enzo', 'Jeremías', 'Fernández', '2001-01-17T00:00:00.000Z', 'Central Midfield', 'CM', 'SL Benfica', 'Liga Portugal', 1), +('9613cae9-16ab-5b54-937e-3135123b9e0d', 20, 'Alexis', NULL, 'Mac Allister', '1998-12-24T00:00:00.000Z', 'Central Midfield', 'CM', 'Brighton & Hove Albion', 'Premier League', 1), +('acc433bf-d505-51fe-831e-45eb44c4d43c', 10, 'Lionel', 'Andrés', 'Messi', '1987-06-24T00:00:00.000Z', 'Right Winger', 'RW', 'Paris Saint-Germain', 'Ligue 1', 1), +('38bae91d-8519-55a2-b30a-b9fe38849bfb', 9, 'Julián', NULL, 'Álvarez', '2000-01-31T00:00:00.000Z', 'Centre-Forward', 'CF', 'Manchester City', 'Premier League', 1); --- Substitutes (squad number 5 intentionally skipped - Leandro Paredes will be created during tests) +-- Substitutes INSERT INTO players (id, squadNumber, firstName, middleName, lastName, dateOfBirth, position, abbrPosition, team, league, starting11) VALUES -('00000000-0000-0000-0000-000000000012', 1, 'Franco', 'Daniel', 'Armani', '1986-10-16T00:00:00.000Z', 'Goalkeeper', 'GK', 'River Plate', 'Copa de la Liga', 0), -('00000000-0000-0000-0000-000000000013', 12, 'Gerónimo', NULL, 'Rulli', '1992-05-20T00:00:00.000Z', 'Goalkeeper', 'GK', 'Ajax Amsterdam', 'Eredivisie', 0), -('00000000-0000-0000-0000-000000000014', 2, 'Juan', 'Marcos', 'Foyth', '1998-01-12T00:00:00.000Z', 'Right-Back', 'RB', 'Villarreal', 'La Liga', 0), -('00000000-0000-0000-0000-000000000015', 4, 'Gonzalo', 'Ariel', 'Montiel', '1997-01-01T00:00:00.000Z', 'Right-Back', 'RB', 'Nottingham Forest', 'Premier League', 0), -('00000000-0000-0000-0000-000000000016', 6, 'Germán', 'Alejo', 'Pezzella', '1991-06-27T00:00:00.000Z', 'Centre-Back', 'CB', 'Real Betis Balompié', 'La Liga', 0), -('00000000-0000-0000-0000-000000000017', 8, 'Marcos', 'Javier', 'Acuña', '1991-10-28T00:00:00.000Z', 'Left-Back', 'LB', 'Sevilla FC', 'La Liga', 0), -('00000000-0000-0000-0000-000000000018', 25, 'Lisandro', NULL, 'Martínez', '1998-01-18T00:00:00.000Z', 'Centre-Back', 'CB', 'Manchester United', 'Premier League', 0), -('00000000-0000-0000-0000-000000000020', 14, 'Exequiel', 'Alejandro', 'Palacios', '1998-10-05T00:00:00.000Z', 'Central Midfield', 'CM', 'Bayer 04 Leverkusen', 'Bundesliga', 0), -('00000000-0000-0000-0000-000000000021', 17, 'Alejandro', 'Darío', 'Gómez', '1988-02-15T00:00:00.000Z', 'Left Winger', 'LW', 'AC Monza', 'Serie A', 0), -('00000000-0000-0000-0000-000000000022', 18, 'Guido', NULL, 'Rodríguez', '1994-04-12T00:00:00.000Z', 'Defensive Midfield', 'DM', 'Real Betis Balompié', 'La Liga', 0), -('00000000-0000-0000-0000-000000000023', 15, 'Ángel', 'Martín', 'Correa', '1995-03-09T00:00:00.000Z', 'Right Winger', 'RW', 'Atlético Madrid', 'La Liga', 0), -('00000000-0000-0000-0000-000000000024', 16, 'Thiago', 'Ezequiel', 'Almada', '2001-04-26T00:00:00.000Z', 'Attacking Midfield', 'AM', 'Atlanta United FC', 'Major League Soccer', 0), -('00000000-0000-0000-0000-000000000025', 21, 'Paulo', 'Exequiel', 'Dybala', '1993-11-15T00:00:00.000Z', 'Second Striker', 'SS', 'AS Roma', 'Serie A', 0), -('00000000-0000-0000-0000-000000000026', 22, 'Lautaro', 'Javier', 'Martínez', '1997-08-22T00:00:00.000Z', 'Centre-Forward', 'CF', 'Inter Milan', 'Serie A', 0); +('5a9cd988-95e6-54c1-bc34-9aa08acca8d0', 1, 'Franco', 'Daniel', 'Armani', '1986-10-16T00:00:00.000Z', 'Goalkeeper', 'GK', 'River Plate', 'Copa de la Liga', 0), +('5fdb10e8-38c0-5084-9a3f-b369a960b9c2', 2, 'Juan', 'Marcos', 'Foyth', '1998-01-12T00:00:00.000Z', 'Right-Back', 'RB', 'Villarreal', 'La Liga', 0), +('bbd441f7-fcfb-5834-8468-2a9004b64c8c', 4, 'Gonzalo', 'Ariel', 'Montiel', '1997-01-01T00:00:00.000Z', 'Right-Back', 'RB', 'Nottingham Forest', 'Premier League', 0), +('9d140400-196f-55d8-86e1-e0b96a375c83', 5, 'Leandro', 'Daniel', 'Paredes', '1994-06-29T00:00:00.000Z', 'Defensive Midfield', 'DM', 'AS Roma', 'Serie A', 0), +('d8bfea25-f189-5d5e-b3a5-ed89329b9f7c', 6, 'Germán', 'Alejo', 'Pezzella', '1991-06-27T00:00:00.000Z', 'Centre-Back', 'CB', 'Real Betis Balompié', 'La Liga', 0), +('dca343a8-12e5-53d6-89a8-916b120a5ee4', 8, 'Marcos', 'Javier', 'Acuña', '1991-10-28T00:00:00.000Z', 'Left-Back', 'LB', 'Sevilla FC', 'La Liga', 0), +('c62f2ac1-41e8-5d34-b073-2ba0913d0e31', 12, 'Gerónimo', NULL, 'Rulli', '1992-05-20T00:00:00.000Z', 'Goalkeeper', 'GK', 'Ajax Amsterdam', 'Eredivisie', 0), +('d3b0e8e8-2c34-531a-b608-b24fed0ef986', 14, 'Exequiel', 'Alejandro', 'Palacios', '1998-10-05T00:00:00.000Z', 'Central Midfield', 'CM', 'Bayer 04 Leverkusen', 'Bundesliga', 0), +('b1306b7b-a3a4-5f7c-90fd-dd5bdbed57ba', 15, 'Ángel', 'Martín', 'Correa', '1995-03-09T00:00:00.000Z', 'Right Winger', 'RW', 'Atlético Madrid', 'La Liga', 0), +('ecec27e8-487b-5622-b116-0855020477ed', 16, 'Thiago', 'Ezequiel', 'Almada', '2001-04-26T00:00:00.000Z', 'Attacking Midfield', 'AM', 'Atlanta United FC', 'Major League Soccer', 0), +('7cc8d527-56a2-58bd-9528-2618fc139d30', 17, 'Alejandro', 'Darío', 'Gómez', '1988-02-15T00:00:00.000Z', 'Left Winger', 'LW', 'AC Monza', 'Serie A', 0), +('191c82af-0c51-526a-b903-c3600b61b506', 18, 'Guido', NULL, 'Rodríguez', '1994-04-12T00:00:00.000Z', 'Defensive Midfield', 'DM', 'Real Betis Balompié', 'La Liga', 0), +('7941cd7c-4df1-5952-97e8-1e7f5d08e8aa', 21, 'Paulo', 'Exequiel', 'Dybala', '1993-11-15T00:00:00.000Z', 'Second Striker', 'SS', 'AS Roma', 'Serie A', 0), +('79c96f29-c59f-5f98-96b8-3a5946246624', 22, 'Lautaro', 'Javier', 'Martínez', '1997-08-22T00:00:00.000Z', 'Centre-Forward', 'CF', 'Inter Milan', 'Serie A', 0), +('98306555-a466-5d18-804e-dc82175e697b', 25, 'Lisandro', NULL, 'Martínez', '1998-01-18T00:00:00.000Z', 'Centre-Back', 'CB', 'Manchester United', 'Premier League', 0); diff --git a/storage/players-sqlite3.db b/storage/players-sqlite3.db index d7a8987..0a15fd4 100644 Binary files a/storage/players-sqlite3.db and b/storage/players-sqlite3.db differ