mirror of https://github.com/tasks/tasks
parent
351e95286f
commit
af99bc45d2
@ -0,0 +1,94 @@
|
||||
package com.todoroo.astrid.alarms;
|
||||
|
||||
import android.support.test.runner.AndroidJUnit4;
|
||||
|
||||
import com.todoroo.astrid.dao.MetadataDao;
|
||||
import com.todoroo.astrid.dao.TaskDao;
|
||||
import com.todoroo.astrid.data.Metadata;
|
||||
import com.todoroo.astrid.data.Task;
|
||||
import com.todoroo.astrid.test.DatabaseTestCase;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.InOrder;
|
||||
import org.tasks.injection.TestComponent;
|
||||
import org.tasks.jobs.Alarm;
|
||||
import org.tasks.jobs.JobQueue;
|
||||
import org.tasks.time.DateTime;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import static com.natpryce.makeiteasy.MakeItEasy.with;
|
||||
import static org.mockito.Mockito.inOrder;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
||||
import static org.tasks.makers.TaskMaker.REMINDER_LAST;
|
||||
import static org.tasks.makers.TaskMaker.newTask;
|
||||
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class AlarmServiceTest extends DatabaseTestCase {
|
||||
|
||||
@Inject MetadataDao metadataDao;
|
||||
@Inject TaskDao taskDao;
|
||||
|
||||
private AlarmService alarmService;
|
||||
private JobQueue jobs;
|
||||
|
||||
@Before
|
||||
public void before() {
|
||||
jobs = mock(JobQueue.class);
|
||||
alarmService = new AlarmService(metadataDao, jobs);
|
||||
}
|
||||
|
||||
@After
|
||||
public void after() {
|
||||
verifyNoMoreInteractions(jobs);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void scheduleAlarm() {
|
||||
Task task = newTask();
|
||||
|
||||
taskDao.persist(task);
|
||||
DateTime alarmTime = new DateTime(2017, 9, 24, 19, 57);
|
||||
|
||||
Metadata alarm = new Metadata();
|
||||
alarm.setTask(task.getId());
|
||||
alarm.setKey(AlarmFields.METADATA_KEY);
|
||||
alarm.setValue(AlarmFields.TYPE, AlarmFields.TYPE_SINGLE);
|
||||
alarm.setValue(AlarmFields.TIME, alarmTime.getMillis());
|
||||
metadataDao.persist(alarm);
|
||||
|
||||
alarmService.scheduleAllAlarms();
|
||||
|
||||
InOrder order = inOrder(jobs);
|
||||
order.verify(jobs).add(new Alarm(alarm));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void ignoreStaleAlarm() {
|
||||
DateTime alarmTime = new DateTime(2017, 9, 24, 19, 57);
|
||||
|
||||
Task task = newTask(with(REMINDER_LAST, alarmTime.endOfMinute()));
|
||||
|
||||
taskDao.persist(task);
|
||||
|
||||
Metadata alarm = new Metadata();
|
||||
alarm.setTask(task.getId());
|
||||
alarm.setKey(AlarmFields.METADATA_KEY);
|
||||
alarm.setValue(AlarmFields.TYPE, AlarmFields.TYPE_SINGLE);
|
||||
alarm.setValue(AlarmFields.TIME, alarmTime.getMillis());
|
||||
metadataDao.persist(alarm);
|
||||
|
||||
alarmService.scheduleAllAlarms();
|
||||
|
||||
verifyNoMoreInteractions(jobs);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void inject(TestComponent component) {
|
||||
component.inject(this);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue