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:
Johannes Loher 2018-12-19 01:47:09 +01:00
commit be59006d64
2 changed files with 49 additions and 1 deletions

View file

@ -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)
{ {
import std.range.primitives : empty;
if (todo.id.empty)
todo.id = randomUUID.toString; 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;

View file

@ -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;