Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Implementation for an in-memory database used to store tasks.
- Loading branch information
Showing
2 changed files
with
109 additions
and
0 deletions.
There are no files selected for viewing
37 changes: 37 additions & 0 deletions
37
src/main/java/taskmanagement/storage/InMemoryTaskManagementRepository.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
package taskmanagement.storage; | ||
|
||
import taskmanagement.service.Task; | ||
import taskmanagement.service.TaskManagementRepository; | ||
|
||
import java.util.HashMap; | ||
import java.util.List; | ||
import java.util.Map; | ||
import java.util.Optional; | ||
import java.util.stream.Collectors; | ||
|
||
public class InMemoryTaskManagementRepository implements TaskManagementRepository { | ||
|
||
Map<String, Task> tasks = new HashMap<>(); | ||
|
||
@Override | ||
public void save(Task task) { | ||
tasks.put(task.getIdentifier(), task); | ||
} | ||
|
||
@Override | ||
public List<Task> getAll() { | ||
return tasks.values().stream() | ||
.collect(Collectors.toUnmodifiableList()); | ||
} | ||
|
||
@Override | ||
public Optional<Task> get(String taskID) { | ||
return Optional.ofNullable(tasks.get(taskID)); | ||
} | ||
|
||
@Override | ||
public void delete(String taskID) { | ||
tasks.remove(taskID); | ||
} | ||
|
||
} |
72 changes: 72 additions & 0 deletions
72
src/test/java/taskmanagement/storage/InMemoryTaskManagementRepositoryTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
package taskmanagement.storage; | ||
|
||
|
||
import org.junit.Test; | ||
import taskmanagement.service.Task; | ||
|
||
import java.util.HashSet; | ||
import java.util.List; | ||
import java.util.Optional; | ||
import java.util.Set; | ||
|
||
import static org.junit.Assert.assertEquals; | ||
import static org.junit.Assert.assertFalse; | ||
import static org.junit.Assert.assertSame; | ||
import static org.junit.Assert.assertTrue; | ||
|
||
public class InMemoryTaskManagementRepositoryTest { | ||
|
||
@Test | ||
public void testSaveAndGet() { | ||
InMemoryTaskManagementRepository repository = new InMemoryTaskManagementRepository(); | ||
|
||
Task task = Task.builder("test-title", "test-description").build(); | ||
|
||
repository.save(task); | ||
|
||
Optional<Task> retrievedTask = repository.get(task.getIdentifier()); | ||
|
||
assertTrue(retrievedTask.isPresent()); | ||
assertSame(task, retrievedTask.get()); | ||
} | ||
|
||
@Test | ||
public void testSaveAndGetAll() { | ||
InMemoryTaskManagementRepository repository = new InMemoryTaskManagementRepository(); | ||
|
||
assertTrue(repository.getAll().isEmpty()); | ||
|
||
Task task = Task.builder("test-title", "test-description").build(); | ||
Task anotherTask = Task.builder("another-test-title", "another-test-description").build(); | ||
|
||
repository.save(task); | ||
repository.save(anotherTask); | ||
|
||
List<Task> retrievedTasks = repository.getAll(); | ||
|
||
Set<Task> expectedTasks = new HashSet<>(); | ||
expectedTasks.add(task); | ||
expectedTasks.add(anotherTask); | ||
|
||
assertEquals(new HashSet<>(retrievedTasks), expectedTasks); | ||
} | ||
|
||
@Test | ||
public void testSaveDeleteAndGet() { | ||
InMemoryTaskManagementRepository repository = new InMemoryTaskManagementRepository(); | ||
|
||
Task task = Task.builder("test-title", "test-description").build(); | ||
|
||
repository.save(task); | ||
|
||
Optional<Task> retrievedTask = repository.get(task.getIdentifier()); | ||
|
||
assertTrue(retrievedTask.isPresent()); | ||
assertSame(task, retrievedTask.get()); | ||
|
||
repository.delete(task.getIdentifier()); | ||
|
||
retrievedTask = repository.get(task.getIdentifier()); | ||
assertFalse(retrievedTask.isPresent()); | ||
} | ||
} |