Merge branch 'bugfix/do_not_genrate_new_id_on_update' into 'master'
fix: do not generate a new id on update See merge request ghost/d-webservice-example!2
This commit is contained in:
commit
be59006d64
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 aermicioi.aedi : component, qualifier;
|
||||||
import d_webservice_example.business.todo_service : TodoRepository;
|
import d_webservice_example.business.todo_service : TodoRepository;
|
||||||
|
|
||||||
|
version (unittest)
|
||||||
|
{
|
||||||
|
import fluent.asserts;
|
||||||
|
}
|
||||||
|
|
||||||
@component @qualifier!TodoRepository() class InMemoryTodoRepository : TodoRepository
|
@component @qualifier!TodoRepository() class InMemoryTodoRepository : TodoRepository
|
||||||
{
|
{
|
||||||
import d_webservice_example.model.todo : Todo;
|
import d_webservice_example.model.todo : Todo;
|
||||||
|
@ -15,11 +20,46 @@ private:
|
||||||
public:
|
public:
|
||||||
override Todo save(Todo todo)
|
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;
|
todos[todo.id] = todo;
|
||||||
return 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()
|
override Todo[] findAll()
|
||||||
{
|
{
|
||||||
import std.array : array;
|
import std.array : array;
|
||||||
|
|
|
@ -18,6 +18,14 @@ struct Todo
|
||||||
this.uuid = uuid;
|
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 title;
|
||||||
string content;
|
string content;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue