Пример #1
0
 /**
  * @param string $text
  * @param UserId $assigneeId
  * @param TodoId $todoId
  * @return Todo
  */
 public static function post($text, UserId $assigneeId, TodoId $todoId)
 {
     $self = new self();
     $self->assertText($text);
     $self->recordThat(TodoWasPosted::byUser($assigneeId, $text, $todoId, TodoStatus::open()));
     return $self;
 }
Пример #2
0
 /**
  * @test
  * @return Todo $todo
  */
 public function it_marks_an_open_todo_as_expired()
 {
     $todoId = TodoId::generate();
     $userId = UserId::generate();
     $deadline = TodoDeadline::fromString('yesterday');
     $events = [TodoWasPosted::byUser($userId, 'Do something that will be forgotten', $todoId, TodoStatus::open()), DeadlineWasAddedToTodo::byUserToDate($todoId, $userId, $deadline)];
     $todo = $this->reconstituteAggregateFromHistory(Todo::class, $events);
     $todo->markAsExpired();
     $events = $this->popRecordedEvent($todo);
     $this->assertEquals(1, count($events));
     $this->assertInstanceOf(TodoWasMarkedAsExpired::class, $events[0]);
     $expectedPayload = ['old_status' => 'open', 'new_status' => 'expired'];
     $this->assertEquals($expectedPayload, $events[0]->payload());
     return $todo;
 }