package com.aconex.scrutineer;
import com.google.common.base.Function;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.io.PrintStream;
import static org.mockito.Matchers.anyLong;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
public class PrintStreamOutputVersionStreamVerifierListenerTest {
private final StringIdAndVersion idAndVersion = new StringIdAndVersion("1", 10);
@Mock
private PrintStream printStream;
@Mock
private Function<Long, Object> versionFormatter;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
}
@Test()
public void testOnMissingInPrimaryStream() throws Exception {
PrintStreamOutputVersionStreamVerifierListener streamVerifierListener = new PrintStreamOutputVersionStreamVerifierListener(printStream);
streamVerifierListener.onMissingInPrimaryStream(idAndVersion);
verify(printStream).println("NOTINPRIMARY\t1\t10");
verifyNoMoreInteractions(printStream);
}
@Test
public void testOnMissingInSecondaryStream() throws Exception {
PrintStreamOutputVersionStreamVerifierListener streamVerifierListener = new PrintStreamOutputVersionStreamVerifierListener(printStream);
streamVerifierListener.onMissingInSecondaryStream(idAndVersion);
verify(printStream).println("NOTINSECONDARY\t1\t10");
verifyNoMoreInteractions(printStream);
}
@Test
public void testOnVersionMisMatch() throws Exception {
PrintStreamOutputVersionStreamVerifierListener streamVerifierListener = new PrintStreamOutputVersionStreamVerifierListener(printStream);
streamVerifierListener.onVersionMisMatch(idAndVersion, new StringIdAndVersion("1", 9));
verify(printStream).println("MISMATCH\t1\t10\tsecondaryVersion=9");
verifyNoMoreInteractions(printStream);
}
@Test
public void testVersionIsFormattedForMismatch() {
when(versionFormatter.apply(anyLong())).thenReturn("9 Bottles of Beer on the Wall");
PrintStreamOutputVersionStreamVerifierListener streamVerifierListener = new PrintStreamOutputVersionStreamVerifierListener(printStream, versionFormatter);
streamVerifierListener.onVersionMisMatch(idAndVersion, new StringIdAndVersion("1", 9));
verify(printStream).println("MISMATCH\t1\t9 Bottles of Beer on the Wall\tsecondaryVersion=9 Bottles of Beer on the Wall");
}
@Test
public void testVersionIsFormattedForNotInPrimary() {
when(versionFormatter.apply(anyLong())).thenReturn("10 Bottles of Beer on the Wall");
PrintStreamOutputVersionStreamVerifierListener streamVerifierListener = new PrintStreamOutputVersionStreamVerifierListener(printStream, versionFormatter);
streamVerifierListener.onMissingInPrimaryStream(idAndVersion);
verify(printStream).println("NOTINPRIMARY\t1\t10 Bottles of Beer on the Wall");
}
@Test
public void testVersionIsFormattedForNotInSecondary() {
when(versionFormatter.apply(anyLong())).thenReturn("10 Bottles of Beer on the Wall");
PrintStreamOutputVersionStreamVerifierListener streamVerifierListener = new PrintStreamOutputVersionStreamVerifierListener(printStream, versionFormatter);
streamVerifierListener.onMissingInSecondaryStream(idAndVersion);
verify(printStream).println("NOTINSECONDARY\t1\t10 Bottles of Beer on the Wall");
}
}