package mireka.transmission.queue; import static org.mockito.Matchers.*; import static org.mockito.Mockito.*; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; import mireka.ExampleMail; import mireka.transmission.Mail; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; @RunWith(MockitoJUnitRunner.class) public class ScheduleFileDirQueueTest { @Mock private FileDirStore mockedStore; @Mock private ScheduledThreadPoolExecutor mockedPool; private ScheduleFileDirQueue queue; private MailName mailName = new MailName(System.currentTimeMillis(), 0); private Mail mail = ExampleMail.simple(); @Before public void initialize() throws QueueStorageException { queue = new ScheduleFileDirQueue(mockedStore, null, mockedPool); when(mockedStore.initializeAndQueryMailNamesOrderedBySchedule()) .thenReturn(new MailName[] { mailName }); when(mockedStore.save(mail)).thenReturn(mailName); } @Test public void testStart() { queue.start(); verify(mockedPool).schedule(any(Runnable.class), anyLong(), any(TimeUnit.class)); } @Test public void testAdd() throws QueueStorageException { mail.scheduleDate = null; queue.add(mail); verify(mockedPool).schedule(any(Runnable.class), anyLong(), any(TimeUnit.class)); verify(mockedStore).save(mail); } }