getContainer()->get('entityManager'); $contact = $entityManager->createEntity('Contact', [ 'phoneNumber' => '+1', ]); $contact = $entityManager->getEntity('Contact', $contact->getId()); /* @var $group1 PhoneNumberGroup */ $group1 = $contact->getPhoneNumberGroup(); $this->assertEquals(1, $group1->getCount()); $this->assertEquals('+1', $group1->getPrimary()->getNumber()); $group2 = PhoneNumberGroup ::create() ->withAdded( PhoneNumber::create('+2')->invalid() ) ->withAdded( PhoneNumber::create('+1')->optedOut() ); $contact->setValueObject('phoneNumber', $group2); $entityManager->saveEntity($contact); $contact = $entityManager->getEntity('Contact', $contact->getId()); /* @var $group3 PhoneNumberGroup */ $group3 = $contact->getPhoneNumberGroup(); $this->assertEquals(2, $group3->getCount()); $this->assertEquals('+2', $group3->getPrimary()->getNumber()); $this->assertTrue($group3->getPrimary()->isInvalid()); $this->assertTrue($group3->getList()[1]->isOptedOut()); $group4 = PhoneNumberGroup ::create() ->withAdded( PhoneNumber::create('+2')->invalid() ); $contact->setValueObject('phoneNumber', $group4); $entityManager->saveEntity($contact); $contact = $entityManager->getEntity('Contact', $contact->getId()); /* @var $group5 PhoneNumberGroup */ $group5 = $contact->getPhoneNumberGroup(); $this->assertEquals(1, $group5->getCount()); } }