public void testBlipAppendReplyFiresEvent() { ObservableConversation mirror = mirrorConversation(target); ObservableConversationBlip b1 = target.getRootThread().appendBlip(); ObservableConversationBlip b1mirror = mirror.getRootThread().getFirstBlip(); mirror.addListener(convListener); b1.addReplyThread(); ObservableConversationThread t1mirror = b1mirror.getReplyThreads().iterator().next(); verify(convListener).onThreadAdded(t1mirror); verifyNoMoreInteractions(convListener); }
public void testBlipAppendReplyFiresEvent() { ObservableConversation mirror = mirrorConversation(target); ObservableConversationBlip b1 = target.getRootThread().appendBlip(); ObservableConversationBlip b1mirror = mirror.getRootThread().getFirstBlip(); mirror.addListener(convListener); b1.addReplyThread(); ObservableConversationThread t1mirror = b1mirror.getReplyThreads().iterator().next(); verify(convListener).onThreadAdded(t1mirror); verifyNoMoreInteractions(convListener); }
public void testThreadRemovalFiresEvent() { ObservableConversation mirror = mirrorConversation(target); ObservableConversationBlip b1 = target.getRootThread().appendBlip(); ObservableConversationThread t1 = b1.addReplyThread(); ObservableConversationThread t1mirror = mirror.getRootThread().getFirstBlip() .getReplyThreads().iterator().next(); t1.appendBlip(); ObservableConversationBlip b3mirror = t1mirror.getFirstBlip(); mirror.addListener(convListener); // Trigger thread deletion. t1.delete(); verify(convListener).onBlipDeleted(b3mirror); verify(convListener).onThreadDeleted(t1mirror); allowBlipTimestampChanged(convListener); verifyNoMoreInteractions(convListener); }
public void testRemovedListenersReceiveNoEvents() { ObservableConversation mirror = mirrorConversation(target); ObservableConversationBlip b1 = target.getRootThread().appendBlip(); ObservableConversationThread t1 = b1.addReplyThread(); ObservableConversationBlip b2 = t1.appendBlip(); ObservableConversationBlip b1mirror = mirror.getRootThread().getFirstBlip(); ObservableConversationThread t1mirror = b1mirror.getReplyThreads().iterator().next(); t1mirror.getFirstBlip(); mirror.addListener(convListener); mirror.removeListener(convListener); b1.delete(); verifyNoMoreInteractions(convListener); }
public void testThreadRemovalFiresEvent() { ObservableConversation mirror = mirrorConversation(target); ObservableConversationBlip b1 = target.getRootThread().appendBlip(); ObservableConversationThread t1 = b1.addReplyThread(); ObservableConversationThread t1mirror = mirror.getRootThread().getFirstBlip() .getReplyThreads().iterator().next(); t1.appendBlip(); ObservableConversationBlip b3mirror = t1mirror.getFirstBlip(); mirror.addListener(convListener); // Trigger thread deletion. t1.delete(); verify(convListener).onBlipDeleted(b3mirror); verify(convListener).onThreadDeleted(t1mirror); allowBlipTimestampChanged(convListener); verifyNoMoreInteractions(convListener); }
public void testRemovedListenersReceiveNoEvents() { ObservableConversation mirror = mirrorConversation(target); ObservableConversationBlip b1 = target.getRootThread().appendBlip(); ObservableConversationThread t1 = b1.addReplyThread(); ObservableConversationBlip b2 = t1.appendBlip(); ObservableConversationBlip b1mirror = mirror.getRootThread().getFirstBlip(); ObservableConversationThread t1mirror = b1mirror.getReplyThreads().iterator().next(); t1mirror.getFirstBlip(); mirror.addListener(convListener); mirror.removeListener(convListener); b1.delete(); verifyNoMoreInteractions(convListener); }
public void testCompoundEventsFireBottomUp() { ObservableConversation mirror = mirrorConversation(target); // Build tall structure. // rootThread // |- b1 (deleted) // |- t1 // |- b2 ObservableConversationBlip b1 = target.getRootThread().appendBlip(); ObservableConversationThread t1 = b1.addReplyThread(); ObservableConversationBlip b2 = t1.appendBlip(); ObservableConversationBlip b1mirror = mirror.getRootThread().getFirstBlip(); ObservableConversationThread t1mirror = b1mirror.getReplyThreads().iterator().next(); ObservableConversationBlip b2mirror = t1mirror.getFirstBlip(); mirror.addListener(convListener); // Trigger cascading deletion. b1.delete(); // Timestamp changed events may have also occurred on the blip listeners. // Mockito doesn't support atMost on inOrder verifications, hence we cannot // verify those events then verifyNoMoreInteractions on the blip listeners. // TODO(anorth): verifyNoMoreInteractions when the CWM injects a clock. InOrder order = inOrder(convListener); order.verify(convListener).onBlipDeleted(b2mirror); order.verify(convListener).onThreadDeleted(t1mirror); order.verify(convListener).onBlipDeleted(b1mirror); allowBlipTimestampChanged(convListener); verifyNoMoreInteractions(convListener); }
public void testCompoundEventsFireBottomUp() { ObservableConversation mirror = mirrorConversation(target); // Build tall structure. // rootThread // |- b1 (deleted) // |- t1 // |- b2 ObservableConversationBlip b1 = target.getRootThread().appendBlip(); ObservableConversationThread t1 = b1.addReplyThread(); ObservableConversationBlip b2 = t1.appendBlip(); ObservableConversationBlip b1mirror = mirror.getRootThread().getFirstBlip(); ObservableConversationThread t1mirror = b1mirror.getReplyThreads().iterator().next(); ObservableConversationBlip b2mirror = t1mirror.getFirstBlip(); mirror.addListener(convListener); // Trigger cascading deletion. b1.delete(); // Timestamp changed events may have also occurred on the blip listeners. // Mockito doesn't support atMost on inOrder verifications, hence we cannot // verify those events then verifyNoMoreInteractions on the blip listeners. // TODO(anorth): verifyNoMoreInteractions when the CWM injects a clock. InOrder order = inOrder(convListener); order.verify(convListener).onBlipDeleted(b2mirror); order.verify(convListener).onThreadDeleted(t1mirror); order.verify(convListener).onBlipDeleted(b1mirror); allowBlipTimestampChanged(convListener); verifyNoMoreInteractions(convListener); }
public void testSetAnchorEventsAreFired() { populate(alternate); ObservableConversation.AnchorListener listener = mock(ObservableConversation.AnchorListener.class); target.addListener(listener); Anchor anchor1 = alternate.createAnchor(getFirstBlip(alternate)); // Set anchor from null. target.setAnchor(anchor1); verify(listener).onAnchorChanged(null, anchor1); // Change anchor to different blip. Anchor anchor11 = alternate.createAnchor(alternate.getRootThread().getFirstBlip() .getReplyThreads().iterator().next().getFirstBlip()); target.setAnchor(anchor11); verify(listener).onAnchorChanged(anchor1, anchor11); // Change anchor to different wavelet. ObservableConversation alternate2 = makeConversation(); populate(alternate2); Anchor anchor2 = alternate2.createAnchor(getFirstBlip(alternate2)); target.setAnchor(anchor2); verify(listener).onAnchorChanged(anchor11, anchor2); // Set anchor to null. target.setAnchor(null); verify(listener).onAnchorChanged(anchor2, null); // Remove listener. target.removeListener(listener); target.setAnchor(anchor1); verifyNoMoreInteractions(listener); }
public void testSetAnchorEventsAreFired() { populate(alternate); ObservableConversation.AnchorListener listener = mock(ObservableConversation.AnchorListener.class); target.addListener(listener); Anchor anchor1 = alternate.createAnchor(getFirstBlip(alternate)); // Set anchor from null. target.setAnchor(anchor1); verify(listener).onAnchorChanged(null, anchor1); // Change anchor to different blip. Anchor anchor11 = alternate.createAnchor(alternate.getRootThread().getFirstBlip() .getReplyThreads().iterator().next().getFirstBlip()); target.setAnchor(anchor11); verify(listener).onAnchorChanged(anchor1, anchor11); // Change anchor to different wavelet. ObservableConversation alternate2 = makeConversation(); populate(alternate2); Anchor anchor2 = alternate2.createAnchor(getFirstBlip(alternate2)); target.setAnchor(anchor2); verify(listener).onAnchorChanged(anchor11, anchor2); // Set anchor to null. target.setAnchor(null); verify(listener).onAnchorChanged(anchor2, null); // Remove listener. target.removeListener(listener); target.setAnchor(anchor1); verifyNoMoreInteractions(listener); }
public void testCreateChild() throws Exception { OperationContextImpl context = helper.getContext(); ObservableConversation conversation = context.openConversation(WAVE_ID, WAVELET_ID, ALEX).getRoot(); // Append a random blip to check that we actually make a new child blip conversation.getRootThread().appendBlip(); // Create a child to the rootblip String rootBlipId = ConversationUtil.getRootBlipId(conversation); OperationRequest operation = operationRequest(OperationType.BLIP_CREATE_CHILD, rootBlipId, Parameter.of(ParamsProperty.BLIP_DATA, blipData)); service.execute(operation, context, ALEX); JsonRpcResponse response = context.getResponse(OPERATION_ID); assertFalse(response.isError()); ConversationBlip newBlip = checkAndGetNewBlip(context, conversation, response); Iterator<? extends ObservableConversationThread> it = conversation.getRootThread().getFirstBlip().getReplyThreads().iterator(); assertEquals("New blip should be the first blip in the first reply thread", it.next().getFirstBlip(), newBlip); }
public void testCreateChild() throws Exception { OperationContextImpl context = helper.getContext(); ObservableConversation conversation = context.openConversation(WAVE_ID, WAVELET_ID, ALEX).getRoot(); // Append a random blip to check that we actually make a new child blip conversation.getRootThread().appendBlip(); // Create a child to the rootblip String rootBlipId = ConversationUtil.getRootBlipId(conversation); OperationRequest operation = operationRequest(OperationType.BLIP_CREATE_CHILD, rootBlipId, Parameter.of(ParamsProperty.BLIP_DATA, blipData)); service.execute(operation, context, ALEX); JsonRpcResponse response = context.getResponse(OPERATION_ID); assertFalse(response.isError()); ConversationBlip newBlip = checkAndGetNewBlip(context, conversation, response); Iterator<? extends ObservableConversationThread> it = conversation.getRootThread().getFirstBlip().getReplyThreads().iterator(); assertEquals("New blip should be the first blip in the first reply thread", it.next().getFirstBlip(), newBlip); }