diff --git a/spec/EricksonReyes/DomainDrivenDesign/Common/Factory/PhoneFactorySpec.php b/spec/EricksonReyes/DomainDrivenDesign/Common/Factory/PhoneFactorySpec.php new file mode 100644 index 0000000..d2b2202 --- /dev/null +++ b/spec/EricksonReyes/DomainDrivenDesign/Common/Factory/PhoneFactorySpec.php @@ -0,0 +1,44 @@ +shouldHaveType(PhoneFactory::class); + } + + + public function it_can_create_basic_phone_numbers() + { + $expectedPhoneNumber = (int)$this->seeder->numberBetween(10000, 9999999); + $this::create($expectedPhoneNumber)->shouldHaveType(PhoneNumber::class); + } + + public function it_can_create_fully_formatted_phone_numbers() + { + $expectedAreaCode = (int)$this->seeder->numberBetween(0, 1); + $expectedPhoneNumber = (int)$this->seeder->numberBetween(10000, 9999999); + $expectedCountryCode = (int)$this->seeder->numberBetween(0, 1); + + $this::create( + $expectedPhoneNumber, + $expectedCountryCode, + $expectedAreaCode + )->shouldHaveType(PhoneNumber::class); + + $this::create( + $expectedPhoneNumber, + $expectedCountryCode, + null + )->shouldHaveType(PhoneNumber::class); + } +} diff --git a/src/EricksonReyes/DomainDrivenDesign/Common/Factory/PhoneFactory.php b/src/EricksonReyes/DomainDrivenDesign/Common/Factory/PhoneFactory.php new file mode 100644 index 0000000..5a1a03c --- /dev/null +++ b/src/EricksonReyes/DomainDrivenDesign/Common/Factory/PhoneFactory.php @@ -0,0 +1,29 @@ + 0 && + $areaCode !== null && $areaCode > 0 + ) { + return PhoneNumber::createWithCountryAndAreaCode( + $countryIso2Code, + $areaCode ?? 0, + $phoneNumber + ); + } + return new PhoneNumber($phoneNumber); + } +}