mirror of https://github.com/iSoron/uhabits.git
parent
6d676fcb78
commit
80a35ce894
@ -0,0 +1,129 @@
|
||||
package org.isoron.uhabits.core.commands;
|
||||
|
||||
import org.isoron.uhabits.core.*;
|
||||
import org.isoron.uhabits.core.models.*;
|
||||
import org.junit.*;
|
||||
import org.junit.rules.*;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.equalTo;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
|
||||
public class ResetHabitsCommandTest extends BaseUnitTest
|
||||
{
|
||||
private ResetHabitsCommand command;
|
||||
private ResetHabitsCommand command2;
|
||||
private HabitList habitList2;
|
||||
|
||||
|
||||
private LinkedList<Habit> selected;
|
||||
|
||||
@Rule
|
||||
public ExpectedException thrown = ExpectedException.none();
|
||||
|
||||
@Override
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
super.setUp();
|
||||
selected = new LinkedList<>();
|
||||
|
||||
Long unixTime1 = 5000000L;
|
||||
Long unixTimeExtra = 8000000L;
|
||||
|
||||
// Habits that should be reset
|
||||
for (int i = 0; i < 3; i++) {
|
||||
Habit habit = fixtures.createShortHabit();
|
||||
habitList.add(habit);
|
||||
selected.add(habit);
|
||||
RepetitionList repetitionList = habit.getRepetitions();
|
||||
Timestamp ts = new Timestamp(unixTime1);
|
||||
unixTime1 += 5000;
|
||||
Repetition rep = new Repetition(ts, 1000);
|
||||
repetitionList.add(rep);
|
||||
repetitionList.toggle(ts);
|
||||
}
|
||||
|
||||
// Extra habit that should not be reset
|
||||
Habit extraHabit = fixtures.createShortHabit();
|
||||
extraHabit.setName("extra");
|
||||
habitList.add(extraHabit);
|
||||
RepetitionList repetitionList = extraHabit.getRepetitions();
|
||||
Timestamp ts = new Timestamp(unixTimeExtra);
|
||||
Repetition rep = new Repetition(ts, 1000);
|
||||
repetitionList.add(rep);
|
||||
repetitionList.toggle(ts);
|
||||
|
||||
command = new ResetHabitsCommand(habitList, selected);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
public void testExecute()
|
||||
{
|
||||
for (Habit h : habitList) {
|
||||
RepetitionList repetitionList = h.getRepetitions();
|
||||
assertThat(repetitionList.getTotalCount(), equalTo(6L));
|
||||
}
|
||||
|
||||
command.execute();
|
||||
|
||||
for (Habit h : habitList) {
|
||||
RepetitionList repetitionList = h.getRepetitions();
|
||||
|
||||
if (h.getName() != "extra")
|
||||
assertThat(repetitionList.getTotalCount(), equalTo(0L));
|
||||
else if (h.getName() == "extra")
|
||||
assertThat(repetitionList.getTotalCount(), equalTo(6L));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExecuteResetAll()
|
||||
{
|
||||
Long unixTime1 = 5000000L;
|
||||
|
||||
// Habits that should be reset
|
||||
for (int i = 0; i < 5; i++) {
|
||||
Habit habit = fixtures.createShortHabit();
|
||||
habitList.add(habit);
|
||||
selected.add(habit);
|
||||
RepetitionList repetitionList = habit.getRepetitions();
|
||||
Timestamp ts = new Timestamp(unixTime1);
|
||||
unixTime1 += 5000;
|
||||
Repetition rep = new Repetition(ts, 1000);
|
||||
repetitionList.add(rep);
|
||||
repetitionList.toggle(ts);
|
||||
}
|
||||
command = new ResetHabitsCommand(habitList);
|
||||
|
||||
for (Habit h : habitList) {
|
||||
RepetitionList repetitionList = h.getRepetitions();
|
||||
assertThat(repetitionList.getTotalCount(), equalTo(6L));
|
||||
}
|
||||
|
||||
command.execute();
|
||||
|
||||
for (Habit h : habitList) {
|
||||
RepetitionList repetitionList = h.getRepetitions();
|
||||
assertThat(repetitionList.getTotalCount(), equalTo(0L));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUndo()
|
||||
{
|
||||
thrown.expect(UnsupportedOperationException.class);
|
||||
command.undo();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRecord()
|
||||
{
|
||||
ResetHabitsCommand.Record rec = (ResetHabitsCommand.Record) command.toRecord();
|
||||
ResetHabitsCommand other = rec.toCommand(habitList);
|
||||
assertThat(other.getId(), equalTo(command.getId()));
|
||||
assertThat(other.selected, equalTo(command.selected));
|
||||
}
|
||||
}
|
Loading…
Reference in new issue