Adloun

Spring Boot : écrire le serveur (école d'ingénieur) · Chapitre 2 · Exercice de TD

Ouvert ou fermé

Injection de dépendances et configuration · niveau 2

Énoncé

Écrire un service Magasin dont la méthode estOuvert() utilise les horaires de l'exercice 2.5 et une horloge injectée. Le tester sans Spring pour un lundi à 10 h, un dimanche à 10 h et un lundi à 8 h 59.

Corrigé


@Service
public class Magasin {

    private final Clock horloge;
    private final HorairesProperties horaires;

    public Magasin(Clock horloge, HorairesProperties horaires) {
        this.horloge = horloge;
        this.horaires = horaires;
    }

    public boolean estOuvert() {
        LocalDateTime maintenant = LocalDateTime.now(horloge);
        if (horaires.joursFermeture().contains(maintenant.getDayOfWeek())) {
            return false;
        }
        return !maintenant.toLocalTime().isBefore(horaires.ouverture())
                && maintenant.toLocalTime().isBefore(horaires.fermeture());
    }
}

L'horloge est déclarée par une méthode @Bean, comme dans le chapitre. Les tests figent l'horloge à la date voulue (le 5 octobre 2026 est un lundi, le 4 un dimanche) :


class MagasinTest {

    private final HorairesProperties horaires = new HorairesProperties(
            LocalTime.of(9, 0), LocalTime.of(19, 0), List.of(DayOfWeek.SUNDAY));

    private Magasin le(String dateHeure) {
        Clock fige = Clock.fixed(Instant.parse(dateHeure + "Z"), ZoneOffset.UTC);
        return new Magasin(fige, horaires);
    }

    @Test
    void ouvertUnLundiMatin() {
        assertThat(le("2026-10-05T10:00:00").estOuvert()).isTrue();
    }

    @Test
    void fermeLeDimanche() {
        assertThat(le("2026-10-04T10:00:00").estOuvert()).isFalse();
    }

    @Test
    void fermeAvantNeufHeures() {
        assertThat(le("2026-10-05T08:59:00").estOuvert()).isFalse();
    }
}

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →