@Override
    public Usuario getUsuarioByUsername(String username) {
        Usuario usuario = usuarioRepository.findByUsername(username).orElseThrow(
                () -> new ResourceNotFoundException("Usuario no encontrado con el id: " + username));

        // Obtengo las calificaciones usando RestTemplate
        Calificacion[] calificacionesUsuario = restTemplate.getForObject(
                "http://calificacion-service/calificaciones/usuarios/" + usuario.getId(), Calificacion[].class);

        if (calificacionesUsuario != null && calificacionesUsuario.length > 0) {
            logger.info("El usuario {} tiene las siguientes calificaciones:", usuario.getName());

            // Con un for each recorro el arreglo de calificaciones y cojo el id del hotel de cada una y obtengo su hotel con ello
            for (Calificacion calificacion : calificacionesUsuario) {
                String hotelId = calificacion.getHotelId();

                // Obtengo el hotel usando Feign Client
                Hotel hotel = hotelFeignService.obtenerHotel(hotelId);
                calificacion.setHotel(hotel);
                logger.info("Calificación ID: {}, Calificación: {}, Hotel: {}", calificacion.getId(), calificacion.getCalificacion(), hotel.toString());
            }
        } else {
            logger.info("El usuario {} no tiene calificaciones.", usuario.getName());
        }

        usuario.setCalificaciones(calificacionesUsuario);
        return usuario;
    }
@Test
    void testGetUsuarioByUsername() {
        when(usuarioRepository.findByUsername(anyString())).thenReturn(Optional.of(usuario));
        when(restTemplate.getForObject(anyString(), eq(Calificacion[].class))).thenReturn(new Calificacion[0]);

        Usuario foundUsuario = usuarioService.getUsuarioByUsername("johndoe");

        assertThat(foundUsuario).isNotNull();
        assertThat(foundUsuario.getUsername()).isEqualTo("johndoe");
    }