/** * @param DeadlineWasAddedToTodo $event * @return void */ protected function whenDeadlineWasAddedToTodo(DeadlineWasAddedToTodo $event) { $this->deadline = $event->deadline(); }
/** * @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; }
/** * @param DeadlineWasAddedToTodo $event * @return void */ public function onDeadlineWasAddedToTodo(DeadlineWasAddedToTodo $event) { $this->connection->update(Table::TODO, ['deadline' => $event->deadline()->toString()], ['id' => $event->todoId()->toString()]); }