public void testMarkBlipIsIdempotent() {
// Use real wave-model view.
WaveletBasedConversation c = setUpWithWaveModel();
Wavelet w = c.getWavelet();
ObservableConversationThread t = c.getRootThread();
ConversationBlip b = t.appendBlip();
supplement.markAsRead(b);
int blipReadVersion = substrate.getLastReadBlipVersion(w.getId(), b.getId());
int waveletVersion = (int) w.getVersion();
assertEquals(waveletVersion, blipReadVersion);
// Do something to increase wavelet version without increasing blip last-modified version.
t.appendBlip();
assert w.getVersion() > waveletVersion : "test wave model did not increase version";
// Test that marking blip as read again has no effect.
supplement.markAsRead(b);
long newBlipReadVersion = substrate.getLastReadBlipVersion(w.getId(), b.getId());
assertEquals(blipReadVersion, (int) newBlipReadVersion);
}