Skip to content
Snippets Groups Projects
Commit 44ee0ad2 authored by Hallvard Trætteberg's avatar Hallvard Trætteberg
Browse files

Added todoSettings to json format for TodoModel

parent b21a9d62
Branches
No related tags found
No related merge requests found
...@@ -11,12 +11,15 @@ import com.fasterxml.jackson.databind.node.ObjectNode; ...@@ -11,12 +11,15 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
import java.io.IOException; import java.io.IOException;
import todolist.core.AbstractTodoList; import todolist.core.AbstractTodoList;
import todolist.core.TodoModel; import todolist.core.TodoModel;
import todolist.core.TodoSettings;
class TodoModelDeserializer extends JsonDeserializer<TodoModel> { class TodoModelDeserializer extends JsonDeserializer<TodoModel> {
private TodoListDeserializer todoListDeserializer = new TodoListDeserializer(); private TodoListDeserializer todoListDeserializer = new TodoListDeserializer();
private TodoSettingsDeserializer todoSettingsDeserializer = new TodoSettingsDeserializer();
/* /*
* format: { "lists": [ ... ] } * format: { "lists": [ ... ], "settings": ... }
*/ */
@Override @Override
...@@ -38,6 +41,10 @@ class TodoModelDeserializer extends JsonDeserializer<TodoModel> { ...@@ -38,6 +41,10 @@ class TodoModelDeserializer extends JsonDeserializer<TodoModel> {
} }
} }
} }
if (objectNode.has("settings")) {
TodoSettings settings = todoSettingsDeserializer.deserialize(objectNode.get("settings"));
model.setSettings(settings);
}
return model; return model;
} }
return null; return null;
......
...@@ -42,6 +42,8 @@ class TodoModelSerializer extends JsonSerializer<TodoModel> { ...@@ -42,6 +42,8 @@ class TodoModelSerializer extends JsonSerializer<TodoModel> {
} }
} }
jsonGen.writeEndArray(); jsonGen.writeEndArray();
jsonGen.writeFieldName("settings");
jsonGen.writeObject(model.getSettings());
jsonGen.writeEndObject(); jsonGen.writeEndObject();
} }
} }
\ No newline at end of file
...@@ -28,7 +28,7 @@ public class TodoModuleTest { ...@@ -28,7 +28,7 @@ public class TodoModuleTest {
mapper = TodoPersistence.createObjectMapper(); mapper = TodoPersistence.createObjectMapper();
} }
private final static String todoListWithTwoItems = """ final static String todoListWithTwoItemsAndSettings = """
{ {
"lists": [ "lists": [
{ {
...@@ -45,12 +45,14 @@ public class TodoModuleTest { ...@@ -45,12 +45,14 @@ public class TodoModuleTest {
} }
] ]
} }
] ],
"settings" : {
"todoItemsSortOrder" : "CHECKED_UNCHECKED"
}
} }
"""; """;
@Test static TodoModel createTodoListWithTwoItemsAndSettings() {
public void testSerializers() {
TodoModel model = new TodoModel(); TodoModel model = new TodoModel();
TodoList list = new TodoList("todo"); TodoList list = new TodoList("todo");
model.addTodoList(list); model.addTodoList(list);
...@@ -62,8 +64,15 @@ public class TodoModuleTest { ...@@ -62,8 +64,15 @@ public class TodoModuleTest {
item2.setDeadline(LocalDateTime.parse("2020-10-01T14:53:11")); item2.setDeadline(LocalDateTime.parse("2020-10-01T14:53:11"));
list.addTodoItem(item1); list.addTodoItem(item1);
list.addTodoItem(item2); list.addTodoItem(item2);
model.getSettings().setTodoItemsSortOrder(TodoItemsSortOrder.CHECKED_UNCHECKED);
return model;
}
@Test
public void testSerializers() {
TodoModel model = createTodoListWithTwoItemsAndSettings();
try { try {
assertEquals(todoListWithTwoItems.replaceAll("\\s+", ""), mapper.writeValueAsString(model)); assertEquals(todoListWithTwoItemsAndSettings.replaceAll("\\s+", ""), mapper.writeValueAsString(model));
} catch (JsonProcessingException e) { } catch (JsonProcessingException e) {
fail(e.getMessage()); fail(e.getMessage());
} }
...@@ -82,7 +91,7 @@ public class TodoModuleTest { ...@@ -82,7 +91,7 @@ public class TodoModuleTest {
@Test @Test
public void testDeserializers() { public void testDeserializers() {
try { try {
TodoModel model = mapper.readValue(todoListWithTwoItems, TodoModel.class); TodoModel model = mapper.readValue(todoListWithTwoItemsAndSettings, TodoModel.class);
assertTrue(model.iterator().hasNext()); assertTrue(model.iterator().hasNext());
AbstractTodoList list = model.iterator().next(); AbstractTodoList list = model.iterator().next();
assertEquals("todo", list.getName()); assertEquals("todo", list.getName());
...@@ -92,6 +101,7 @@ public class TodoModuleTest { ...@@ -92,6 +101,7 @@ public class TodoModuleTest {
assertTrue(it.hasNext()); assertTrue(it.hasNext());
checkTodoItem(it.next(), "item2", true, LocalDateTime.parse("2020-10-01T14:53:11")); checkTodoItem(it.next(), "item2", true, LocalDateTime.parse("2020-10-01T14:53:11"));
assertFalse(it.hasNext()); assertFalse(it.hasNext());
assertEquals(TodoItemsSortOrder.CHECKED_UNCHECKED, model.getSettings().getTodoItemsSortOrder());
} catch (JsonProcessingException e) { } catch (JsonProcessingException e) {
fail(e.getMessage()); fail(e.getMessage());
} }
......
...@@ -14,6 +14,7 @@ import todolist.core.AbstractTodoList; ...@@ -14,6 +14,7 @@ import todolist.core.AbstractTodoList;
import todolist.core.TodoItem; import todolist.core.TodoItem;
import todolist.core.TodoList; import todolist.core.TodoList;
import todolist.core.TodoModel; import todolist.core.TodoModel;
import todolist.core.TodoSettings.TodoItemsSortOrder;
public class TodoPersistenceTest { public class TodoPersistenceTest {
...@@ -32,6 +33,7 @@ public class TodoPersistenceTest { ...@@ -32,6 +33,7 @@ public class TodoPersistenceTest {
item2.setChecked(true); item2.setChecked(true);
item2.setDeadline(LocalDateTime.parse("2020-10-01T14:53:11")); item2.setDeadline(LocalDateTime.parse("2020-10-01T14:53:11"));
list.addTodoItem(item2); list.addTodoItem(item2);
model.getSettings().setTodoItemsSortOrder(TodoItemsSortOrder.CHECKED_UNCHECKED);
try { try {
StringWriter writer = new StringWriter(); StringWriter writer = new StringWriter();
todoPersistence.writeTodoModel(model, writer); todoPersistence.writeTodoModel(model, writer);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment