@Override
    public Result reconcile(Request request) {
        client.fetch(Reason.class, request.name()).ifPresent(reason -> {
            if (ExtensionUtil.isDeleted(reason)) {
                return;
            }
            if (ExtensionUtil.addFinalizers(reason.getMetadata(), Set.of(TRIGGERED_FINALIZER))) {
                // notifier
                onNewReasonReceived(reason);
                client.update(reason);
            }
        });
        return Result.doNotRetry();
    }
@Test
    void reconcile() {
        var reason = mock(Reason.class);
        var metadata = mock(Metadata.class);
        when(reason.getMetadata()).thenReturn(metadata);
        when(metadata.getDeletionTimestamp()).thenReturn(null);
        when(metadata.getFinalizers()).thenReturn(Set.of());

        when(client.fetch(eq(Reason.class), eq("fake-reason")))
            .thenReturn(Optional.of(reason));

        when(notificationCenter.notify(eq(reason))).thenReturn(Mono.empty());
        notificationTrigger.reconcile(new Reconciler.Request("fake-reason"));

        verify(notificationCenter).notify(eq(reason));
        verify(metadata).setFinalizers(eq(Set.of(NotificationTrigger.TRIGGERED_FINALIZER)));
        verify(client).update(any(Reason.class));
    }