@Bean public AccountMetadataEventHandler accountMetadataEventHandler() { return new AccountMetadataEventHandler(); } }
@EventHandlerMethod public void accountDebited(EventHandlerContext<AccountDebitedEvent> ctx) { add(ctx); }
@Test public void shouldCreateAccount() { Map<String, String> saveMetadata = Collections.singletonMap("xy", "z"); EntityWithIdAndVersion<Account> saveResult = accountRepository.save(new CreateAccountCommand(new BigDecimal("10.23")), Optional.of(new SaveOptions().withEventMetadata(saveMetadata))); EntityWithMetadata<Account> findResult = accountRepository.find(saveResult.getEntityId()); assertEquals(Optional.of(saveMetadata), findResult.getEvents().get(0).getMetadata()); Map<String, String> updateMetadata = Collections.singletonMap("abc", "d"); EntityWithIdAndVersion<Account> updateResult = accountRepository.update(saveResult.getEntityId(), new DebitAccountCommand(new BigDecimal("1.34"), null), Optional.of(new UpdateOptions().withEventMetadata(updateMetadata))); EntityWithMetadata<Account> findResult2 = accountRepository.find(saveResult.getEntityId()); assertEquals(Optional.of(updateMetadata), findResult2.getEvents().get(1).getMetadata()); ReceivedEvent createEvent = accountMetadataEventHandler.eventuallyContains("accountMetadataEventHandler - save", saveResult.getEntityVersion()); assertEquals(Optional.of(saveMetadata), createEvent.getEventMetadata()); ReceivedEvent updateEvent = accountMetadataEventHandler.eventuallyContains("accountMetadataEventHandler - update", updateResult.getEntityVersion()); assertEquals(Optional.of(updateMetadata), updateEvent.getEventMetadata()); } }
@Test public void shouldCreateAccount() { Map<String, String> saveMetadata = Collections.singletonMap("xy", "z"); EntityWithIdAndVersion<Account> saveResult = accountRepository.save(new CreateAccountCommand(new BigDecimal("10.23")), Optional.of(new SaveOptions().withEventMetadata(saveMetadata))); EntityWithMetadata<Account> findResult = accountRepository.find(saveResult.getEntityId()); assertEquals(Optional.of(saveMetadata), findResult.getEvents().get(0).getMetadata()); Map<String, String> updateMetadata = Collections.singletonMap("abc", "d"); EntityWithIdAndVersion<Account> updateResult = accountRepository.update(saveResult.getEntityId(), new DebitAccountCommand(new BigDecimal("1.34"), null), Optional.of(new UpdateOptions().withEventMetadata(updateMetadata))); EntityWithMetadata<Account> findResult2 = accountRepository.find(saveResult.getEntityId()); assertEquals(Optional.of(updateMetadata), findResult2.getEvents().get(1).getMetadata()); ReceivedEvent createEvent = accountMetadataEventHandler.eventuallyContains("accountMetadataEventHandler - save", saveResult.getEntityVersion()); assertEquals(Optional.of(saveMetadata), createEvent.getEventMetadata()); ReceivedEvent updateEvent = accountMetadataEventHandler.eventuallyContains("accountMetadataEventHandler - update", updateResult.getEntityVersion()); assertEquals(Optional.of(updateMetadata), updateEvent.getEventMetadata()); } }
@EventHandlerMethod public void accountCreated(EventHandlerContext<AccountCreatedEvent> ctx) { add(ctx); }
@Bean public AccountMetadataEventHandler accountMetadataEventHandler() { return new AccountMetadataEventHandler(); } }
@EventHandlerMethod public void accountDebited(EventHandlerContext<AccountDebitedEvent> ctx) { add(ctx); }
@EventHandlerMethod public void accountCreated(EventHandlerContext<AccountCreatedEvent> ctx) { add(ctx); }