in component-test/src/main/java/org/apache/fineract/cn/rhythm/TestBeats.java [159:200]
public void clockOffsetShouldEffectBeatTiming() throws InterruptedException {
final String tenantIdentifier = tenantDataStoreContext.getTenantName();
final String applicationIdentifier = "funnybusiness-v7";
final String beatIdentifier = "fiddlebeat0";
final ClockOffset initialClockOffset = this.testSubject.getClockOffset();
Assert.assertEquals(Integer.valueOf(0), initialClockOffset.getHours());
Assert.assertEquals(Integer.valueOf(0), initialClockOffset.getMinutes());
Assert.assertEquals(Integer.valueOf(0), initialClockOffset.getSeconds());
final LocalDateTime now = LocalDateTime.now(Clock.systemUTC());
final ClockOffset offsetToNow = new ClockOffset(now.getHour(), now.getMinute(), now.getSecond());
this.testSubject.setClockOffset(offsetToNow);
Assert.assertTrue(this.eventRecorder.wait(EventConstants.PUT_CLOCKOFFSET, offsetToNow));
TimeUnit.SECONDS.sleep(1);
final ClockOffset changedClockOffset = this.testSubject.getClockOffset();
Assert.assertEquals(offsetToNow, changedClockOffset);
final Beat beat = new Beat();
beat.setIdentifier(beatIdentifier);
beat.setAlignmentHour(0);
final LocalDateTime expectedBeatTimestamp = getExpectedBeatTimestamp(now, 0, offsetToNow);
Mockito.doReturn(Optional.of("boop")).when(beatPublisherServiceMock)
.requestPermissionForBeats(Matchers.eq(tenantIdentifier), Matchers.eq(applicationIdentifier));
Mockito.when(beatPublisherServiceMock
.publishBeat(beatIdentifier, tenantIdentifier, applicationIdentifier, expectedBeatTimestamp))
.thenReturn(true);
this.testSubject.createBeat(applicationIdentifier, beat);
Assert.assertTrue(this.eventRecorder.wait(EventConstants.POST_BEAT, new BeatEvent(applicationIdentifier, beat.getIdentifier())));
Mockito.verify(beatPublisherServiceMock, Mockito.timeout(10_000).times(1)).publishBeat(beatIdentifier, tenantIdentifier, applicationIdentifier, expectedBeatTimestamp);
//Set back to zero'ed clock offset so you don't break the rest of the tests.
this.testSubject.setClockOffset(initialClockOffset);
Assert.assertTrue(this.eventRecorder.wait(EventConstants.PUT_CLOCKOFFSET, initialClockOffset));
TimeUnit.SECONDS.sleep(1);
}