Skip to content

Commit

Permalink
Implemenet storage layer
Browse files Browse the repository at this point in the history
Implementation for an in-memory database used to store tasks.
  • Loading branch information
nikist97 committed Jun 28, 2022
1 parent cda2ff4 commit d491f55
Show file tree
Hide file tree
Showing 2 changed files with 109 additions and 0 deletions.
@@ -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);
}

}
@@ -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());
}
}

0 comments on commit d491f55

Please sign in to comment.