fix: do not generate a new id on update
This commit is contained in:
parent
2492295216
commit
214ffef353
2 changed files with 49 additions and 1 deletions
|
@ -3,6 +3,11 @@ module d_webservice_example.dataaccess.in_memory_todo_repository;
|
|||
import aermicioi.aedi : component, qualifier;
|
||||
import d_webservice_example.business.todo_service : TodoRepository;
|
||||
|
||||
version (unittest)
|
||||
{
|
||||
import fluent.asserts;
|
||||
}
|
||||
|
||||
@component @qualifier!TodoRepository() class InMemoryTodoRepository : TodoRepository
|
||||
{
|
||||
import d_webservice_example.model.todo : Todo;
|
||||
|
@ -15,11 +20,46 @@ private:
|
|||
public:
|
||||
override Todo save(Todo todo)
|
||||
{
|
||||
todo.id = randomUUID.toString;
|
||||
import std.range.primitives : empty;
|
||||
|
||||
if (todo.id.empty)
|
||||
todo.id = randomUUID.toString;
|
||||
todos[todo.id] = todo;
|
||||
return todo;
|
||||
}
|
||||
|
||||
unittest
|
||||
{
|
||||
// given
|
||||
auto underTest = new InMemoryTodoRepository;
|
||||
auto todo = Todo("some title", "some content",
|
||||
UUID("00000000-0000-0000-0000-000000000001"));
|
||||
|
||||
// when
|
||||
auto savedTodo = underTest.save(todo);
|
||||
|
||||
// then
|
||||
savedTodo.title.should.equal(todo.title);
|
||||
savedTodo.content.should.equal(todo.content);
|
||||
savedTodo.uuid.should.equal(todo.uuid);
|
||||
savedTodo.id.length.should.equal(36);
|
||||
}
|
||||
|
||||
unittest
|
||||
{
|
||||
// given
|
||||
auto underTest = new InMemoryTodoRepository;
|
||||
auto todo = Todo("some title", "some content",
|
||||
UUID("00000000-0000-0000-0000-000000000001"),
|
||||
"00000000-0000-0000-0000-000000000002");
|
||||
|
||||
// when
|
||||
auto savedTodo = underTest.save(todo);
|
||||
|
||||
// then
|
||||
savedTodo.should.equal(todo);
|
||||
}
|
||||
|
||||
override Todo[] findAll()
|
||||
{
|
||||
import std.array : array;
|
||||
|
|
|
@ -18,6 +18,14 @@ struct Todo
|
|||
this.uuid = uuid;
|
||||
}
|
||||
|
||||
this(string title, string content, UUID uuid, string id) nothrow pure @safe @nogc
|
||||
{
|
||||
this.title = title;
|
||||
this.content = content;
|
||||
this.uuid = uuid;
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
string title;
|
||||
string content;
|
||||
|
||||
|
|
Loading…
Reference in a new issue