package com.example.widgets; import com.example.data.InMemoryChartDataService; import org.junit.jupiter.api.Test; import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; /** * The definitions themselves — the factories need a Vaadin UI to resolve * translations, so they are exercised from {@code DashboardViewTest} instead. */ class WidgetRegistryTest { private final WidgetRegistry registry = new WidgetRegistry(new InMemoryChartDataService()); @Test void definitions_areListedInRegistrationOrder() { List types = registry.definitions().stream() .map(WidgetDefinition::type).toList(); assertEquals(List.of(WidgetRegistry.REVENUE_TREND, WidgetRegistry.REVENUE_MONTH, WidgetRegistry.REVENUE_REGION), types); assertTrue(registry.definitions().stream() .allMatch(d -> d.width() > 0 && d.height() > 0), "every definition carries a usable default size"); } @Test void require_rejectsAnUnknownType() { assertThrows(IllegalArgumentException.class, () -> registry.require("nope")); } @Test void register_replacesTheDefinitionOfTheSameType() { int before = registry.definitions().size(); WidgetDefinition replacement = new WidgetDefinition(WidgetRegistry.REVENUE_TREND, "card.revenueTrend", 2, 2, context -> null); registry.register(replacement); assertEquals(before, registry.definitions().size()); assertEquals(replacement, registry.require(WidgetRegistry.REVENUE_TREND)); } }