private function UpdateProfile(User $user)
 {
     $user->ChangeEmailPreference(new ReservationApprovedEvent(), $this->page->GetApproved());
     $user->ChangeEmailPreference(new ReservationCreatedEvent(), $this->page->GetCreated());
     $user->ChangeEmailPreference(new ReservationUpdatedEvent(), $this->page->GetUpdated());
     $user->ChangeEmailPreference(new ReservationDeletedEvent(), $this->page->GetDeleted());
     $this->userRepository->Update($user);
 }
 public function testChangesEmailPreferences()
 {
     $id = 123;
     $user = new User();
     $user->WithId($id);
     $emailPreferences = new EmailPreferences();
     $emailPreferences->Add(EventCategory::Reservation, ReservationEvent::Updated);
     $user->WithEmailPreferences($emailPreferences);
     $user->ChangeEmailPreference(new ReservationUpdatedEvent(), false);
     $user->ChangeEmailPreference(new ReservationCreatedEvent(), false);
     $user->ChangeEmailPreference(new ReservationApprovedEvent(), true);
     $repo = new UserRepository();
     $repo->Update($user);
     $addEmailPreferenceCommand = new AddEmailPreferenceCommand($id, EventCategory::Reservation, ReservationEvent::Approved);
     $removeEmailPreferenceCommand = new DeleteEmailPreferenceCommand($id, EventCategory::Reservation, ReservationEvent::Updated);
     $this->assertTrue($this->db->ContainsCommand($addEmailPreferenceCommand));
     $this->assertTrue($this->db->ContainsCommand($removeEmailPreferenceCommand));
 }