- public void testDataChangedWithNoSender(){
- new JavaTestKit(getSystem()) {{
- final AsyncDataChangeEvent mockChangeEvent = Mockito.mock(AsyncDataChangeEvent.class);
- final AsyncDataChangeListener mockListener = Mockito.mock(AsyncDataChangeListener.class);
- final Props props = DataChangeListener.props(mockListener);
- final ActorRef subject = getSystem().actorOf(props, "testDataChangedWithNoSender");
-
- getSystem().eventStream().subscribe(getRef(), DeadLetter.class);
-
- subject.tell(new DataChanged(CompositeModel.createTestContext(), mockChangeEvent),
- ActorRef.noSender());
-
- // Make sure no DataChangedReply is sent to DeadLetters.
- while(true) {
- DeadLetter deadLetter;
- try {
- deadLetter = expectMsgClass(duration("1 seconds"), DeadLetter.class);
- } catch (AssertionError e) {
- // Timed out - got no DeadLetter - this is good
- break;
- }
+ public void testDataChangedWithListenerRuntimeEx() {
+ new TestKit(getSystem()) {
+ {
+ final AsyncDataChangeEvent mockChangeEvent1 = Mockito.mock(AsyncDataChangeEvent.class);
+ final AsyncDataChangeEvent mockChangeEvent2 = Mockito.mock(AsyncDataChangeEvent.class);
+ final AsyncDataChangeEvent mockChangeEvent3 = Mockito.mock(AsyncDataChangeEvent.class);
+
+ AsyncDataChangeListener mockListener = Mockito.mock(AsyncDataChangeListener.class);
+ Mockito.doThrow(new RuntimeException("mock")).when(mockListener).onDataChanged(mockChangeEvent2);
+
+ Props props = DataChangeListener.props(mockListener, TEST_PATH);
+ ActorRef subject = getSystem().actorOf(props, "testDataChangedWithListenerRuntimeEx");
+
+ // Let the DataChangeListener know that notifications should be
+ // enabled
+ subject.tell(new EnableNotification(true, "test"), getRef());
+
+ subject.tell(new DataChanged(mockChangeEvent1), getRef());
+ expectMsgClass(DataChangedReply.class);
+
+ subject.tell(new DataChanged(mockChangeEvent2), getRef());
+ expectMsgClass(DataChangedReply.class);
+
+ subject.tell(new DataChanged(mockChangeEvent3), getRef());
+ expectMsgClass(DataChangedReply.class);