/** * A breadth-first iterator over blips in a conversation. Deleted blips are * skipped, but non-deleted descendant blips are included. */ public static Iterable<ConversationBlip> breadthFirst(Conversation conversation) { return breadthFirst(conversation.getRootThread()); }
/** * Checks that a conversation is accessible by examining some state. */ protected static void assertConversationAccessible(Conversation conversation) { conversation.getAnchor(); assertThreadAccessible(conversation.getRootThread()); }
public void testDynamicFreshBlipsAreSuppressed() { Conversation conv = wave.createRoot(); target.install(); // Instrument first. MockDoc doc = mock(MockDoc.class); when(doc.isCompleteDiff()).thenReturn(true, false); when(documents.get(any(ConversationBlip.class))).thenReturn(doc); conv.getRootThread().appendBlip(); verify(doc).startDiffSuppression(); verify(doc, never()).stopDiffSuppression(); }
public void testFreshBlipsAreSuppressedOnStartup() { Conversation conv = wave.createRoot(); ConversationBlip root = conv.getRootThread().appendBlip(); MockDoc fresh = mock(MockDoc.class); when(fresh.isCompleteDiff()).thenReturn(true, false); when(documents.get(root)).thenReturn(fresh); target.install(); verify(fresh).startDiffSuppression(); verify(fresh, never()).stopDiffSuppression(); }
public void testReadBlipsNotSuppressedOnStartup() { Conversation conv = wave.createRoot(); ConversationBlip root = conv.getRootThread().appendBlip(); MockDoc seen = mock(MockDoc.class); when(seen.isCompleteDiff()).thenReturn(false); when(documents.get(root)).thenReturn(seen); target.install(); verify(seen, never()).startDiffSuppression(); verify(seen, never()).stopDiffSuppression(); }
public void testResolveContext() throws Exception { eventMessages.requireBlip( conversation.getRootThread().getFirstBlip().getId(), Lists.newArrayList(Context.CHILDREN)); ContextResolver.resolveContext( eventMessages, wavelet, conversation, new EventDataConverterV21()); Set<String> blips = eventMessages.getBlipData().keySet(); assertEquals(2, blips.size()); for (ConversationBlip blip : conversation.getRootThread().getBlips()) { assertTrue(blips.contains(blip.getId())); } }
/** * Appends a blip to the root thread, and adds a reply to that blip with one * blip. */ protected static void populate(Conversation conv) { ConversationBlip blip = conv.getRootThread().appendBlip(); blip.addReplyThread().appendBlip(); }
/** * Asserts that a new conversation model built on top of the target * conversation's substrate matches the structure of that. */ private void assertMirrorConversationEquivalent() { Conversation copy = mirrorConversation(target); assertThreadsEquivalent(target.getRootThread(), copy.getRootThread()); }
public void testResolveRootContext() throws Exception { ConversationBlip newBlip = conversation.getRootThread().appendBlip(); eventMessages.requireBlip(newBlip.getId(), Lists.newArrayList(Context.ROOT)); ContextResolver.resolveContext( eventMessages, wavelet, conversation, new EventDataConverterV21()); Set<String> blips = eventMessages.getBlipData().keySet(); assertEquals(2, blips.size()); assertTrue(blips.contains(conversation.getRootThread().getFirstBlip().getId())); assertTrue(blips.contains(newBlip.getId())); }
public void testResolveRootContext() throws Exception { ConversationBlip newBlip = conversation.getRootThread().appendBlip(); eventMessages.requireBlip(newBlip.getId(), Lists.newArrayList(Context.ROOT)); ContextResolver.resolveContext( eventMessages, wavelet, conversation, new EventDataConverterV21()); Set<String> blips = eventMessages.getBlipData().keySet(); assertEquals(2, blips.size()); assertTrue(blips.contains(conversation.getRootThread().getFirstBlip().getId())); assertTrue(blips.contains(newBlip.getId())); }
public void testToBlipDataHandlesBlipWithEmptyDocument() throws Exception { Blips.init(); Conversation conversation = makeConversation(); Wavelet wavelet = mock(Wavelet.class); when(wavelet.getWaveId()).thenReturn(WAVE_ID); when(wavelet.getId()).thenReturn(WAVELET_ID); EventDataConverterV21 converter = new EventDataConverterV21(); assertEquals("", converter.toBlipData(conversation.getRootThread().getFirstBlip(), wavelet, new EventMessageBundle(null, null)).getContent()); }
public void testToBlipDataHandlesBlipWithEmptyDocument() throws Exception { Blips.init(); Conversation conversation = makeConversation(); Wavelet wavelet = mock(Wavelet.class); when(wavelet.getWaveId()).thenReturn(WAVE_ID); when(wavelet.getId()).thenReturn(WAVELET_ID); EventDataConverterV21 converter = new EventDataConverterV21(); assertEquals("", converter.toBlipData(conversation.getRootThread().getFirstBlip(), wavelet, new EventMessageBundle(null, null)).getContent()); }
private Conversation makeConversation() { IdGenerator idGenerator = FakeIdGenerator.create(); ObservableWaveView waveView = BasicFactories.fakeWaveViewBuilder().with(idGenerator).build(); ConversationView convView = WaveBasedConversationView.create(waveView, idGenerator); Conversation conversation = convView.createRoot(); conversation.getRootThread().appendBlip(); conversation.getRootThread().appendBlip(); return conversation; } }
public void appendBlipWithText(String text) { ConversationBlip blip = conversation.getRootThread().appendBlip(); LineContainers.appendToLastLine(blip.getContent(), XmlStringBuilder.createText(text)); TitleHelper.maybeFindAndSetImplicitTitle(blip.getContent()); }
public void appendBlipWithText(String text) { ConversationBlip blip = conversation.getRootThread().appendBlip(); LineContainers.appendToLastLine(blip.getContent(), XmlStringBuilder.createText(text)); TitleHelper.maybeFindAndSetImplicitTitle(blip.getContent()); }
public void testFindBlipNextSibling() { Conversation conversation = makeConversation(); ConversationBlip first = conversation.getRootThread().getFirstBlip(); ConversationBlip second = conversation.getRootThread().appendBlip(); ConversationBlip reply = first.addReplyThread().appendBlip(); ConversationBlip secondReply = reply.getThread().appendBlip(); assertSame(second, EventDataConverterV21.findNextSibling(first)); assertNull(EventDataConverterV21.findNextSibling(second)); assertSame(secondReply, EventDataConverterV21.findNextSibling(reply)); assertNull(EventDataConverterV21.findNextSibling(secondReply)); }
public void testFindBlipPreviousSibling() { Conversation conversation = makeConversation(); ConversationBlip first = conversation.getRootThread().getFirstBlip(); ConversationBlip second = conversation.getRootThread().appendBlip(); ConversationBlip reply = first.addReplyThread().appendBlip(); ConversationBlip secondReply = reply.getThread().appendBlip(); assertNull(EventDataConverterV21.findPreviousSibling(first)); assertSame(first, EventDataConverterV21.findPreviousSibling(second)); assertNull(EventDataConverterV21.findPreviousSibling(reply)); assertSame(reply, EventDataConverterV21.findPreviousSibling(secondReply)); }
public void testFindBlipParent() { Conversation conversation = makeConversation(); ConversationBlip first = conversation.getRootThread().getFirstBlip(); ConversationBlip second = conversation.getRootThread().appendBlip(); ConversationBlip reply = first.addReplyThread().appendBlip(); ConversationBlip secondReply = reply.getThread().appendBlip(); EventDataConverterV21 converter = new EventDataConverterV21(); assertNull(converter.findBlipParent(first)); assertSame(first, converter.findBlipParent(second)); assertSame(first, converter.findBlipParent(reply)); assertSame(reply, converter.findBlipParent(secondReply)); }
private static Conversation makeConversation() { IdGenerator idGenerator = FakeIdGenerator.create(); ObservableWaveView waveView = BasicFactories.fakeWaveViewBuilder().with(idGenerator).build(); ConversationView convView = WaveBasedConversationView.create(waveView, idGenerator); Conversation conversation = convView.createRoot(); // Force empty document. conversation.getRootThread().appendBlip(new DocInitializationBuilder().build()); return conversation; } }
private static Conversation makeConversation() { IdGenerator idGenerator = FakeIdGenerator.create(); ObservableWaveView waveView = BasicFactories.fakeWaveViewBuilder().with(idGenerator).build(); ConversationView convView = WaveBasedConversationView.create(waveView, idGenerator); Conversation conversation = convView.createRoot(); // Force empty document. conversation.getRootThread().appendBlip(new DocInitializationBuilder().build()); return conversation; } }