package pl.llp.aircasting.tracking;
import pl.llp.aircasting.InjectedTestRunner;
import pl.llp.aircasting.event.session.NoteCreatedEvent;
import pl.llp.aircasting.model.Note;
import pl.llp.aircasting.model.Session;
import pl.llp.aircasting.storage.DatabaseTaskQueue;
import com.google.common.eventbus.EventBus;
import com.google.inject.Inject;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
/**
* Created by ags on 28/04/2013 at 22:21
*/
@RunWith(InjectedTestRunner.class)
public class ActualNoteTrackerTest
{
@Inject DatabaseTaskQueue queue;
ActualNoteTracker tracker;
private EventBus eventBus;
@Before
public void setUp() throws Exception
{
eventBus = mock(EventBus.class);
tracker = new ActualNoteTracker(eventBus, queue);
}
@Test
public void shouldNotifyListeners()
{
Note note = new Note();
tracker.addNote(new Session(), note);
NoteCreatedEvent expected = new NoteCreatedEvent(note);
verify(eventBus, atLeastOnce()).post(Mockito.eq(expected));
}
}