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 issue-10-fxmapcontrol
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