Skip to content

Commit e3d66f0

Browse files
committed
added unit test. small perf improvement
1 parent 03c7a9b commit e3d66f0

File tree

2 files changed

+44
-2
lines changed

2 files changed

+44
-2
lines changed

src/main/java/de/doubleslash/keeptime/controller/Controller.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -257,8 +257,11 @@ public long calcTodaysWorkSeconds() {
257257
for (final Work work : model.getPastWorkItems()) {
258258
final Project project = work.getProject();
259259
for (final Project p : model.getAllProjects()) {
260-
if (p.getId() == project.getId() && p.isWork()) {
261-
workItems.add(work);
260+
if (p.getId() == project.getId()) {
261+
if (p.isWork()) {
262+
workItems.add(work);
263+
}
264+
break;
262265
}
263266
}
264267
}

src/test/java/de/doubleslash/keeptime/controller/ControllerTest.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,15 @@
1717
package de.doubleslash.keeptime.controller;
1818

1919
import static org.hamcrest.Matchers.is;
20+
import static org.junit.Assert.assertEquals;
2021
import static org.junit.Assert.assertThat;
2122

23+
import java.time.LocalDate;
2224
import java.time.LocalDateTime;
25+
import java.util.ArrayList;
2326
import java.util.Arrays;
2427
import java.util.List;
28+
import java.util.concurrent.TimeUnit;
2529

2630
import org.hamcrest.Matchers;
2731
import org.junit.Before;
@@ -284,4 +288,39 @@ public void changeProjectOtherDayWithTimeTest() {
284288
assertThat(work.getStartTime(), is(firstProjectPlusOneHour));
285289
}
286290

291+
@Test
292+
public void shouldCalculateSecondsCorrectlyWhenWorkItemsAreGiven() {
293+
final Project workProject1 = new Project("workProject1", Color.GREEN, true, 0);
294+
final Project workProject2 = new Project("workProject2", Color.RED, true, 1);
295+
final Project nonworkProject1 = new Project("nonworkProject1", Color.RED, false, 2);
296+
final Project nonworkProject2 = new Project("nonworkProject2", Color.RED, false, 3);
297+
298+
final LocalDate localDateNow = LocalDate.now();
299+
final LocalDateTime localDateTimeMorning = LocalDateTime.now().withHour(4);
300+
301+
final List<Work> workItems = new ArrayList<>(4);
302+
workItems.add(new Work(localDateNow, localDateTimeMorning.plusHours(0), localDateTimeMorning.plusHours(1),
303+
workProject1, ""));
304+
workItems.add(new Work(localDateNow, localDateTimeMorning.plusHours(1), localDateTimeMorning.plusHours(2),
305+
workProject2, ""));
306+
workItems.add(new Work(localDateNow, localDateTimeMorning.plusHours(2), localDateTimeMorning.plusHours(3),
307+
nonworkProject1, ""));
308+
workItems.add(new Work(localDateNow, localDateTimeMorning.plusHours(3), localDateTimeMorning.plusHours(4),
309+
nonworkProject2, ""));
310+
311+
model.getAllProjects().addAll(workProject1, workProject2, nonworkProject1, nonworkProject2);
312+
model.getPastWorkItems().addAll(workItems);
313+
314+
final long totalSeconds = testee.calcSeconds(workItems);
315+
assertEquals("Seconds were not calculated correctly.", TimeUnit.HOURS.toSeconds(4), totalSeconds);
316+
317+
final long todaysSeconds = testee.calcTodaysSeconds();
318+
assertEquals("Todays seconds were not calulated correctly.", TimeUnit.HOURS.toSeconds(4), todaysSeconds);
319+
320+
final long todaysWorkSeconds = testee.calcTodaysWorkSeconds();
321+
// assertEquals("Todays work seconds were not calculated correctly.",TimeUnit.HOURS.toSeconds(2),
322+
// todaysWorkSeconds);
323+
// TODO does not work, as id within project cannot be set
324+
325+
}
287326
}

0 commit comments

Comments
 (0)